PostGIS'te bir GEOGRAPHY veri türünden Lon Lat değerleri alın


16

Lon lat değerlerini bir GEOGRAPHY veri türü olarak kaydettikten sonra, bağımsız lat lon değerlerini nasıl alabilirim?

Başarısız deneme:

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

Hata:

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

1
İçin coğrafya veri türü kullanımı geçerli işlevi, eski. ST_MaxX () ve ST_MaxY () .
Peter Krauss

Yanıtlar:


20

ST_X (nokta) fonksiyonu, yalnızca (şimdilik gibi) geometrisi destekler.

Bir geçici çözüm etmektir döküm kullanarak GeoM için geog ::geometry.

Hense sorgunuz şöyle olmalıdır:

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

Geog olduğu için SRID 4326 olur .

Ayrıca burada coğrafi tip için iyi bir kaynak.


Teşekkürler çözümünüz iyi çalışıyor (pgAdmin3 kullanarak sorgulama yaparken). Ben PHP (nginx + php5-fpm) den sorgulama am Ancak, ben hata alıyorum: Undefined object: 7 ERROR: type "geometry" does not exist. Herhangi bir fikir? stackoverflow.com/questions/15780931/…
Nyxynyx

Güzel, benim için iyi çalışıyor.
Felipe

1

Döküm gerekmez

Bu sorguyu kullanmayı deneyin.

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

benim için çalışıyor.


1
Hangi PostGIS ve PostgreSQL sürümünü kullanıyorsunuz? 9.5 ve 2.2 ile sorguyu çalıştırmak SELECT ST_XMax(ST_GeographyFromText('SRID=4326;POINT(-73.968504 40.779741)'));bana verir ERROR: function st_xmax(geography) does not exist.
15.06.2016

0

bu sorguyu kullanmayı deneyin.

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

umarım sana yardımcı olur


1
X()Ve Y()işlevleri mevcut görünmüyor. Onları nereden aldın?
Zoltán

@ Zoltán Sanırım X()ve Y()PostGIS'in daha eski bir revizyonunda geçerli - belki de 8.x ?. Güncelleme, bu sorgu kullanmak istiyorsunuz ST_X()ve ST_Y()bunun yerine.
elrobis

PostGIS 2.2'de bile ST_X ( coğrafya ) yoktur, bkz. Postgis.net/docs/manual-2.2/ST_X.html
Peter Krauss
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.