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 tipoGEOMETRY
. O subtipo deve serLINESTRING
. - índice
-
Um valor de tipo de dados
INTEGER
que representa a posição de um índice. Um0
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 tipoGEOMETRY
. O subtipo deve serPOINT
.
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)