8

This question is related to Converting shapefiles to text (ASCII) files?.

I have a CSV file, with one column, where all the rows correspond to WKT POLYGON()'s:

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

I'm familiar with how to convert from shapefile to wkt, but I need to go the other way around. How to accomplish this task?

I tried playing around with ogr2ogr's settings/flags but didn't really get anything useful.

I also know I can use QGIS to do this, but it freezes/crashes since the dataset is fairly large.

5

http://www.gdal.org/drv_vrt.html plus http://www.gdal.org/drv_csv.html should have everything you need to describe the layout of your data and import it. In short, you need to create a OGR VRT file that describes things using details from the CSV driver page.

  • The links are broken – Graviton Dec 17 '18 at 3:41
  • Edited the links to fix them. – mlibby Jan 11 at 11:18
14

I had to solve the same problem today, so here is my answer, which gives a complete solution.

I have a lineWKT.csv file stored in F:\Data\ folder, with the data like this:

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

I have a test.vrt file like this:

<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>

With this configuration, I can create a shapefile with the following command:

ogr2ogr line.shp test.vrt

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.