ST_SetPoint
ST_SetPoint devuelve una cadena de línea con coordenadas actualizadas con respecto a la posición de la cadena de línea de entrada especificada por el índice. Las coordenadas nuevas son las coordenadas del punto de entrada.
La dimensión de la geometría devuelta es la misma que la del valor geom1. Si geom1 y geom2 tienen diferentes dimensiones, geom2 se proyecta a la dimensión de geom1.
Sintaxis
ST_SetPoint(geom1, index, geom2)
Argumentos
- geom1
-
Un valor de tipo de datos
GEOMETRY
o una expresión que toma el valor de un tipoGEOMETRY
. El subtipo debe serLINESTRING
. - índice
-
Un valor del tipo de datos
INTEGER
que representa la posición de un índice.0
hace referencia al primer punto de la cadena de línea desde la izquierda,1
hace referencia al segundo punto, y así sucesivamente. El índice puede ser un valor negativo.-1
hace referencia al primer punto de la cadena de línea desde la derecha,-2
hace referencia al segundo punto, y así sucesivamente. - geom2
-
Un valor de tipo de datos
GEOMETRY
o una expresión que toma el valor de un tipoGEOMETRY
. El subtipo debe serPOINT
.
Tipo de retorno
GEOMETRY
Si geom2 es el punto vacío, se devuelve geom1.
Si geom1, geom2, o índice es null, se devuelve el valor null.
Si geom1 no es una cadena de línea, se devuelve un error.
Si index no está dentro de un rango de índice válido, se devuelve un error.
Si geom2 no es un punto, se devuelve un error.
Si geom1 y geom2 no tienen el mismo valor en el identificador de sistema de referencia espacial (SRID), se devuelve un error.
Ejemplos
El siguiente SQL devuelve una nueva cadena de línea en la que se establece el segundo punto de la cadena de línea de entrada con el punto 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)
El siguiente ejemplo de SQL devuelve una nueva cadena de línea en la que se establece el tercer punto desde la derecha (el índice es negativo) de la cadena de línea con el punto 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)