2 votos

Cómo reproyectar una tabla usando PostGIS

Reproyectar una tabla en diferentes CRS es una práctica muy común en análisis geoespacial. Sin embargo, todavía estoy luchando por reproyectar mi tabla en PostGIS, después de leer un montón de preguntas y respuestas relacionadas con este tema.

Aquí tengo una tabla con un conjunto de puntos. El SRID original es 28356

SELECT Find_SRID('public', 'pts', 'geom');

introducir descripción de la imagen aquí

Me gustaría reproyectar la tabla a 4326 para un análisis posterior.

En primer lugar, utilicé ST_Transform, pero fallé con este mensaje de error: ERROR: Geometry SRID (4326) does not match column SRID (28356)

UPDATE pts SET geom = ST_Transform(geom,4326);

Luego intenté ALTER la tabla pero obtuve el mismo error: ERROR: Geometry SRID (4326) does not match column SRID (28356)

ALTER TABLE pts 
  ALTER COLUMN geom 
  TYPE Geometry(Point, 4326) 

Finalmente, la función UpdateGeometrySRID parece funcionar correctamente y la consulta Find_SRID devuelve 4326 como se esperaba.

Sin embargo, al cargar la capa modificada en el lienzo del mapa, no están en la ubicación correcta.

SELECT UpdateGeometrySRID('public', 'pts', 'geom', 4326);
SELECT Find_SRID('public', 'pts', 'geom');

¿Hay algo mal en mi consulta?

5voto

Adam Ernst Puntos 6939

Necesitas modificar la columna de la tabla y transformar los datos en un solo paso:

ALTER TABLE pts 
  ALTER COLUMN geom 
  TYPE Geometry(Point, 4326) 
USING ST_Transform(geom, 4326);

1voto

Lordakin Puntos 18

¿Y si intenta especificar un SRID de origen y un SRID de destino, una de las opciones en la [documentación][1], en la consulta utilizada para cargar la tabla?

SELECT ST_Transform(geom, 28356, 4326);

Otra opción sería, como mencionó @Scorpio, crear una nueva tabla con el SRID deseado

CREATE TABLE new_table
  AS (SELECT ST_Transform(geom, 28356, 4326)  FROM old_table);

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X