回答:
2つのオプションが思い浮かびます。特定が必要なLINESTRING
場合は、ST_NumGeometries()およびST_GeometryN()を使用できます。あるいは、すべてのサブジオメトリが必要な場合は、ST_Dump()が適しています。
実際に質問を読んだ後、postgis-usersリストからこの投稿と同様のことを行う必要があります。
SELECT ST_AsText( ST_MakeLine(sp,ep) )
FROM
-- extract the endpoints for every 2-point line segment for each linestring
(SELECT
ST_PointN(geom, generate_series(1, ST_NPoints(geom)-1)) as sp,
ST_PointN(geom, generate_series(2, ST_NPoints(geom) )) as ep
FROM
-- extract the individual linestrings
(SELECT (ST_Dump(ST_Boundary(geom))).geom
FROM mypolygontable
-- eliminate 0 length linestring
where st_x(st_startpoint(geom))<> st_x(st_endpoint(geom))
) AS linestrings
) AS segments;
LINESTRING
から「秒MULTILINESTRING
。しかし、私はレベルをさらに深くしたいのですが、個々のラインセグメントが必要です。LINESTRING
マージすると、再び、がマージされ、元のが形成されMULTILINESTRING
ます。それは理にかなっていますか?