类别:

地理空间函数

ST_POINTN

返回 LineString 中指定索引处的点。

另请参阅:

ST_ENDPOINTST_STARTPOINT

语法

ST_POINTN( <geography_or_geometry_expression> , <index> )
Copy

实参

geography_or_geometry_expression

实参必须是表示 LineString 类型、GEOGRAPHY 类型或 GEOMETRY 类型的表达式。

index

要返回的点的索引。索引必须是整数。

负索引被解释为距 LineString 末尾的偏移量。例如,-1 被解释为 LineString 中的最后一个点,-2 被解释为倒数第二个点,等等。

返回

该函数返回类型 GEOGRAPHY 或 GEOMETRY 的值,该值包含 LineString 的指定索引处的点。

使用说明

  • 如果 geography_or_geometry_expression 不是 LineString,则函数会报告错误。

  • 如果 index 越界(例如,超出了 LineString 中的点数),则函数报告错误。

示例

GEOGRAPHY 示例

以下查询返回 LineString 中的第二个点:

ALTER SESSION SET GEOGRAPHY_OUTPUT_FORMAT='WKT';
SELECT ST_POINTN(TO_GEOGRAPHY('LINESTRING(1 1, 2 2, 3 3, 4 4)'), 2);

+--------------------------------------------------------------+
| ST_POINTN(TO_GEOGRAPHY('LINESTRING(1 1, 2 2, 3 3, 4 4)'), 2) |
|--------------------------------------------------------------|
| POINT(2 2)                                                   |
+--------------------------------------------------------------+
Copy

以下查询使用负索引返回 LineString 末尾的第二个点:

ALTER SESSION SET GEOGRAPHY_OUTPUT_FORMAT='WKT';
SELECT ST_POINTN(TO_GEOGRAPHY('LINESTRING(1 1, 2 2, 3 3, 4 4)'), -2);

+---------------------------------------------------------------+
| ST_POINTN(TO_GEOGRAPHY('LINESTRING(1 1, 2 2, 3 3, 4 4)'), -2) |
|---------------------------------------------------------------|
| POINT(3 3)                                                    |
+---------------------------------------------------------------+
Copy

GEOMETRY 示例

以下查询返回 LineString 中的第二个点:

ALTER SESSION SET GEOMETRY_OUTPUT_FORMAT='WKT';
SELECT ST_POINTN(TO_GEOMETRY('LINESTRING(1 1, 2 2, 3 3, 4 4)'), 2);

+-------------------------------------------------------------+
| ST_POINTN(TO_GEOMETRY('LINESTRING(1 1, 2 2, 3 3, 4 4)'), 2) |
|-------------------------------------------------------------|
| POINT(2 2)                                                  |
+-------------------------------------------------------------+
Copy

以下查询使用负索引返回 LineString 末尾的第二个点:

ALTER SESSION SET GEOMETRY_OUTPUT_FORMAT='WKT';
SELECT ST_POINTN(TO_GEOMETRY('LINESTRING(1 1, 2 2, 3 3, 4 4)'), -2);

+--------------------------------------------------------------+
| ST_POINTN(TO_GEOMETRY('LINESTRING(1 1, 2 2, 3 3, 4 4)'), -2) |
|--------------------------------------------------------------|
| POINT(3 3)                                                   |
+--------------------------------------------------------------+
Copy
语言: 中文