Umwandlung von SRID 900913 nach 4326 mit PostGis

8

Ich habe zwei Postgres-Tabellen mit unterschiedlichen SRIDs: 4326 und 900913. Ich möchte letztere in 4326 konvertieren. Ich habe die SRID zuerst geändert mit:

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

Ich habe dann die Referenzdaten transformiert mit:

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

Das schien zu funktionieren. Wenn ich jedoch die SRS-Einstellung der relevanten Ebene in TileMill in WGS84 geändert habe, wird folgende Fehlermeldung angezeigt:

Außerhalb der Grenzen geografische Ausdehnung erkannt.

Vermutlich hat die Transformation nicht funktioniert, aber es ist nicht klar, warum.

rpahne
quelle
Ich denke, Sie wollen WGS84, das ist EPSG: 4326, nicht 4236.
AndreJ
Kurze Frage: Ist Tilemill schneller, wenn die Geometrie WGS84 ist? Lohnt es sich also, jede Ebene, die eine 900913-Projektion verwendet, in WGS84 zu konvertieren? Entschuldigung .. Ich bin ein GIS Noob;)
Georg

Antworten:

22

Die Transformation ist in Ihrem Fall fehlgeschlagen, da der Befehl UpdateGeometrySRID nur die Metadaten ändert, aber keine Koordinaten transformiert. Wenn Sie eine Transformation von 4326-> 4326 versuchen, wird keine Transformation durchgeführt, da die SRIDs gleich sind.


Wenn Sie PostGIS 2.x mit einer Tabelle wie dieser haben:

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

Die richtige Methode zum Transformieren und Ändern des räumlichen Bezugssystems einer Geometriespalte ist die Verwendung der ALTER TABLE DDL:

ALTER TABLE my_table
    ALTER COLUMN geom TYPE geometry(Point,4326) USING ST_Transform(geom,4326);
Mike T.
quelle
Ich versuche das Gleiche zu tun, aber ich kann diesen Befehl ALTER TABLE anscheinend nicht zum Laufen bringen. ALTER TABLE Detail_Building_buildinglayer ALTER COLUMN Geometrie TYP Geometrie (Polygon, 900913) USING ST_Transform (geom, 2954); Der Fehler, den ich bekomme, ist die Beziehung "detail_building_buildinglayer" existiert nicht. Ich verstehe das nicht, weil das der Name meiner Tabelle ist, keine Beziehung.
Tyler Veinot
@ TylerVeinot siehe stackoverflow.com/q/21796446/327026
Mike T
Danke, das war das Problem; Das Programm, mit dem die Geometrietabelle erstellt wurde, nannte sie Geometrie und nicht Geom. Nachdem ich diesen Beitrag gelesen hatte, versuchte ich es mit Anführungszeichen, damit er nach "Geometrie" suchte, aber es schlug immer noch fehl. Also habe ich den Namen der Geometriespalte in geom geändert, die Abfrage ausgeführt und es hat funktioniert. nachdem ich gerade den Namen wieder in "Geometrie" geändert habe. Ich denke, der Name und der Fall haben Probleme verursacht.
Tyler Veinot
1
Haben Sie den Namen der Datenbankspalte anstelle des Spaltennamens im SQL-Skript geändert? Jesus!
Magno C
0

Bei dieser Sequenz hat es bei mir funktioniert:

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