カテゴリ:

地理空間関数

ST_MAKELINE

入力オブジェクトのポイントを結ぶ線を表す GEOGRAPHY オブジェクトを作成します。

こちらもご参照ください。

TO_GEOGRAPHY

構文

ST_MAKELINE( <geography_expression_1> , <geography_expression_2> )

引数

地理式1

接続するポイントを含む GEOGRAPHY オブジェクト。このオブジェクトは、ポイント、 MultiPoint、または LineString である必要があります。

地理式2

接続するポイントを含む GEOGRAPHY オブジェクト。このオブジェクトは、ポイント、 MultiPoint、または LineString である必要があります。

戻り値

この関数は、 GEOGRAPHY 型の値を返します。値は、入力 GEOGRAPHY オブジェクトで指定されたすべてのポイントを接続する LineString です。

使用上の注意

  • 入力 GEOGRAPHY オブジェクトに複数のポイントが含まれている場合、 ST_MAKELINE はオブジェクトで指定されたすべてのポイントを接続します。

  • ST_MAKELINE は、入力で指定された順序に従いポイントを接続します。

このセクションの例では、出力を WKT 形式で表示します。

alter session set GEOGRAPHY_OUTPUT_FORMAT='WKT';

次の例では、 ST_MAKELINE を使用して、2つのポイントを接続する LineString を作成します。

SELECT ST_MAKELINE(
                   TO_GEOGRAPHY('POINT(37.0 45.0)'),
                   TO_GEOGRAPHY('POINT(38.5 46.5)')
                  ) AS line_between_two_points;
+-----------------------------+
| LINE_BETWEEN_TWO_POINTS     |
|-----------------------------|
| LINESTRING(37 45,38.5 46.5) |
+-----------------------------+

次の例では、ポイントと MultiPoint のポイントを接続する LineString を作成します。

SELECT ST_MAKELINE(
                   TO_GEOGRAPHY('POINT(-122.306067 37.55412)'),
                   TO_GEOGRAPHY('MULTIPOINT((-122.32328 37.561801), (-122.325879 37.586852))')
                  ) AS line_between_point_and_multipoint;
+-----------------------------------------------------------------------------+
| LINE_BETWEEN_POINT_AND_MULTIPOINT                                           |
|-----------------------------------------------------------------------------|
| LINESTRING(-122.306067 37.55412,-122.32328 37.561801,-122.325879 37.586852) |
+-----------------------------------------------------------------------------+

例の出力で示されているように、 ST_MAKELINE は入力で指定された順序に従いポイントを接続します。

次の例では、 MultiPoint 内のポイントを別の LineString と接続する LineString を作成します。

SELECT ST_MAKELINE(
                   TO_GEOGRAPHY('MULTIPOINT((-122.32328 37.561801), (-122.325879 37.586852))'),
                   TO_GEOGRAPHY('LINESTRING(-122.306067 37.55412, -122.496691 37.495627)')
                  ) AS line_between_multipoint_and_linestring;
+---------------------------------------------------------------------------------------------------+
| LINE_BETWEEN_MULTIPOINT_AND_LINESTRING                                                            |
|---------------------------------------------------------------------------------------------------|
| LINESTRING(-122.32328 37.561801,-122.325879 37.586852,-122.306067 37.55412,-122.496691 37.495627) |
+---------------------------------------------------------------------------------------------------+