Abrufen von Start- und Endpunkten für jede Linie in einem Linien-Shapefile in ArcGIS Desktop oder QGIS?


15

Ich habe ein Vektor- (Polylinien-) Shapefile und muss die Start- und Endpunkte (Knoten) jeder Linie abrufen und mit diesen Punkten ein Shapefile erstellen. Dann muss ich den Start- und Endpunkt für jede Linie basierend auf der Punkt-ID zur Attributtabelle der Polylinie hinzufügen.

Wie kann ich das auf einfache Weise in ArcGIS Desktop oder QGIS tun?


2
Wenn Sie in ArcGIS über eine erweiterte Lizenz verfügen, können Sie das Tool "Datenverwaltungs-Toolbox" -> "Feature-Toolset" -> "Stützpunkte zu Punkten" mit der Option "Beide Enden" verwenden. Alle Attribute der Linie bleiben erhalten. Sie müssen Ihrer ursprünglichen Linien-Feature-Class jedoch ein Feld hinzufügen und die Feature-ID in Ihrer Linie berechnen, damit dieser Wert in den Punkten erhalten bleibt. Wenn Ihre Zeilen ein anderes eindeutiges Wertefeld enthalten, können Sie die FID nach dem Ausführen des Tools verbinden und berechnen. Die letzte Option besteht darin, eine räumliche Verknüpfung mit der Option "Eins zu vielen" durchzuführen und Kopien mit schlechten Attributen zu entfernen.
Richard Fairhurst

Beantwortet das deine Frage? "Wie rufe ich Start- und Endpunktkoordinaten mit Python / arcpy ab?" gis.stackexchange.com/q/31684/8104
Aaron

Ich habe einen ähnlichen Ansatz ausprobiert, bin dabei aber verloren gegangen. Ich versuche es nochmal. Das Beste ist, ein Makro zu erstellen, das all diese Aufgaben erfüllt, sodass jeder das gleiche Verfahren später ausführen kann. Prost!
user51651

@ RichardFairhurst-Methode, das sollte wahrscheinlich auch als Antwort vorgeschlagen werden. So habe ich es historisch gemacht
bwp8nt

Antworten:


8

Das ist ein Einzeiler für GDAL. Dieser Befehl erstellt aus den Startknoten ein Shapefile mit ausgewählten Attributen:

ogr2ogr -f "ESRI Shapefile" -dialect sqlite output.shp -sql "select ST_StartPoint(geometry), attribute_1, attribute_2, attribute_3 from input" input.shp

Verwenden Sie ST_EndPoint für Endpunkte.


Vielen Dank! Damit ist die Aufgabe wahrscheinlich erledigt, aber ich suchte nach etwas Einfacherem (visuellem), damit andere Leute ohne Programmierkenntnisse die Aufgabe ausführen können.
user51651

Wo schreiben Sie diesen Befehl?
blue_chip

Zur Kommandozeile. Verwenden Sie unter Linux die normale Shell. Verwenden Sie unter Windows das Befehlsfenster, achten Sie jedoch darauf, dass Ihre Umgebung über die richtigen Pfade verfügt. Die Osgeo4w-Shell erledigt das automatisch.
user30184


6

QGIS-Lösung: Es ist möglich, Anfangs- und Endknoten (Koordinaten) einer Linienvektordatei zu extrahieren, indem einfach xat und yat im Feldrechner mit den entsprechenden Indizes 0 (Anfang) und -1 (Ende) verwendet werden.

xat(0)    
yat(0)
xat(-1)
yat(-1)

5

Für eine ArcGIS-Lösung habe ich ein Geoverarbeitungswerkzeug erstellt, mit dem Punkte auf Linien erstellt werden.

Sie können es herunterladen und den Code hier anzeigen: Punkte auf Linien erstellen

Für den Typ müssen Sie START / END POINTS auswählen. Dadurch wird eine neue Punkt-Feature-Class erstellt, die die Start- und Endpunkte für jede Polylinie enthält.

Die Ausgabe-Point-Feature-Class verfügt auch über ein Feld namens LineOID, das die OID der Polylinie aufzeichnet, aus der sie erstellt wurde. Auf diese Weise können Sie Ihre Attributdaten wieder zusammenfügen.

Hier ist ein Screenshot, wie Sie die Parameter einstellen würden:

Bildbeschreibung hier eingeben


Das ist großartig, Ian! Ich lade es herunter und teste es und gebe dir so schnell wie möglich Feedback. Ich denke, dieses Tool wird nützlich für das sein, was ich brauche, und wird dazu beitragen, den Prozess besser zu automatisieren! Danke!
user51651

Hallo Ian, Idk, warum, aber ich kann Ihr Tool nicht in ArcGIS 10.0 oder 10.1 zum Laufen bringen ... Ich habe es zur Toolbox hinzugefügt, aber es gibt kein Mittagessen ... = /
user51651

@ user51651 Erhalten Sie eine Fehlermeldung? Es wird nicht mit 10.0 funktionieren, aber es sollte mit 10.1 und höher funktionieren. Wenn Sie in das Menü "Geoverarbeitung" und dann in "Ergebnisse" wechseln. Gibt es dort irgendwelche Nachrichten?
ianbroad

3

Zum Hinzufügen der Koordinaten der Endpunkte in der Attributtabelle können Sie in ArcGIS den Feldrechner verwenden (es müssen keine Geometrien erstellt werden). Klicken Sie auf den Feldnamen, den Feldrechner und verwenden Sie dann die Python-Syntax mit den folgenden einzelnen Zeilen (Beispiel mit der X-Koordinate):

!shape.firstPoint.X!

!shape.lastPoint.X!

Beachten Sie, dass sich alles in den !! befindet


Dies ist eine wirklich gute Antwort. Ich wusste nicht, dass dies möglich ist. Ein Schnappschuss davon in Field Calculator kann weniger vertrauten Personen bei der Aufgabe helfen. Ich nehme an, Sie könnten dies auch mit M-Werten tun?
bwp8nt

2

Verwenden Sie in QGIS das Werkzeug Bestimmte Scheitelpunkte extrahieren . Setzen Sie Vertex-Indizes auf 0 , um Startpunkte und -1 , um Endpunkte zu erhalten, oder auf 0, -1 , um beide zu erhalten.

QGIS Extract Specific Vertices

Beachten Sie die Beschreibung:

Der erste Scheitelpunkt entspricht einem Index von 0, der zweite Scheitelpunkt hat einen Index von 1 usw. Negative Indizes können verwendet werden, um Scheitelpunkte am Ende der Geometrie zu finden, z. B. entspricht ein Index von -1 dem letzten Scheitelpunkt. 2 entspricht dem vorletzten Eckpunkt usw.


1

Wenn Sie in ArcGIS über eine erweiterte Lizenz verfügen, können Sie das Tool "Datenverwaltungs-Toolbox" -> "Feature-Toolset" -> "Stützpunkte zu Punkten" mit der Option "Beide Enden" verwenden. Alle Attribute der Linie bleiben erhalten. Sie müssen Ihrer ursprünglichen Linien-Feature-Class jedoch ein Feld hinzufügen und die Feature-ID in Ihrer Linie berechnen, damit dieser Wert in den Punkten erhalten bleibt. Wenn Sie ein anderes eindeutiges Wertefeld in Ihren Zeilen haben, können Sie die FID nach dem Ausführen des Tools verbinden und berechnen. Die letzte Option besteht darin, eine räumliche Verknüpfung mit der Option "Eins zu vielen" durchzuführen und Kopien mit schlechten Attributen zu entfernen.

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.