尝试使用以下方法从多多边形更改为多边形(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 几何(多边形,4326)使用 st_geometryn(几何,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
答案 0 :(得分:1)
在 PostgreSQL 中,这是更改几何列的数据类型并使用 ST_GeometryN
用集合的第一个几何填充它的正确语法:
ALTER TABLE tmpem122 ALTER COLUMN _ogr_geometry_
TYPE geometry(polygon, 4326) USING ST_GeometryN(_ogr_geometry_,1);
演示:db<>fiddle
由于您只对修改现有几何体感兴趣,因此您只需要修改几何体而不是列数据类型:
$ ogrinfo -dialect sqlite -sql "UPDATE tmpem122 SET geometry = ST_GeometryN(geometry,1)" tmpem122.shp
-dialect sqlite
将几何列命名为 geometry
。