无法将多边形转换为形状文件中的多边形:没有几何列 OGR_GEOMETRY?

Cannot convert multipolygon to polygon in shape file: no geometry column OGR_GEOMETRY?

尝试使用以下方法从多边形更改为多边形(shapefile):

ogrinfo tmpem122.shp -sql "alter table tmpem122 alter column OGR_GEOMETRY type geometry(polygon, 4326) using st_geometryn(geometry,1)"

我收到此错误消息:

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

但根据ogrinfo -sql "select * from tmpem122" tmpem122.shp,几何列是OGR_GEOMETRY(或_ogr_geometry_):

Layer name: tmpem122
Geometry: Polygon
Feature Count: 17
Extent: ...
...
...
Geometry Column = _ogr_geometry_
gid: String (10.0)
...

会是什么错误?请在此处找到文件样本进行测试:https://file.io/U4XnvYSb69lp

PostgreSQL/PostGIS

在 PostgreSQL 中,这是更改几何列的数据类型并使用集合的第一个几何填充它的正确语法 ST_GeometryN:

ALTER TABLE tmpem122 ALTER COLUMN _ogr_geometry_ 
TYPE geometry(polygon, 4326) USING ST_GeometryN(_ogr_geometry_,1);

演示:db<>fiddle

ogrinfo

由于您只对修改现有几何图形感兴趣,因此只需修改几何图形而不是列数据类型:

$ ogrinfo -dialect sqlite -sql "UPDATE tmpem122 SET geometry = ST_GeometryN(geometry,1)" tmpem122.shp
  • 使用 -dialect sqlite 将几何列命名为 geometry