我使用Python(GeoPandas,SQLAlchemy,GeoAlchemy2)将Polygon形状导入PostGIS数据库。我按照here提到的说明进行了操作。
我有一个数据库,其中包含一个名为maps_region
的表,其中一个列/字段名为geom
。
我能够以文本格式(WKT,WKB和WKB Hex)将Polygon字段(名为geom
)导入PostGIS数据库表,但是,我无法成功转换此文本列在数据库中使用适当的Polygon格式。
我尝试使用几种不同格式的geom
字段进行导入 - 采用已知文本(WKT)格式,WKB格式和WKB Hex格式 - 但无法从三者中的任何一种转换为多边形格式。
例如,我将形状作为WKT格式导入geom
字段,然后使用以下命令转换为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--并且都没有效果。相反,错误消息刚刚颠倒过来!
非常感谢任何帮助。
提前致谢!
答案 0 :(得分:0)
我意识到形状是以混合格式注册的:除了一个外,所有形状都采用Polygon
格式,而其中一个采用MultiPolygon
格式 - see here。看起来这样可以充分解释问题/无效转换。