- 类别:
ST_MAKELINE¶
构造一个 GEOGRAPHY 或 GEOMETRY 对象,它表示连接输入对象中各点的直线。
- 另请参阅:
语法¶
ST_MAKELINE( <geography_expression_1> , <geography_expression_2> )
ST_MAKELINE( <geometry_expression_1> , <geometry_expression_2> )
实参¶
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';
以下示例使用 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) | +-----------------------------+
下面的示例构造连接 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 按照输入中指定的顺序连接点。
下面的示例构造一个 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) | +---------------------------------------------------------------------------------------------------+
GEOMETRY 示例¶
本部分中的示例使用 WKT 格式显示输出:
ALTER SESSION SET GEOMETRY_OUTPUT_FORMAT='WKT';
第一个示例在两个点之间构造一条线:
SELECT ST_MAKELINE( TO_GEOMETRY('POINT(1.0 2.0)'), TO_GEOMETRY('POINT(3.5 4.5)')) AS line_between_two_points;+-------------------------+ | LINE_BETWEEN_TWO_POINTS | |-------------------------| | LINESTRING(1 2,3.5 4.5) | +-------------------------+
下一个示例演示如何创建将 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;+---------------------------------+ | LINE_FROM_POINT_AND_MULTIPOINT | |---------------------------------| | LINESTRING(1 2,3.5 4.5,6.1 7.9) | +---------------------------------+
下面的示例构造一个 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;+------------------------------------------+ | LINE_FROM_LINESTRING_AND_MULTIPOINT | |------------------------------------------| | LINESTRING(1 2,10.1 5.5,3.5 4.5,6.1 7.9) | +------------------------------------------+