The attempt is to change from multipolygon to polygon (shapefile) using:
ogrinfo tmpem122.shp -sql "alter table tmpem122 alter column OGR_GEOMETRY type geometry(polygon, 4326) using st_geometryn(geometry,1)"
I get this error message:
ERROR 1: alter table tmpem122 alter column OGR_GEOMETRY type
geometry(polygon, 4326) using st_geometryn(geometry,1) failed, no such
field as `OGR_GEOMETRY'.
but according to ogrinfo -sql "select * from tmpem122" tmpem122.shp
, the geometry column is OGR_GEOMETRY
(or _ogr_geometry_
):
Layer name: tmpem122
Geometry: Polygon
Feature Count: 17
Extent: ...
...
...
Geometry Column = _ogr_geometry_
gid: String (10.0)
...
What would it be wrong? Please find the file sample here for your testing: https://file.io/U4XnvYSb69lp
Best Answer
There may be a solution to the
no such field as OGR_GEOMETRY
problem but that is irrelevant because it is not possible to do what you are trying. Shapefile specification does not make difference between polygons and multipolygons.ALTER TABLE
will not work because it tries to change the field definitions of the table. What you seem to want to do is to update the geometries.Try this instead
Notice that you must use the SQLite dialect because only that has the ST_GeometryN function and for SQLite dialect the name of the geometry field is usually
geometry
.