从同一表中的另一个文本列创建Postgis表列类型几何

问题描述

我试图了解如何在遇到的情况下使用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,-1 -1)))' | 
loc_3         | 'MULTIpolyGON(((0 0,1 0,5 6,-1 -1)))' | 
loc_4         | 'MULTIpolyGON(((0 0,6 0,1 4,0 5,-1 -1)))' | 
loc_5         | 'MULTIpolyGON(((0 0,6 8,0 1,-1 -1)))' | 

位置是字符串,列geom是POSTGIS多边形或Multipolygon的文本表示形式,列地理是空列类型地理。

我正在尝试使用ST_GeomFromText填充从geom字符串转换的地理类型元素的geography列。我对sql不太好,到目前为止,我已经尝试了一些命令,但到目前为止还没有成功:

UPDATE table SET geography = ST_GeomFromText(geom);

是否可以用相应的goem列元素的地理类型版本填充geography列?

解决方法

经过一番摸索和测试,我终于找到了答案。问题是文本几何列中有空字符串。一个添加地理列并根据文本列填充它的SQL命令如下所示:

ALTER TABLE table ADD geography GEOMETRY;
UPDATE table SET geography = ST_GeomFromText(geom) WHERE geom!='' AND geom IS NOT NULL;