Transformando de SRID 900913 a 4326 con PostGis

8

Tengo dos tablas de Postgres con diferentes SRID: 4326 y 900913. Quiero convertir esta última a 4326. Primero cambié el SRID usando:

Select UpdateGeometrySRID('table', 'geomcolumn', 4326).  

Luego transformé los datos de referencia usando:

update table set geomcolumn = ST_Transform (geomcolumn, 4326). 

Esto pareció funcionar. Pero cuando cambié la configuración SRS de la capa relevante en TileMill a WGS84, recibí este error:

Detectado fuera de los límites de extensión geográfica.

Presumiblemente, la transformación no funcionó, pero no está claro por qué.

rpahne
fuente
Supongo que quieres WGS84, que es EPSG: 4326, no 4236.
AndreJ
Pregunta rápida: ¿Tilemill es más rápido si la geometría es WGS84? Entonces, ¿vale la pena convertir cada capa que usa una proyección 900913 a WGS84? Lo siento ... soy un novato SIG;)
Georg

Respuestas:

22

La transformación falló para su caso ya que el comando UpdateGeometrySRID solo cambia los metadatos, pero no transforma las coordenadas. Y cuando intenta una transformación de 4326-> 4326, no se realiza ninguna transformación ya que los SRID son iguales.


Si tiene PostGIS 2.x con una tabla como esta:

CREATE TABLE my_table (
  gid serial primary key,
  geom geometry(Point,900913),
  name text not null
);

la forma correcta de transformar y cambiar el sistema de referencia espacial de una columna de geometría es usar ALTER TABLE DDL:

ALTER TABLE my_table
    ALTER COLUMN geom TYPE geometry(Point,4326) USING ST_Transform(geom,4326);
Mike T
fuente
Estoy tratando de hacer lo mismo, pero parece que no puedo hacer que este comando ALTER TABLE funcione. ALTER TABLE Detail_Building_buildinglayer ALTER COLUMN Geometry TYPE geometry (Polygon, 900913) UTILIZANDO ST_Transform (geom, 2954); El error que obtengo es que la relación "detail_building_buildinglayer" no existe. No entiendo esto porque ese es el nombre de mi tabla, no una relación.
Tyler Veinot
@TylerVeinot ver stackoverflow.com/q/21796446/327026
Mike T
Gracias, ese era el problema; el programa que creó la tabla de geometría lo llamó Geometría y no geom. Después de leer esa publicación, probé citas para que buscara "Geometría", pero aún así falló. Entonces, cambié el nombre de la columna de geometría a geom, ejecuté la consulta y funcionó; después de que acabo de cambiar el nombre a "Geometría". Creo que el nombre y el caso estaban causando problemas.
Tyler Veinot
1
¿Ha cambiado el nombre de la columna de la base de datos en lugar del nombre de la columna en el script SQL? ¡Jesús!
Magno C
0

Me funcionó con esta secuencia:

CREATE TABLE tabla_900913 AS (SELECT ST_TRANSFORM(geom, 4326) FROM "tabla_4326")
Luis Angel Vega Panta
fuente