ST_SetPoint - Amazon Redshift

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 tipo GEOMETRY. El subtipo debe ser LINESTRING .

í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 tipo GEOMETRY. El subtipo debe ser POINT .

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)