名前

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)
			

関連情報

ST_AsEWKT, ST_AsText, ST_GeomFromText, ST_MakePoint