1

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

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

我收到此错误消息:

错误 1:alter table tmpem122 alter column OGR_GEOMETRY type geometry(polygon, 4326) using st_geometryn(geometry,1) 失败,没有“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

4

1 回答 1

1

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
于 2021-07-30T13:09:36.427 回答