Ich habe zwei Shapefiles, Point und Polyline. Ich versuche, meine Polylinienebene mit der Punktdaten-ID (systemID) zu füllen, an der die Linien dort beginnen, wo sie enden. z.B. Erstellen Sie zwei Spalten (von und bis). Den Leitungen ist bereits die Durchflussrichtung zugeordnet. Ich verwende ArcHydro-Tools, aber Arcpy ist auch in Ordnung.
In ArcHydro habe ich versucht, Attributwerkzeuge> Von / Bis-Knoten für Linien generieren zu verwenden, aber es werden Werte für An und Von erstellt, die nicht aus meinen Punktdaten stammen. Meine andere Alternative bestand darin, Feature to Vertices zu verwenden und das Ergebnis mit meiner Punktdatentabelle zu verknüpfen, um die System-ID zu erhalten. Aber dann müsste ich auch die Polylinienebene aktualisieren. Ich bin sicher, es gibt einen einfacheren Weg, dies zu tun.
Hinweis: Nicht alle Linien haben Punkte an den Eckpunkten. Leere Werte sind für sie in Ordnung.
quelle
Antworten:
Manchmal ist es besser, keine Out-of-the-Box-Lösung zu verwenden. Deshalb schlage ich vor
Gehe zu 2, aber benutze den letzten Punkt, um TO nodeID zuzuweisen
quelle
Ich habe vor ein paar Monaten genau das Gleiche getan. Ich habe arcpy verwendet, aber das Skript ist viel zu lang, um hier veröffentlicht zu werden, sodass ich Ihnen einen Überblick darüber geben werde, was ich getan habe.
Ich habe eine räumliche Verknüpfung verwendet, um festzustellen, welche Punkte / Knoten innerhalb eines bestimmten Linienmerkmals liegen.
Da die räumliche Verbindung die Flussrichtung nicht berücksichtigt, habe ich arcpy verwendet, um festzustellen, welcher der Startpunkt und welcher der Endpunkt war. Ich konnte dies tun, indem ich die Funktion arcpy description verwendete, um Koordinateninformationen für die Start- / Endscheitelpunkte des Linien-Features zu extrahieren und diese mit den Koordinatenwerten der verbundenen Punkte zu vergleichen.
Nachdem ich herausgefunden hatte, welche der An / Von-Punkte welche waren, verwendete ich die Funktion setValue, um die An / Von-Felder im ursprünglichen Polylinien-Dataset zu füllen.
Natürlich steckt noch ein bisschen mehr dahinter, aber ich habe die wichtigsten Punkte skizziert.
quelle
Ich war von @FelixIP inspiriert, wollte aber eine Lösung ohne Joins oder die Erstellung zusätzlicher Dateien schreiben, da mein Netzwerk mit 400K + Pipes und 500K + Knoten ziemlich groß ist.
Der geometrische Netzwerkaufbau erzwingt, dass X, Y der Knoten und der Rohrenden zusammenfallen. Sie können auf diese Positionen mit den Form-Token in bogenförmigen Cursorn zugreifen und sie abgleichen. Die Form-Token für Linien geben ein Array der Scheitelpunkte in der Reihenfolge zurück, in der sie gezeichnet wurden. In meinem Netzwerk ist die Ziehreihenfolge der Rohre stark von der Qualitätssicherung abhängig, da wir hiermit die Durchflussrichtungen festlegen. Der erste Scheitelpunkt ist also der Anfang der Pipe, und der letzte Scheitelpunkt ist das Ende der Pipe.
Referenz: ASSETID = ID der Pipe, UNITID = Knoten-ID am Anfang der Pipe, UNITID2 = Knoten-ID am Ende der Pipe.
quelle