类别:

地理空间函数

ST_MAKELINE

构造一个 GEOGRAPHYGEOMETRY 对象,它表示连接输入对象中各点的直线。

另请参阅:

TO_GEOGRAPHYTO_GEOMETRY

语法

ST_MAKELINE( <geography_expression_1> , <geography_expression_2> )

ST_MAKELINE( <geometry_expression_1> , <geometry_expression_2> )
Copy

实参

geography_expression_1

包含要连接的点的 GEOGRAPHY 对象。此对象必须是点、MultiPoint 或 LineString。

geography_expression_2

包含要连接的点的 GEOGRAPHY 对象。此对象必须是点、MultiPoint 或 LineString。

geometry_expression_1

包含要连接的点的 GEOMETRY 对象。此对象必须是点、MultiPoint 或 LineString。

geometry_expression_2

包含要连接的点的 GEOMETRY 对象。此对象必须是点、MultiPoint 或 LineString。

返回

该函数返回类型 GEOGRAPHY 或 GEOMETRY 的值。该值是一个 LineString,连接了由输入 GEOGRAPHY 或 GEOMETRY 对象指定的所有点。

使用说明

  • 如果输入 GEOGRAPHY 对象包含多个点,则 ST_MAKELINE 连接对象中指定的所有点。

  • ST_MAKELINE 按照输入中指定的顺序连接点。

  • 对于 GEOMETRY 对象,如果两个输入 GEOMETRY 对象具有不同的 SRIDs,该函数会报告错误。

  • 对于 GEOMETRY 对象,返回的 GEOMETRY 对象的 SRID 与输入相同。

示例

GEOGRAPHY 示例

本部分中的示例使用 WKT 格式显示输出:

alter session set GEOGRAPHY_OUTPUT_FORMAT='WKT';
Copy

以下示例使用 ST_MAKELINE 来构造连接两个点的 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) |
+-----------------------------+
Copy

下面的示例构造连接 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) |
+-----------------------------------------------------------------------------+
Copy

如示例中的输出所示,ST_MAKELINE 按照输入中指定的顺序连接点。

下面的示例构造一个 LineString,将 MultiPoint 中的点与另一个 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) |
+---------------------------------------------------------------------------------------------------+
Copy

GEOMETRY 示例

本部分中的示例使用 WKT 格式显示输出:

ALTER SESSION SET GEOMETRY_OUTPUT_FORMAT='WKT';
Copy

第一个示例在两个点之间构造一条线:

SELECT ST_MAKELINE(
  TO_GEOMETRY('POINT(1.0 2.0)'),
  TO_GEOMETRY('POINT(3.5 4.5)')) AS line_between_two_points;
Copy
+-------------------------+
| LINE_BETWEEN_TWO_POINTS |
|-------------------------|
| LINESTRING(1 2,3.5 4.5) |
+-------------------------+
Copy

下一个示例演示如何创建将 MultiPoint 中的点与点连接起来的 LineString

SELECT ST_MAKELINE(
  TO_GEOMETRY('POINT(1.0 2.0)'),
  TO_GEOMETRY('MULTIPOINT(3.5 4.5, 6.1 7.9)')) AS line_from_point_and_multipoint;
Copy
+---------------------------------+
| LINE_FROM_POINT_AND_MULTIPOINT  |
|---------------------------------|
| LINESTRING(1 2,3.5 4.5,6.1 7.9) |
+---------------------------------+
Copy

下面的示例构造一个 LineString,将 MultiPoint 中的点与另一个 LineString 中的点连接起来:

SELECT ST_MAKELINE(
  TO_GEOMETRY('LINESTRING(1.0 2.0, 10.1 5.5)'),
  TO_GEOMETRY('MULTIPOINT(3.5 4.5, 6.1 7.9)')) AS line_from_linestring_and_multipoint;
Copy
+------------------------------------------+
| LINE_FROM_LINESTRING_AND_MULTIPOINT      |
|------------------------------------------|
| LINESTRING(1 2,10.1 5.5,3.5 4.5,6.1 7.9) |
+------------------------------------------+
Copy
语言: 中文