Categorias:

Funções geoespaciais

ST_POINTN

Retorna um ponto em um índice especificado em um LineString.

Consulte também:

ST_ENDPOINT, ST_STARTPOINT

Sintaxe

ST_POINTN( <geography_or_geometry_expression> , <index> )
Copy

Argumentos

geography_or_geometry_expression

O argumento deve ser uma expressão do tipo GEOGRAPHY ou GEOMETRY representando um LineString.

index

O índice do ponto a retornar. O índice deve ser um número inteiro.

Um índice negativo é interpretado como o deslocamento a partir do final do LineString. Por exemplo, -1 é interpretado como o último ponto do LineString, -2 é interpretado como o penúltimo ponto, etc.

Retornos

A função retorna um valor do tipo GEOGRAPHY ou GEOMETRY que contém o ponto no índice especificado do LineString.

Notas de uso

  • Se geography_or_geometry_expression não for um LineString, a função reportará um erro.

  • Se index estiver fora dos limites (por exemplo, se exceder o número de pontos no LineString), a função reportará um erro.

Exemplos

Exemplos GEOGRAPHY

A consulta a seguir retorna o segundo ponto em um 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

A consulta a seguir usa um índice negativo para retornar o segundo ponto a partir do final de um 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

Exemplos GEOMETRY

A consulta a seguir retorna o segundo ponto em um 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

A consulta a seguir usa um índice negativo para retornar o segundo ponto a partir do final de um 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