【发布时间】:2020-10-15 21:29:23
【问题描述】:
我正在尝试了解如何在我遇到的情况下使用 Postgis。我有一个如下表:
location_name | geom | geography
-----------------------------------
loc_1 | 'MULTIPOLYGON(((0 0,4 0,4 4,0 4,0 0),(1 1,2 1,2 2,1 2,1 1)), ((-1 -1,-1 -2,-2 -2,-2 -1,-1 -1)))' |
loc_2 | 'MULTIPOLYGON(((0 0,3 0,3 2,0 3,0 0),(1 1,2 1,2 2,1 2,1 1)), ((-1 -1,-1 -2,-2 -2,-2 -1,-1 -1)))' |
loc_3 | 'MULTIPOLYGON(((0 0,1 0,5 6,0 3,0 0),(1 1,2 1,2 2,1 2,1 1)), ((-1 -1,-1 -2,-2 -2,-2 -1,-1 -1)))' |
loc_4 | 'MULTIPOLYGON(((0 0,6 0,1 4,0 5,0 0),(1 1,2 1,2 2,1 2,1 1)), ((-1 -1,-1 -2,-2 -2,-2 -1,-1 -1)))' |
loc_5 | 'MULTIPOLYGON(((0 0,1 0,6 8,0 1,0 0),(1 1,2 1,2 2,1 2,1 1)), ((-1 -1,-1 -2,-2 -2,-2 -1,-1 -1)))' |
其中 location 是一个字符串,column geom 是 POSTGIS Polygon 或 Multipolygon 的文本表示,column geography 是一个空列类型的 geography。
我正在尝试使用 ST_GeomFromText 使用从 geom 字符串转换的地理类型元素填充地理列。我对 SQL 不是很好,到目前为止,我已经尝试了一些类似这样的命令,但没有奏效:
UPDATE table SET geography = ST_GeomFromText(geom);
是否可以使用相应 goem 列元素的地理类型版本填充地理列?
【问题讨论】:
-
为我工作。你得到了什么错误?
-
试试
ST_GeogFromText。如果文本坐标是经纬度,则您显示的查询有效。如果它们位于投影坐标系中,则必须加载几何图形,设置 SRID,将 SRID 转换为 4326,然后转换为地理(尽管当前查询会给您一个警告,而不是错误) -
我使用上面的查询遇到了这个错误:
ERROR: parse error - invalid geometry HINT: "" <-- parse error at position 1 within geometry -
这样您就可以先过滤掉空/空几何图形
标签: sql postgresql postgis polygon