1

我正在使用 Python(GeoPandas、SQLAlchemy、GeoAlchemy2)将多边形形状导入 PostGIS 数据库。我按照这里提到的说明进行操作。

我有一个数据库,其中有一个名为的表maps_region,其列/字段名为geom.

我可以将多边形字段(geom名为.

我尝试使用geom几种不同格式的字段导入——众所周知的文本 (WKT) 格式、WKB 格式和 WKB 十六进制格式——但无法从这三种格式中的任何一种转换为多边形。

例如,我将形状geom作为 WKT 格式导入到字段中,然后使用以下命令转换为 WKB Hex 格式,效果很好:

database=> UPDATE maps_region SET geom = ST_GeomFromText(geom, 4326);
UPDATE 28

但是,当我尝试将geom字段从text格式转换为Polygon类型时,出现以下错误:

database=> ALTER TABLE maps_region ALTER COLUMN geom TYPE Geometry(POLYGON, 4326);
ERROR:  Geometry type (MultiPolygon) does not match column type (Polygon)
database=> ALTER TABLE maps_region ALTER COLUMN geom TYPE Geometry(MULTIPOLYGON, 4326);
ERROR:  Geometry type (Polygon) does not match column type (MultiPolygon)

我尝试了两种方法:转换为 Polygon 和转换为 MultiPolygon——但都没有奏效。相反,错误消息只是颠倒了!

任何帮助将不胜感激。

提前致谢!

4

1 回答 1

1

我意识到这些形状是以混合格式注册的:除了一个以外的所有形状都是Polygon格式,而一个是MultiPolygon格式——见这里。看起来这足以解释问题/无效转换。

于 2017-04-23T02:09:32.087 回答