PostGIS:将文本WKT / WKB / WKB Hex转换为多边形

时间:2017-04-22 20:59:03

标签: python sqlalchemy postgis geopandas geoalchemy2

我使用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--并且都没有效果。相反,错误消息刚刚颠倒过来!

非常感谢任何帮助。

提前致谢!

1 个答案:

答案 0 :(得分:0)

我意识到形状是以混合格式注册的:除了一个外,所有形状都采用Polygon格式,而其中一个采用MultiPolygon格式 - see here。看起来这样可以充分解释问题/无效转换。