Categorias:

Funções geospaciais

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