ST_SetPoint - Amazon Redshift

ST_SetPoint

ST_SetPoint retorna uma linestring com coordenadas atualizadas em relação à posição do linestring de entrada conforme especificado pelo índice. As novas coordenadas são as coordenadas do ponto de entrada.

A dimensão da geometria retornada é a mesma do valor de geom1. Se geom1 e geom2 têm dimensões diferentes, geom2 é projetado para a dimensão de geom1.

Sintaxe

ST_SetPoint(geom1, index, geom2)

Argumentos

geom1

Um valor de tipo de dados GEOMETRY ou uma expressão que é avaliada como um tipo GEOMETRY. O subtipo deve ser LINESTRING.

índice

Um valor de tipo de dados INTEGER que representa a posição de um índice. Um 0 refere-se ao primeiro ponto da linestring a partir da esquerda, 1 refere-se ao segundo ponto, e assim por diante. O índice pode ser um valor negativo. Um -1 refere-se ao primeiro ponto da linestring a partir da direita, -2 refere-se ao segundo ponto, e assim por diante.

geom2

Um valor de tipo de dados GEOMETRY ou uma expressão que é avaliada como um tipo GEOMETRY. O subtipo deve ser POINT.

Tipo de retorno

GEOMETRY

Se geom2 for um ponto vazio, então geom1 será retornado.

Se geom1, geom2 ou index for null, será retornado null.

Se geom1 não for uma linestring, será retornado um erro.

Se índice não está dentro de um intervalo de índice válido, então será retornado um erro.

Se geom2 não for um ponto, então será retornado um erro.

Um erro será retornado se geom1 e geom2 não tiverem o mesmo valor do identificador do sistema referência espacial (SRID -spatial reference system identifier).

Exemplos

O SQL a seguir retorna uma nova linestring onde definimos o segundo ponto da linestring de entrada com o ponto especificado.

SELECT ST_AsText(ST_SetPoint(ST_GeomFromText('LINESTRING(1 2, 3 2, 5 2, 1 2)'), 2, ST_GeomFromText('POINT(7 9)')));
st_astext ------------- LINESTRING(1 2,3 2,7 9,1 2)

O exemplo SQL a seguir retorna uma nova linestring onde definimos o terceiro ponto a partir da direita (o índice é negativo) da linestring com o ponto especificado.

SELECT ST_AsText(ST_SetPoint(ST_GeomFromText('LINESTRING(1 2, 3 2, 5 2, 1 2)'), -3, ST_GeomFromText('POINT(7 9)')));
st_astext ------------- LINESTRING(1 2,7 9,5 2,1 2)