ST_MakeLine — ポイントジオメトリからラインストリングを生成します.
geometry ST_MakeLine(
geometry set pointfield)
;
geometry ST_MakeLine(
geometry point1, geometry point2)
;
geometry ST_MakeLine(
geometry[] point_array)
;
ST_MakeLineには,ポイントジオメトリの行を取ってラインストリングを返す空間集計,ポイント配列を取る,二つのポイントジオメトリを取る,三つの形式があります.集計関数としてのこの関数に行を渡す前に並べ替えたくなるかも知れません.
この関数は三次元をサポートします.Zインデクスを削除しません.
初出バージョン: 1.4.0 - ST_MakeLine(geomarray)が導入されました.ST_MakeLine集計関数はより多くのポイントをより早く扱うための強化が施されています.
この例はGPS位置の順列を取り,ジオメトリフィールドがGPSポイントからなるラインストリングで行程順になるよう,行程ごとにひとつのレコードを生成します.
SELECT gps.gps_track, ST_MakeLine(gps.the_geom) As newgeom FROM (SELECT gps_track,gps_time, the_geom FROM gps_points ORDER BY gps_track, gps_time) As gps GROUP BY gps.gps_track
一つ目の例では,2点からラインストリングを一つだけ生成します.二つ目の例では,ユーザが引き出した2点からラインストリングを生成します.三つ目の例では,二つの三次元ポイントをつなげて三次元空間のラインストリングを一つだけ生成します.
SELECT ST_AsText(ST_MakeLine(ST_MakePoint(1,2), ST_MakePoint(3,4))); st_astext --------------------- LINESTRING(1 2,3 4) SELECT userpoints.id, ST_MakeLine(startpoint, endpoint) As drawn_line FROM userpoints ; SELECT ST_AsEWKT(ST_MakeLine(ST_MakePoint(1,2,3), ST_MakePoint(3,4,5))); st_asewkt ------------------------- LINESTRING(1 2 3,3 4 5)
SELECT ST_MakeLine(ARRAY(SELECT ST_Centroid(the_geom) FROM visit_locations ORDER BY visit_time)); --Making a 3d line with 3 3-d points SELECT ST_AsEWKT(ST_MakeLine(ARRAY[ST_MakePoint(1,2,3), ST_MakePoint(3,4,5), ST_MakePoint(6,6,6)])); st_asewkt ------------------------- LINESTRING(1 2 3,3 4 5,6 6 6)