PostGIS chọn theo hộp giới hạn lat / long


18

Tôi có một minLat, minLong, maxLat và maxLong từ một hộp được vẽ trên bản đồ. Ngay bây giờ, truy vấn của tôi để có được tất cả các điểm trong hộp trông như thế này:

SELECT *
FROM geomTable
WHERE (longitude BETWEEN minLon AND maxLon)
AND (latitude BETWEEN minLat AND maxLat)

Tôi muốn sử dụng cột hình học thay vì cột lat / long để có kết quả. Tôi đã thử truy vấn này:

SELECT *
FROM mytable
WHERE mytable.geom && ST_MakeEnvelope(minLon, minLat, maxLon, maxLat, 4326);

từ bài đăng này: Chọn hộp giới hạn bằng postgis nhưng nó không trả về kết quả.

Có ai có một ví dụ về cách chọn tất cả các điểm trong một hộp được tạo bởi min và max lat / longs bằng hình học trong postgis không?


Phiên bản nào của PostGIS bạn đang sử dụng?
Mapperz

PostGIS của tôi là Phiên bản 2.0.1
bl8rchk

2
cả hai cột geom trong cùng một SRID?
biệt danh

Tôi nghĩ rằng tôi có thể thoát khỏi cách tiếp cận của mình ... Tôi chỉ có một cột geom. Đó là SRID là 2223
bl8rchk

@ bl8rchk bảng geomTablevà lĩnh vực là mytable.geomgì?
theartofbeing

Câu trả lời:


16

Dữ liệu của bạn không ở dạng lat / lon, vì vậy bạn cần đẩy hộp của mình vào không gian tọa độ của dữ liệu:

SELECT *
FROM mytable
WHERE 
  mytable.geom && 
  ST_Transform(ST_MakeEnvelope(minLon, minLat, maxLon, maxLat, 4326), 2223);
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.