Finden von „Endstädten“ auf der Karte

13

Ich möchte Dörfer / Städte finden, die enden . Das heißt: Ich brauche diese Dörfer, die auf einer Strecke von X km mit maximal einem Dorf verbunden sind .

Ich frage mich nur, wie dieser Algorithmus heißt (ich denke, jemand hat etwas Ähnliches erstellt).

Gibt es ein Tool dafür? Wie heißt dieses Konzept?

Z.B

 City ------------ Village 1 ------- Village 2 ------ Village 3 - - - [ Mountain]
                    \                 \                                \
                     Village 4         |                                Road
                     |                  \                            in mountains
                     Village 5----------Village6---------Village7 - - - - -  

Solange die Straße in den Bergen ist länger als XKM, Village 3und Village 7würde von mir in Betracht gezogen wird Terminal , weil sie zu einem Dorf (V2 bzw. V6) verbunden sind.

Andernfalls möchte ich eine mit den offenen Daten erstellen, die wir haben.


Was ich versucht habe :

Herunterladen der OSM-Daten für mein Land (Rumänien) und Importieren der Dörfer und Städte in die Datenbank. Mit den Geolokalisierungsfunktionen aus der Datenbank kann ich die Dörfer finden, die nicht mehr als X Dörfer im Umkreis von R km haben.

Dies ist jedoch keine Lösung für meinen Fall, da sich in meinen Fällen ein Dorf auf der anderen Seite des Berges befindet, wie im obigen Beispiel, aber es gibt keinen (oder keinen) guten Weg dorthin.

Ionică Bizău
quelle
3
Das Konzept ist Konnektivität und wird in der Graphentheorie als die Anzahl der "Kanten" eines "Knotens" dargestellt. Sie werden nach Knoten mit einer Kante suchen, nachdem Sie Kanten über Ihrem Gewichtsschwellenwert herausgefiltert haben. Eine tatsächliche Lösung hängt davon ab, mit welchen Tools, Sprachen oder Software Sie arbeiten.
RoperMaps
@RoperMaps Ich habe noch keine Tools eingerichtet, frage aber allgemein (und schließlich, ob jemand so etwas schon einmal gebaut hat). Ich würde dies erweitern und eine Punktzahl angeben (wie viele Wege kürzer als X dieses Knotens ist). Je höher die Punktzahl, desto stärker ist die Verbindung (und desto weniger Anschluss ). Wenn ich es bauen würde, würde ich wahrscheinlich einige Diagramme mit Node.js analysieren, mich aber nur fragen, ob es schon jemand anderes getan hat. : D
Ionică Bizău
@RoperMaps Ich denke, ich kann OSM dafür verwenden, aber ich finde es extrem schwierig (z. B. gibt es Möglichkeiten, Knoten zu verbinden, aber diese Knoten sind nur Punkte, die keine Städte darstellen). Ich kann einen Algorithmus schreiben, um die Blätter in einem Diagramm zu finden, oder etwas, das für meinen Fall etwas erweiterter ist, aber ich bin nicht sicher, wie ich die OSM-Daten dafür verwenden soll (oder gibt es einen einfacheren Weg als OSM?).
Ionică Bizău
Welche Software benutzt du? Arbeiten Sie in realen Entfernungen oder in Vogelflugentfernungen?
Radouxju
@radouxju Mein erster funktionierender Prototyp waren Vogelflugdistanzen (Radius basierend auf Koordinaten) - wieder ein Anfang, aber das ist nicht das, was ich will. Ich habe mein Skript in Node.js geschrieben und MongoDB verwendet. Ich bevorzuge echte Entfernungen: Wenn es z. B. zwei Dörfer gibt, die durch einen Hügel getrennt sind und keine Straßen über dem Hügel haben, ist die Entfernung zwischen ihnen die kürzeste Straße, die sie verbindet.
Ionică Bizău

Antworten:

2

Es scheint mir, dass Sie die Liniengeometrie schrittweise durchgehen müssen, um die Koordinaten für jeden End- / Endpunktpuffer abzurufen, für den Sie die Liniengeometrie auswählen (von Ihren Straßen fc), wenn Sie nur ein Feature als End- / Endpunkt zurückgeben, wenn mehr als man ist es nicht und durchschleifen. Hoffe das macht Sinn ...

user17260
quelle
Na und wie geht das?
Ionică Bizău
Möglicherweise können Sie dies mit Modelbuilder tun und nach Python exportieren. ArcObjects ist eine andere, aber kompliziertere Route. Hatten Sie schon einmal Modelbuilder verwendet?
user17260
Eine räumliche Auswahl mit der Option "Berührungen" kann Ihnen den Einstieg erleichtern. Kann den ursprünglichen Auswahlsatz einschränken, wenn Sie den Auswahlsatz auf diejenigen umkehren, die sich nicht berühren.
user17260
Ich habe Modelbuilder nicht verwendet. Ich brauche eine schrittweise Antwort, da es meine erste Interaktion mit OSM-Daten ist. : D Es ist sehr schwer für mich, Tutorials darüber zu finden.
Ionică Bizău
Wow, das ist eine große Bitte. Haben Sie Zugriff auf die ArcInfo-Lizenz von ArcMap?
user17260
2

Möglicherweise können Sie dies mit QGIS und einer Software wie Graphab oder Conefor erreichen, mit der zunächst die Konnektivität von Landschaften berechnet werden soll . Zum Beispiel :

  • Importieren Sie Ihre OSM-Daten per Drag & Drop oder mithilfe des OpenStreetMap-Plugins in QGIS.
  • Speichern Sie Ihre Daten als Form (Rechtsklick)
  • Verwenden Sie das Conefor-Plugin, um die Knoten- und Verbindungsdateien zu generieren, wie hier erläutert
  • Berechnen Sie die Wichtigkeit jedes Knotens und Links mit Conefor. Ein "Endknoten" ist für die Konnektivität nicht wichtig. Ich denke, Sie könnten die BC (IIC) - Metrik verwenden, weil sie "die Anzahl der kürzesten Pfade zwischen allen Patchpaaren, die durch einen bestimmten Knoten (...) verlaufen, [und] die Länge (Anzahl der Links) der" berücksichtigt Pfade zwischen Patches, an denen ein bestimmter Knoten beteiligt ist " (siehe hier )

Ich konnte das nicht testen - leider habe ich momentan nicht genug Zeit. Aber ich denke, dass es funktionieren könnte, wenn Sie ein bisschen an der Sache arbeiten möchten. Zum Beispiel müssen Sie wahrscheinlich die Verknüpfungen zwischen zwei Knoten auf jeder Seite eines Hindernisses (Berg usw.) entfernen, entweder manuell (wenn sie nicht zu viele sind) oder mithilfe von Geoverarbeitungsfunktionen und einer Form, die Ihre Hindernisse enthält .

Mefimefi
quelle
Danke dafür! Werde es bald versuchen. [und] die Länge (Anzahl der Links) - gibt mir das die Entfernung in Kilometern (wenn nicht, wie kann ich das bekommen?)?
Ionică Bizău
Um die Entfernung zwischen Punkten zu ermitteln, müssen Sie keine andere Software als QGIS verwenden. Sehen Sie hier und hier zum Beispiel. Die verwendete Entfernungseinheit hängt vom Layerkoordinatensystem ab.
Mefimefi
Wenn Sie weitere Informationen zu Tools wünschen, die sich auf die Vernetzung von Landschaften konzentrieren, sollten Sie einen Blick darauf werfen
Vernetzung
Ich fand QGIS ein bisschen fehlerhaft (zumindest auf meinem MacBook), aber der letzte Link ist nützlich. Überprüft auch ihre Antworten. Vielen Dank!
Ionică Bizău