Wie kann man eine Linienschicht (Straßennetz) durch Punkte verfolgen?


8

Ich habe ein Straßennetz (lila), Punktdateien (grün) und einen Anfangspunkt (gelb).

Ich möchte die Punktedateien basierend auf dem Straßennetz verfolgen. Stellen Sie sich die Punkte als Telefonmasten vor, aber ich möchte eine Karte mit Telefonleitungen (Line Shapefile). Es gibt ein Nummerierungsschema für die "Telefonmasten", aber es ist nicht großartig, und in diesem Fall würde ich genauso gut annehmen, dass sie nicht nummeriert sind.

Hat jemand eine Lösung? Eine, die ziemlich gut aussieht, besteht darin, nur die Punkte zu puffern und dann das Straßennetz aus den Puffern zu entfernen. Aber ich möchte etwas vollständigeres. Es muss automatisiert werden, da es 12.000 der "Telefonmasten" gibt.

Geben Sie hier die Bildbeschreibung ein


1
Wie würde sich die von Ihnen gesuchte Lösung von der einfachen Auswahl der Straßenmerkmale unterscheiden, die nahe genug an einem Punkt liegen? Was genau meinst du mit "vollständiger"?
whuber

Nun, das Straßensegment kann sich über den Punkt 1000 Fuß erstrecken. Ich habe complete verwendet, weil das Netzwerk beim Abschneiden von Puffern abgehackt war. Was ich hätte sagen sollen, war genauer.
Thad

1
Du hast recht, du willst nicht aus Puffern schneiden! Es hört sich so an, als ob Sie die Straßensegmente, auf denen die Masten liegen könnten, irgendwie zurückziehen möchten, damit diese Segmente nicht zu weit über die Mastenstrecken hinausragen. Aber wie würden Sie eine Lücke auf lange Sicht von zwei unterschiedlichen Läufen unterscheiden? Können Sie hierfür ein Kriterium angeben?
whuber

Ich glaube nicht, dass die Lücke ein Problem sein wird. Die schwarzen Linien stehen für Mini-Service-Bereiche, die sich innerhalb des Bereichs befinden. Nun, der Grund, abgesehen davon, dass es nur zur Visualisierung zur Verfügung steht, ist die Planung und möglicherweise das Hinzufügen von mehr Informationen in den Liniendateien, als in den Punktdateien gespeichert werden könnten (z. B. Durchmesser).
Thad

Antworten:


9

Es gibt viele Möglichkeiten, damit umzugehen, aber einige sind allgemein und effektiv. Um dies zu verstehen, führen wir einige der Probleme auf, die möglicherweise behandelt werden müssen:

  • Es kann Lücken zwischen den Polen geben, die so groß sind, dass der Algorithmus die Lücken als tatsächliche Unterbrechungen im Übertragungssystem betrachtet.

  • Es kann einige kurze Straßensegmente geben, die für die Verbindung der Straßen zu einem Netz von entscheidender Bedeutung sind und dennoch keine Masten in der Nähe haben. Diese Segmente würden nicht durch die Nähe zu Polen ausgewählt, sondern sind ein notwendiger Bestandteil der Lösung.

  • Es kann Masten geben, die vom zentralen Punkt aus nicht über die Straße erreichbar sind. Diese Pole können Teile anderer Übertragungsnetze sein, die von anderen zentralen Punkten stammen.

Ich gehe auch davon aus, dass es, da Sie bereits ein Polyliniennetz (die Straßen) haben, vorteilhaft wäre, es auszunutzen, anstatt die Polpunkte mit einer völlig neuen Polylinie zu verbinden, die wahrscheinlich nicht sehr gut parallel zu den Straßen verläuft.

Diese Überlegungen legen nahe, dass die Inhaltsstoffe einer guten Lösung einige wichtige Schritte umfassen würden:

  1. Berechnen Sie die Straßenentfernungen vom Mittelpunkt zu allen Polen.

  2. Identifizieren Sie die Pole mit lokal maximalen Entfernungen entlang ihres jeweiligen Straßensegments : Das heißt, keiner ihrer Nachbarn entlang desselben Segments hat größere Entfernungen.

  3. Bilden Sie die kürzesten Wege zurück von diesen lokalen Maxima zum Mittelpunkt.

Die Vereinigung dieser kürzesten Wege würde das Übertragungsnetz aufspüren. (Schritt 2 ist zwar nicht wirklich notwendig, würde jedoch die in Schritt 3 erforderliche Berechnung erheblich reduzieren.)

Die Schritte 1 und 3 können mithilfe einer Netzwerkdarstellung (in Network Analyst) oder einer Rasterdarstellung (in Spatial Analyst mithilfe einer CostDistance- oder FlowAccumulation-Berechnung) ausgeführt werden. Schritt 2 ist eine einfache Datenbankzusammenfassung: Nach Schritt 1 hat jeder Pol sein Straßensegment und seine Entfernung als Attribute. Finden Sie die maximale Entfernung nach Straßensegment und wählen Sie die Pole aus, die diese maximalen Entfernungen erreichen.

Es gibt einige mögliche Problemsituationen:

  1. Einige Masten befinden sich möglicherweise nicht in der Nähe von Straßen. Die Problemstellung enthält nichts, was uns sagt, was dagegen zu tun ist. Sie können automatisch mit Rasterberechnungen behandelt werden (ein geeignetes Kostenraster weist Nicht-Straßenzellen hohe Impedanzen zu, jedoch keine unendlichen Impedanzen, sodass isolierte Pole mit den nächstgelegenen Straßen verbunden werden können, aber leider nicht miteinander). Zumindest können Sie nach Erhalt der Lösung in Schritt 3 alle Pole auswählen, die sich nicht in diesem Netzwerk befinden, und überlegen, wie sie behandelt werden sollen (möglicherweise durch manuelles Erstellen von Verbindungen für sie oder möglicherweise mit einer euklidischen Minimum-Spanning-Tree-Lösung).

  2. Wenn einige Straßensegmente Schleifen bilden, sollten Sie Schritt 2 überspringen, da sonst Teile dieser Schleifen verloren gehen können.

  3. Die Straßenpolylinien bilden möglicherweise kein verbundenes Netzwerk. Es kann winzige Lücken zwischen Straßensegmenten geben (manchmal nur Millimeter groß), die ein Netzwerk aufteilen, das visuell verbunden erscheint. Dies ist ein Problem mit der Datenqualität, das jede Lösung plagen würde, mit Ausnahme einiger rasterbasierter Probleme.


An einer Stelle erwähnte ich nebenbei FlowAccumulation . Dies mag die Menschen überraschen: Was hat dieses Problem mit Bächen und Wassereinzugsgebieten zu tun? Starren Sie eine Weile auf das Bild. Stellen Sie sich den Ursprungspunkt als Tiefpunkt in einer Landschaft und die Straßen mit Telefonmasten als Spuren von Bächen vor, die zu diesem Tiefpunkt fließen. Wenn wir eine Oberfläche schaffen können, für die die Straßen wirklich sinddie Bäche, dann können wir ein wenig "Regen" an der Stelle jedes Pols fallen lassen und bergab fließen. Die Punkte, die nass werden, sind die Lösung, die wir suchen: Sie verbinden die Pole effizient zu einem Netzwerk, das den Straßen folgt. Eine geeignete CostDistance-Berechnung - mit einer niedrigen Impedanz ungleich Null entlang der Straßen und einer extrem hohen, aber nicht unendlichen Impedanz außerhalb der Straßen - erzeugt genau diese Art von Oberfläche. Eine andere Möglichkeit, diese Oberfläche zu erstellen, ist das euklidische Entfernungsraster für die Straßen. Das ist perfekt, außer dass die Straßen eben sind. Sie müssen gekippt werden; Fügen Sie dazu dem euklidischen Entfernungsraster ein extrem kleines Vielfaches der Entfernungen entlang der Straßen hinzu. (Die Straßenentfernung erfordert immer noch eine CostDistance-Berechnung, die teuer ist, diesmal jedoch nur für Straßenzellen durchgeführt werden muss. eher als alle Gitterzellen, die es um Größenordnungen beschleunigen. Dies ermöglicht es uns, ein extrem hochauflösendes Gitter zu verwenden, wenn wir möchten, wodurch mögliche Diskretisierungsfehler bei groben Gittern vermieden werden.)


7

Grundsätzlich würde ich nach Whubers Ansatz Folgendes versuchen:

  1. Teilen Sie die Straße am (gelben) Startpunkt.
  2. Fügen Sie den Straßen drei Felder hinzu: FROMDIST, TODIST und PARENTROAD_ID. FROMDIST speichert den Abstand vom Startpunkt für den From-Knoten der Polylinie, ebenfalls für TODIST. PARENTROAD_ID speichert die ROAD_ID der Straße, die näher am Startpunkt liegt.
  3. Erstellen Sie einen Minimum Spanning Tree, der aus Straßenabschnitten besteht, und berechnen Sie dann die Werte FROMDIST, TODIST und PARENTROAD_ID entsprechend.
  4. Fügen Sie der Punkte-Feature-Class drei Felder hinzu: ROAD_ID, DISTANCE und PARENTPOINT_ID.
  5. Suchen Sie für jeden Punkt das nächstgelegene Straßenmerkmal und interpolieren Sie dann einen DISTANCE-Wert basierend auf FROMDIST und TODIST der Polylinie zusammen mit dem Abstand entlang der Polylinie, der über ICurve.QueryPointandDistance berechnet wurde .
  6. Berechnen Sie für jeden Punkt die PARENTPOINT_ID, die die ID des nächsten Punkts darstellt, der näher am Startpunkt liegt.
  7. Erstellen Sie für jeden Punkt ein Liniensegment zwischen sich und dem Punkt, auf den PARENTPOINT_ID verweist. Schreiben Sie diese Polylinie in eine Ausgabe-Feature-Class.

3

Es klingt für mich so, als ob Sie wirklich nach einem geometrischen Netzwerk in einer Geodatabase suchen .

Was wäre, wenn Sie ein geometrisches Netzwerk erstellen würden, in dem Ihre Straßen als "Fernleitungen" dienen würden, und dann einfach "Zuleitungen" hinzufügen würden, die senkrecht von Ihren Straßen zu Ihren Punkten verlaufen. Dann sollten Sie in der Lage sein, " die Flussrichtung festzulegen und anzuzeigen, Analyseeinstellungen zu ändern, Flags und Barrieren zu Analysen hinzuzufügen und verschiedene Ablaufverfolgungsaufgaben auszuführen " (siehe Abschnitt "Utility Network Analyst-Symbolleiste"). Weitere Informationen zu anderen Analysetypen, die Sie mit einem geometrischen Netzwerk durchführen können, finden Sie unter " Informationen zur Verfolgung in geometrischen Netzwerken ".

Dies würde ein wenig Setup erfordern, aber durch Erstellen eines Automatisierungsprozesses zum Verbinden der Punkte mit dem Netzwerk sollte die Aktualisierung relativ schnell und einfach sein, wenn neue Punkte zum Netzwerk hinzugefügt werden.

HINWEIS : " Obwohl geometrische Netzwerke in ArcInfo und ArcEditor sowohl erstellt als auch bearbeitet werden können, sind sie in ArcView schreibgeschützt ." ( Aus "Erstellen eines geometrischen Netzwerks aus vorhandenen einfachen Feature-Classes" )


1

Als Vorspeise (nicht die Komplettlösung).
Wir müssen wahrscheinlich das Datenformat, die Version und die Lizenzstufe Ihres Arcgis kennen.

Was ich sehe, ist, das Straßennetz als lineares Referenzierungssystem zu nutzen und dann die Pole in der richtigen Reihenfolge neu zu nummerieren .
Dann sollten Sie in der Lage sein, eines von mehreren Werkzeugen zu verwenden (ich bin sicher, dass die Antwort eines anderen dies klarer definiert), um Polylinien aus den Polen zu erstellen.
Hier ist das Arcgis 10- Tutorial für die lineare Referenzierung


Datenformat - Shapefiles? habe arcinfo 10. Habe auch einen Netzwerkanalysten, aber nur auf arc9.3 (Testversion). Interessant werde ich über lineare Referenzierung lesen.
Thad
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.