Postgis-「geometry_dump」データ型を「geometry」型に変換


18

ST_Union()が実行されたプロパティ境界のデータセットを使用しているため、すべてのポリゴンがテーブルの1行にマルチポリゴンとして表示されます。これらを分離して、形状ごとに個別の行/ポリゴンを取得したいと思います。これでST_Dump()を実行しようとしましたが、データセット内のポリゴンを分離しているようですが、GISでこれを表示できなくなりました(現在QGISを使用しています)。この列のデータ型には、「geometry_dump」と表示されており、これが視覚化できない理由だと思います。QGISからPostgresデータベースにアクセスすると、この新しいテーブルは、ジオメトリのないデータセットの見出しの下にリストされます。

「geometry_dump」を「geometry」に変換するためにできることがあるかどうかは誰にも分かりますか?

回答:


30

geometry_dumpデータ型はシンプルで、複合型の 2つのフィールドを持ちます:

  1. path[] —ダンプされたオブジェクト内のジオメトリの位置を保持する1次元配列、および
  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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.