Abrufen von Lon Lat-Werten aus einem GEOGRAPHY-Datentyp in PostGIS

16

Wie kann ich nach dem Speichern von Langzeitwerten als GEOGRAPHY-Datentyp die einzelnen Langzeitwerte abrufen?

Fehlversuch:

SELECT id, geog, ST_X(geog), ST_Y(geog) FROM locations;

Error:

No function matches the given name and argument types. You might need to add explicit type casts.
Nyxynyx
quelle
1
Verwenden Sie für den Geografie- Datentyp eine gültige Funktion, z. ST_MaxX () und ST_MaxY () .
Peter Krauss

Antworten:

20

Die Funktion ST_X (Punkt) unterstützt nur die Geometrie (wie bisher).

Eine Abhilfe ist , werfen den geog mit geom ::geometry.

Hense Ihre Frage sollte so aussehen:

SELECT id, geog, ST_X(geog::geometry), ST_Y(geog::geometry) FROM locations; 

Und da es sich um Geog handelt, wäre die SRID 4326 .

Auch hier ist eine gute Quelle für den Geog-Typ.

nickves
quelle
Danke, Ihre Lösung funktioniert gut (bei Abfragen mit pgAdmin3). Allerdings , wenn ich von PHP bin Abfrage (nginx + php5-fpm), erhalte ich die Fehlermeldung: Undefined object: 7 ERROR: type "geometry" does not exist. Irgendwelche Ideen? stackoverflow.com/questions/15780931/…
Nyxynyx
Gut, es funktioniert gut für mich.
Felipe
1

Ich brauche keine Besetzung

Versuchen Sie, diese Abfrage zu verwenden.

SELECT ST_XMax(geog), ST_YMax(geog), ST_AsEWKT(geog)
FROM locations LIMIT 10;

Für mich geht das.

Peter Krauss
quelle
1
Welche PostGIS & PostgreSQL-Version verwenden Sie? Mit 9.5 und 2.2 SELECT ST_XMax(ST_GeographyFromText('SRID=4326;POINT(-73.968504 40.779741)'));gibt mir das Ausführen der Abfrage ERROR: function st_xmax(geography) does not exist.
r0estir0bbe
0

versuchen Sie, diese Abfrage zu verwenden.

SELECT X(the_geom), Y(the_geom), ST_AsEWKT(the_geom)
      FROM locations LIMIT 10;

ich hoffe es hilft dir

Aragon
quelle
1
Die X()und Y()Funktionen scheinen nicht zu existieren. Woher hast du die?
Zoltán
@Zoltán Ich denke X()und bin Y()in einer älteren Revision von PostGIS gültig - vielleicht 8.x ?. Aktualisiert, würde diese Abfrage ST_X()und ST_Y()verwenden.
Elrobis
Sogar PostGIS 2.2 hat kein ST_X ( Geografie ), siehe postgis.net/docs/manual-2.2/ST_X.html
Peter Krauss