Postgis-将“ geometry_dump”数据类型转换为“ geometry”类型


18

我正在使用已在其上运行ST_Union()的属性边界的数据集,因此所有多边形在表的一行中都显示为多多边形。我想将它们分开,以便为每种形状得到单独的行/多边形。我试过在其上运行ST_Dump(),它似乎可以分离出数据集中的多边形,但是我无法再在GIS中查看它(我目前正在使用QGIS)。此列的数据类型称其为'geometry_dump',我认为这就是为什么我无法对其进行可视化的原因。当我从QGIS访问我的Postgres数据库时,此新表将列在没有几何图形的数据集的标题下。

有谁知道我可以做些什么将“ geometry_dump”转换为“ geometry”?

Answers:


30

geometry_dump数据类型是一个简单的复合型有两个字段:

  1. path[] —一维数组,其中保存转储对象中的几何图形位置,以及
  2. geom —原始的简单几何子集,这就是您想要的。

要访问geom,只需使用(ST_Dump(the_geom)).geom(需要额外的括号,当从复合类型访问成员时,这有点麻烦)。例如:

WITH data AS (SELECT 'MULTIPOLYGON (((170 190, 110 150, 200 120, 170 190)), 
  ((220 160, 230 110, 280 120, 220 160)), 
  ((220 200, 260 240, 270 190, 220 200)))'::geometry AS the_geom)

SELECT ST_AsText( (ST_Dump(the_geom)).geom )
FROM data;
                 st_astext
--------------------------------------------
 POLYGON((170 190,110 150,200 120,170 190))
 POLYGON((220 160,230 110,280 120,220 160))
 POLYGON((220 200,260 240,270 190,220 200))
(3 rows)

PostGIS的手册有ST_Dump其他很好的例子。


谢谢,这正是我所需要的。我从未使用过或遇到过诸如“ .geom”之类的SQL语法。干杯。
罗曼·特鲁布卡

额外的括号很重要,因此:正确:“ SELECT(ST_Dump(geom))。geom FROM table”错误:“ SELECT ST_Dump(geom).geom FROM table”
HeikkiVesanto
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.