I have a series of shapefiles, that have 3D geometries (ie: points ZM). I would like to remove the 3D geometry so that the files are 2D. Is there a way to remove 3D geometry from a shapefile using OGR?
2 Answers
Write your data into a new shapefile with ogr2ogr and force geometry type into 2D with the -dim switch.
ogr2ogr -f "ESRI Shapefile" output_2d.shp input_zm.shp -dim 2
The -dim setting is not limited to shapefiles but works in the same way for most vector formats. One exception I know is Oracle Spatial that does not honour the ogr2ogr switch but you must use the layer specific -lco DIM=2
instead.
Once your shapefile is read as ogr.Geometry
, you can use its flattenTo2d()
method.
See the GDAL documentation.
ogr2ogr -f "ESRI Shapefile" output_2d.shp input_zm.shp -dim 2
gdal.org/ogr2ogr.html. However, I do not know if it works if you really has POINTZM shapefile because GDAL does not support M gdal.org/drv_shapefile.html. Let's hope it just skips M values.