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

时间:2021-07-30 13:01:26

标签: sql postgis shapefile ogr geom

尝试使用以下方法从多多边形更改为多边形(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

1 个答案:

答案 0 :(得分: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