从文本字段在PostGiS中的同一表格中创建多边形几何

时间:2019-01-25 10:30:46

标签: postgresql postgis

我有一张这样的桌子

 Table "public.zone_polygons"
  Column   |          Type           |        
-----------+-------------------------+
 id        | integer                 |
 zone_id   | integer                 | 
 zone_name | text                    | 
 zone_path | text                    | 
 geom      | geometry(Geometry,4326) |

每个zone_path均以这种格式的文本形式列出经纬度

75.2323 30.7423,
75.3432 30.5344,
75.5423 30.2342,
75.9123 30.3122,
75.2323 30.7423

我正在尝试通过以下查询使用zone_path值生成几何。

update zone_polygons set geom=ST_SetSRID(ST_MakePolygon(ST_GeomFromText('LINESTRING(zone_path)')), 4326);

我收到以下错误

ERROR:  parse error - invalid geometry
HINT:  "LINESTRING(zo" <-- parse error at position 13 within geometry

postgis中是否有一种方法可以使用其中一个字段来创建几何。

1 个答案:

答案 0 :(得分:1)

我相信您输入错误,坐标位于Long-Lat(印度),而不是Lat-Long(巴伦支海中部)。 PostGIS期望坐标为Long-Lat,因此,如果输入列表确实为lat-long,则需要交换它。您可以修复源,也可以使用ST_FlipCoordinates

由于坐标保存在列中,因此需要使用CacheLINESTRING(和列内容(不是名称)连接起来

'LINESTRING(' || zone_path || ')'