Dapatkan nilai Lon Lat dari tipe data GEOGRAFI di PostGIS

16

Setelah menyimpan nilai lat lat sebagai tipe data GEOGRAFI, bagaimana cara mengambil nilai lat lat individu?

Upaya gagal:

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

Kesalahan:

No function matches the given name and argument types. You might need to add explicit type casts.
Nyxynyx
sumber
1
Untuk tipe data geografi menggunakan fungsi yang valid, mis. ST_MaxX () dan ST_MaxY () .
Peter Krauss

Jawaban:

20

Itu ST_X (titik) hanya mendukung geometri (seperti untuk saat ini).

Salah satu solusinya adalah melemparkan geog ke geom menggunakan::geometry .

Hense permintaan Anda harus seperti ini:

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

Dan karena geog, SRID akan menjadi 4326 .

Juga inilah sumber yang bagus untuk tipe geog.

Nickes
sumber
Terima kasih, solusi Anda berfungsi dengan baik (saat meminta menggunakan pgAdmin3). Namun ketika saya query dari PHP (nginx + php5-fpm), saya mendapatkan error: Undefined object: 7 ERROR: type "geometry" does not exist. Ada ide? stackoverflow.com/questions/15780931/…
Nyxynyx
Bagus, itu bekerja dengan baik untuk saya.
Felipe
1

Tidak perlu dilemparkan

Coba gunakan permintaan ini.

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

ini bekerja untuk saya.

Peter Krauss
sumber
1
Apa versi PostGIS & PostgreSQL yang Anda gunakan? Dengan 9.5 dan 2.2, menjalankan kueri SELECT ST_XMax(ST_GeographyFromText('SRID=4326;POINT(-73.968504 40.779741)'));memberi saya ERROR: function st_xmax(geography) does not exist.
r0estir0bbe
0

coba gunakan permintaan ini.

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

Saya harap ini membantu Anda

Aragon
sumber
1
Fungsi X()dan Y()sepertinya tidak ada. Di mana Anda mendapatkan itu?
Zoltán
@ Zoltán Saya pikir X()dan Y()valid dalam revisi PostGIS yang lebih lama - mungkin 8.x ?. Diperbarui, permintaan itu akan digunakan ST_X()dan ST_Y()sebagai gantinya.
elrobis
Bahkan PostGIS 2.2 tidak memiliki ST_X ( geografi ), lihat postgis.net/docs/manual-2.2/ST_X.html
Peter Krauss