Wie konvertiere ich ein Linien-Shapefile in eine CSV mit Knoten und Links?

12

Gibt es eine Möglichkeit, ein lineares Shapefile in eine CSV-Datei im folgenden Format zu konvertieren:

Node_1, Node_2, attribute_1, ...., attribute_x
     1       2       "hello"        567845.334

Ich habe mir GDAL / OGR2OGR und PostGIS angesehen und glaube auch nicht, dass die Daten in das gewünschte Format konvertiert werden.

Es macht mir nichts aus, ein Skript dafür zu schreiben, wenn ich in die richtige Richtung geführt werde.

dassouki
quelle
In Ihrem Beispiel sind Node_1, Node_2 die tatsächlichen Koordinaten Ihres Features, oder? Ich meine, aus Ihrem Beispiel würde ich tatsächlich annehmen, dass Sie die Topologie aus dem Shapefile exportieren möchten. Wie in Node_1 ist Ihr FNODE, Node_2 ist Ihr TNODE und die Geometrie wird nur einmal gespeichert. Wenn ja, ist die Antwort sehr unterschiedlich und Sie benötigen etwas anderes als OGR, um die Topologie zu erstellen.
Ragi Yaser Burhum
@rburhum Ich möchte meine Tabelle in einem klassischen Netzwerkalgorithmus implementieren. Das Format ist normalerweise Knoten 1 bis Knoten 2 mit Kosten von X
dassouki

Antworten:

8

Die in OGR (OGR2OGR) enthaltenen Hilfsprogramme tun dies nicht direkt, aber es ist sehr einfach, OGR zu verwenden, um dies zu erreichen.

Sie müssten ein Skript / Programm in einer der von OGR unterstützten Sprachen schreiben. Sie können einfach das Shapefile öffnen, jedes Feature lesen und die Punkte + Daten in einem CSV-Format ausschreiben.

Der Beispiel-C ++ - Code im Wiki zeigt tatsächlich fast jeden dafür erforderlichen OGR-API-Aufruf.

Reed Copsey
quelle
Danke für die schnelle Antwort. Ich schaue auf gdal.org/ogr/ogr%5Fapitut.html erstes Python-Beispiel, das von einer SHP in eine CSV-Datei ausgegeben wird . Das Beispiel wird für eine Punktebene erstellt. Gibt es einen signifikanten Unterschied, um sie für eine Linienebene zu konvertieren? Was wäre das Format des Knotennamens? Wird es eine Nummer sein? Kann ich es mit einer anderen Punktebene verknüpfen, die alle Knotennamen enthält?
Dassouki
In einer Zeile sind die Features ogr.wkbLine anstelle von ogr.wkbPoint. Sie können den Namen mit feature.GetFieldAsString (col) als Zeichenfolge zurückgeben. Es gibt keine Möglichkeit, das "Verknüpfen" direkt in OGR zu handhaben. Sie müssten also die andere Datentabelle öffnen und selbst durchsuchen oder die Namen zuerst in GIS kopieren.
Reed Copsey
Das macht Sinn; Nun, ich werde es ausprobieren und dich auf dem Laufenden halten, wie ich es mache. Ich mache das alles, damit ich eine Netzwerkanalyse auf einer Leitungsebene durchführen kann.
Dassouki