Obtenir des valeurs Lon Lat à partir d'un type de données GEOGRAPHY dans PostGIS


16

Après avoir stocké les valeurs lat lat en tant que type de données GEOGRAPHY, comment récupérer les valeurs lat lat individuelles?

Tentative échouée:

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

Erreur:

No function matches the given name and argument types. You might need to add explicit type casts.

1
Pour le type de données géographiques, utilisez une fonction valide, par ex. ST_MaxX () et ST_MaxY () .
Peter Krauss du

Réponses:


20

La fonction ST_X (point) ne prend en charge que la géométrie (comme pour l'instant).

Une solution consiste à jeter le geog à l' aide geom ::geometry.

Hense votre requête devrait être comme ceci:

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

Et comme c'est geog, le SRID serait 4326 .

Voici également une bonne source pour le type geog.


Merci, votre solution fonctionne bien (lors d'une requête à l'aide de pgAdmin3). Cependant , quand je suis Interrogation de PHP (nginx + php5-FPM), je reçois l'erreur: Undefined object: 7 ERROR: type "geometry" does not exist. Des idées? stackoverflow.com/questions/15780931/…
Nyxynyx

Bon, ça marche bien pour moi.
Felipe

1

Pas besoin de plâtre

Essayez d'utiliser cette requête.

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

ça marche pour moi.


1
Quelle version de PostGIS et PostgreSQL utilisez-vous? Avec 9.5 et 2.2, l'exécution de la requête SELECT ST_XMax(ST_GeographyFromText('SRID=4326;POINT(-73.968504 40.779741)'));me donne ERROR: function st_xmax(geography) does not exist.
r0estir0bbe

0

essayez d'utiliser cette requête.

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

J'espère que ça t'aide


1
Les fonctions X()et Y()ne semblent pas exister. Où les avez-vous obtenus?
Zoltán

@ Zoltán Je pense X()et Y()sont valables dans une ancienne révision de PostGIS - peut-être 8.x ?. Mis à jour, cette requête utiliserait ST_X()et à la ST_Y()place.
elrobis

Même PostGIS 2.2 n'a pas de ST_X ( géographie ), voir postgis.net/docs/manual-2.2/ST_X.html
Peter Krauss
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.