Für mein Projekt kann es sein, dass ich Karten aus einer beliebigen Quelle erhalte. Für den von mir erstellten C ++ - Algorithmus muss der Algorithmus unbedingt wissen, wo sich Straßenkreuzungen (Knoten, an denen sich mehr als zwei Straßensegmente treffen) befinden. Außerdem gibt es in vielen Karten, die ich bekomme, Straßen, die über- und unterschritten werden (dh Straßen sind nicht richtig verbunden). Eine Möglichkeit, das Problem zu beheben, besteht darin, das Straßennetz mit Autocad zu "säubern". Die Fragen, die ich habe, sind:
- Gibt es eine effiziente Möglichkeit (irgendeine Software, die das kann?), Meine Karte in einem GML-Format abzurufen, das Informationen zu Straßenkreuzungen in der Karte enthält? (Vielleicht haben Sie ein GML-Tag, das besagt, dass ein bestimmter Knoten eine Junction ist.)
- Gibt es eine andere Möglichkeit, das Straßennetz zu "säubern"?
Die Kollegen haben FME vorgeschlagen, aber dazu müssen Skripte geschrieben werden, und wir sind uns nicht sicher, ob das Skript flexibel genug ist, um alle Karten zu berücksichtigen. Die einzige andere Möglichkeit, Kreuzungen zu erkennen, ist die Verwendung von Brute Force, um herauszufinden, welche Straßensegmente gemeinsame Knoten haben. Würde ArcGIS helfen? (habe es nicht benutzt, aber davon gehört) Ich bin sicher, es sollte einen besseren Weg geben ...
Antworten:
Wenn Sie die Straßen in einer räumlichen Form haben, wie z. B. einem Shapefile, können Sie sie in PostGIS laden und diese mithilfe einer SQL-Abfrage automatisch finden. Ich habe das schon einmal gemacht - die SQL-Anweisung wurde entwickelt, um für jede Straße diejenigen zu finden, die sich geografisch schneiden, und für jede Kreuzung einen Knotenpunkt zu erstellen.
Ich werde versuchen, dies später zu bereinigen, aber hier ist der grundlegende Ablauf, den Sie nehmen können ...
Mit den ST_ * -Funktionen funktioniert dies in PostGIS
Das Folgende sind nur Schnipsel, da ich keine Zeit zum Beenden habe. Vielleicht kann jemand sie bearbeiten, bevor ich wieder hierher komme ...
quelle
Mithilfe von Puffern können Sie Polylinien auf erstaunliche Weise analysieren. Dies ist normalerweise ineffizient - Puffer erzeugen viele zusätzliche Eckpunkte - aber (a) es ist eine Technik, die in vielen GIS (vektor- oder rasterbasiert) verfügbar ist, und (b) es kann manchmal Informationen erzeugen, die ansonsten schwer zu bekommen sind.
In diesem Fall hinterlässt das Puffern der Straße um einen kleinen Betrag und das anschließende Puffern des Negativs um den gleichen Betrag kleine "Inseln" um alle Kurven und um alle Kreuzungen. Dies ist leicht geometrisch zu beweisen.
Hier ist ein Beispiel für einen 10 m langen Polylinienpuffer (grau) und einen -10 m langen Puffer (hellrot) auf einer 650 m breiten Karte:
Schneide nun die ursprüngliche Polylinienebene mit diesen Inselpolygonen, füge die Segmente nach Inselkennung zusammen und zähle die Teile:
Die hellgelben Segmente bezeichnen die Stücke mit hoher Anzahl und die dunklen cyanfarbenen Segmente bezeichnen die Stücke mit niedriger Anzahl. Auf diese Weise haben wir (a) alle Biegungen und Kreuzungen (einschließlich Selbstkreuzungen) und Nahkreuzungen (siehe ganz links, wo sich die beiden Segmente nicht ganz treffen) gefunden und (b) die Biegungen von den Kreuzungen unterschieden. Wir können die Fast-Junctions finden, indem wir die Inseln auswählen, die zwei oder mehr verbundene Segmente enthalten: Die Biegungen enthalten nur verbundene Segmente.
Aufgrund der Puffersymmetrie sind die Schwerpunkte der Schnittinseln die Schnittpunkte.
Ein schöner Aspekt dieser Art der Analyse ist, dass es egal ist, wie die zugrunde liegende Polylinie dargestellt wird: Es kann sich um ein einzelnes Feature handeln, es kann sich um ein Feature für jedes Liniensegment handeln oder um etwas dazwischen.
quelle
Ja, das können Sie sicher mit FME. Es gibt viele "Transformatoren", die für die Bereinigung, Schnittmengen und Topologie zuständig sind. In diesem Fall würde ich den TopologyBuilder- Transformator ausprobieren .
Alle Skripte werden in einer grafischen Umgebung erstellt, daher ist dies sehr einfach.
Sie können jederzeit eine Testversion von www.safe.com erhalten
(Offenlegung: Mark Ireland, aka FME Evangelist, Safe Software Inc.)
quelle
Das GRASS GIS verfügt über sehr effiziente Tools zum Reinigen von Polygonen nach Ihren Wünschen. Schauen Sie sich hierzu die folgenden Informationen an: http://grass.fbk.eu/grass62/manuals/html62_user/v.clean.html
quelle
Arcgis Network Analyst, den Sie mit einer kostenlosen Testversion erhalten, erledigt dies in weniger als 10 Sekunden und mit nur wenigen Klicks.
quelle
Der Vorgang kann in ArcGIS mit dem Netzwerkanalysten ausgeführt werden.
In ArcGIS gibt es auch eine andere Möglichkeit: Sie können die folgenden Schritte ausführen: "Arctoolbox" → "Datenverwaltungstools" → "Features" → "Feature-Stützpunkte zu Punkten". Dort können Sie tun, was Sie benötigen.
quelle