Konvertieren einer CSV-Datei mit WKT-Daten in ein Shapefile mit ogr2ogr?

8

Diese Frage bezieht sich auf das Konvertieren von Shapefiles in Textdateien (ASCII). .

Ich habe eine CSV-Datei mit einer Spalte, in der alle Zeilen den WKT POLYGON () entsprechen:

WKT
POLYGON(...)
POLYGON(...)
...

Ich bin mit dem Konvertieren von Shapefile in WKT vertraut, aber ich muss umgekehrt vorgehen. Wie kann man diese Aufgabe erfüllen?

Ich habe versucht, mit ogr2ogrden Einstellungen / Flags herumzuspielen, aber nichts wirklich Nützliches bekommen.

Ich weiß auch, dass ich QGIS verwenden kann, um dies zu tun, aber es friert ein / stürzt ab, da der Datensatz ziemlich groß ist.

Pris
quelle

Antworten:

16

Ich musste heute das gleiche Problem lösen, daher hier meine Antwort, die eine vollständige Lösung bietet.

Ich habe eine lineWKT.csvDatei im F:\Data\Ordner gespeichert , mit den Daten wie folgt:

id,gm
0,"LINESTRING (30 10 0, 10 30 0, 40 40 5)"

Ich habe eine test.vrtDatei wie diese:

<OGRVRTDataSource>
    <OGRVRTLayer name="lineWKT">
       <SrcDataSource>F:\Data\lineWKT.csv</SrcDataSource>
      <GeometryType>wkbLineString25D</GeometryType>
 <LayerSRS>PROJCS["WGS_1984_Lambert_Conformal_Conic",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1000000.0],PARAMETER["False_Northing",1000000.0],PARAMETER["Central_Meridian",85.875],PARAMETER["Standard_Parallel_1",24.625],PARAMETER["Standard_Parallel_2",27.125],PARAMETER["Latitude_Of_Origin",25.8772525],UNIT["Meter",1.0]]</LayerSRS>
 <GeometryField encoding="WKT" field='gm' > </GeometryField >
     </OGRVRTLayer>
</OGRVRTDataSource>

Mit dieser Konfiguration kann ich mit dem folgenden Befehl ein Shapefile erstellen:

ogr2ogr line.shp test.vrt

Devdatta Tengshe
quelle
1
tolle und funktionierende Methode! Vielen Dank, dass Sie auch Code geteilt haben.
umbe1987