Transformation de SRID 900913 en 4326 avec PostGis


8

J'ai deux tables Postgres avec différents SRID: 4326 et 900913. Je veux convertir ce dernier en 4326. J'ai d'abord changé le SRID en utilisant:

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

J'ai ensuite transformé les données de référence en utilisant:

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

Cela semblait fonctionner. Mais lorsque j'ai changé le paramètre SRS de la couche appropriée dans TileMill en WGS84, j'obtiens cette erreur:

Détecté hors zone géographique.

Vraisemblablement, la transformation n'a pas fonctionné, mais on ne sait pas pourquoi.


Je suppose que vous voulez WGS84, qui est EPSG: 4326, pas 4236.
AndreJ

Question rapide: Tilemill est-il plus rapide si la géométrie est WGS84? Cela vaut-il la peine de convertir chaque couche qui utilise une projection 900913 en WGS84? Désolé .. Je suis un noob SIG;)
Georg

Réponses:


22

La transformation a échoué pour votre cas, car la commande UpdateGeometrySRID modifie simplement les métadonnées, mais ne transforme pas les coordonnées. Et lorsque vous tentez une transformation de 4326 à> 4326, aucune transformation n'est effectuée car les SRID sont égaux.


Si vous avez PostGIS 2.x avec une table comme celle-ci:

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

la bonne façon de transformer et de modifier le système de référence spatiale d'une colonne géométrique consiste à utiliser le ALTER TABLE DDL:

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

J'essaie de faire la même chose mais je n'arrive pas à faire fonctionner cette commande ALTER TABLE. ALTER TABLE Detail_Building_buildinglayer ALTER COLUMN Geometry TYPE geometry (Polygon, 900913) USING ST_Transform (geom, 2954); L'erreur que j'obtiens est que la relation "detail_building_buildinglayer" n'existe pas. Je ne comprends pas parce que c'est le nom de ma table et non une relation.
Tyler Veinot du


Merci, c'était le problème; le programme qui a créé la table de géométrie l'a appelée Géométrie et non géom. Après avoir lu ce post, j'ai essayé des guillemets pour qu'il recherche "Géométrie" mais il a quand même échoué. J'ai donc changé le nom de la colonne de géométrie en geom, exécuté la requête et cela a fonctionné; après que je viens de changer le nom en "Géométrie". Je pense que le nom et l'affaire posaient problème.
Tyler Veinot

1
Avez-vous changé le nom de la colonne de base de données à la place du nom de la colonne dans le script SQL ??? Jésus!
Magno C

0

Cela a fonctionné pour moi avec cette séquence:

CREATE TABLE tabla_900913 AS (SELECT ST_TRANSFORM(geom, 4326) FROM "tabla_4326")
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.