Nhận các giá trị Lon Lat từ kiểu dữ liệu GEOGRAPHY trong PostGIS


16

Sau khi lưu trữ các giá trị lon lat dưới dạng kiểu dữ liệu GEOGRAPHY, làm cách nào để truy xuất các giá trị lat lon riêng lẻ?

Thất bại:

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

Lỗi:

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

1
Đối với kiểu dữ liệu địa lý sử dụng hàm hợp lệ, ví dụ: ST_MaxX ()ST_MaxY () .
Peter Krauss

Câu trả lời:


20

Hàm ST_X (điểm) chỉ hỗ trợ hình học (như bây giờ).

Một cách giải quyết là để đúc các geog để Geom sử dụng ::geometry.

Hense truy vấn của bạn nên như thế này:

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

Và vì đó là geog, SRID sẽ là 4326 .

Đây cũng một nguồn tốt cho loại geog.


Cảm ơn giải pháp của bạn hoạt động tốt (khi truy vấn bằng pgAdmin3). Tuy nhiên khi tôi truy vấn từ PHP (nginx + php5-fpm), tôi gặp lỗi : Undefined object: 7 ERROR: type "geometry" does not exist. Có ý kiến ​​gì không? stackoverflow.com/questions/15780931/
Mạnh

Tốt, nó hoạt động tốt cho tôi.
Felipe

1

Không cần diễn viên

Hãy thử sử dụng truy vấn này.

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

nó làm việc cho tôi


1
Bạn đang sử dụng phiên bản PostGIS & PostgreSQL nào? Với 9.5 và 2.2, việc chạy truy vấn SELECT ST_XMax(ST_GeographyFromText('SRID=4326;POINT(-73.968504 40.779741)'));mang lại cho tôi ERROR: function st_xmax(geography) does not exist.
r0estir0bbe

0

cố gắng sử dụng truy vấn này

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

Tôi hy vọng nó sẽ giúp bạn


1
Các chức năng X()Y()dường như không tồn tại. Bạn đã lấy chúng ở đâu?
Zoltán

@ Zoltán Tôi nghĩ X()Y()có giá trị trong phiên bản cũ hơn của PostGIS - có lẽ 8.x?. Cập nhật, truy vấn đó sẽ sử dụng ST_X()ST_Y()thay vào đó.
elrobis

Ngay cả PostGIS 2.2 cũng không có ST_X ( địa lý ), hãy xem postgis.net/docs/manual-2.2/ST_X.html
Peter Krauss
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.