category: データベース
DATE : 2007/08/24 (Fri)
DATE : 2007/08/24 (Fri)
MULTILINE や MULTILINESTRING など、複数の幾何(geometry)オブジェクトが含まれるオブジェクト(GEOMETRYCOLLECTION)から各幾何オブジェクトを取り出すには、ST_Dump 関数を使用します。
GEOMETRYCOLLECTION からは、そこに含まれる幾何オブジェクトが1つずつ返され、GEOMETRYCOLLECTION 以外(POINT、LINESTRING など)からはそのオブジェクトがそのまま返されます。
ST_Dump 関数から返されるのは、geometry_dump 型のデータで、これは GEOMETRYCOLLECTION 内のインデックス(path、整数配列型)と幾何オブジェクト(geom、geometry 型)でできた複合型です。GEOMETRYCOLLECTION 以外の場合は、path は空の配列になります。
複合型なので、幾何オブジェクトのみを取り出すには、次のように列を指定します。
( <geometry_dump 型を返す列> ).geom
なお、次のような表記もできるようです。
geom( <geometry_dump 型を返す列> )
road テーブル内の MULTILINESTRING を LINESTRING に分解して取り出す SQL は次の通りです。geometry 型のデータは、the_geom 列に格納されているとします。
SELECT ( ST_Dump( the_geom ) ).geom FROM road
なお、PostGIS 1.3 未満では、ST_Dump 関数ではなく、 Dump 関数を使用します。
参考文献
PR
忍者ブログ [PR]