Transformando de SRID 900913 para 4326 com PostGis


8

Eu tenho duas tabelas do Postgres com SRIDs diferentes: 4326 e 900913. Quero converter o último para 4326. Alterei o SRID pela primeira vez usando:

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

Transformei os dados de referência usando:

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

Isso pareceu funcionar. Mas quando alterei a configuração SRS da camada relevante no TileMill para WGS84, recebo este erro:

Detectado fora da extensão geográfica.

Presumivelmente, a transformação não funcionou, mas não está claro o porquê.


Eu acho que você quer WGS84, que é EPSG: 4326, não 4236.
Andrej

Pergunta rápida: o Tilemill é mais rápido se a geometria for WGS84? Vale a pena converter cada camada que usa uma projeção 900913 para WGS84? Desculpe .. eu sou um noob GIS;)
Georg

Respostas:


22

A transformação falhou para o seu caso, pois o comando UpdateGeometrySRID apenas altera os metadados, mas não transforma as coordenadas. E quando você tenta uma transformação de 4326-> 4326, nenhuma transformação é feita, pois os SRIDs são iguais.


Se você possui o PostGIS 2.x com uma tabela como esta:

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

a maneira correta de transformar e alterar o sistema de referência espacial de uma coluna de geometria é usar o ALTER TABLE DDL:

ALTER TABLE my_table
    ALTER COLUMN geom TYPE geometry(Point,4326) USING ST_Transform(geom,4326);

Estou tentando fazer a mesma coisa, mas não consigo obter esse comando ALTER TABLE para funcionar. ALTER TABLE Detail_Building_buildinglayer ALTER COLUMN Geometry TYPE geometry (Polígono, 900913) USANDO ST_Transform (geom, 2954); O erro que recebo é a relação "detail_building_buildinglayer" não existe. Eu não entendo isso porque esse é o nome da minha tabela e não uma relação.
precisa saber é o seguinte


Obrigado, esse foi o problema; o programa que criou a tabela de geometria o nomeou Geometry e não geom. Depois de ler esse post, tentei aspas para procurar "Geometria", mas ainda assim falhou. Então, mudei o nome da coluna geometry para geom, executei a consulta e funcionou; depois que eu mudei o nome de volta para "Geometria". Eu acho que o nome e o caso estavam causando problemas.
precisa saber é o seguinte

1
Você alterou o nome da coluna do banco de dados em vez do nome da coluna no script SQL ??? Jesus!
Magno C

0

Funcionou para mim com esta sequência:

CREATE TABLE tabla_900913 AS (SELECT ST_TRANSFORM(geom, 4326) FROM "tabla_4326")
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.