Tôi có một db PostGIS và tôi muốn tìm các điểm nằm trong một số khu vực (một hộp giới hạn). Tôi có hai bộ tọa độ, từ đó tôi có thể nhận được tất cả bốn điểm hình chữ nhật tạo thành hộp (nếu cần). Cột dữ liệu của tôi trong câu hỏi được đặt tên là 'điểm' và nó cũng thuộc loại điểm.
- Có cách nào để chỉ định bốn bộ tọa độ (lat / long) và nhận tất cả các điểm nằm trong hộp không.
- Hoặc chỉ định hai điểm và để DB xử lý các góc của hình chữ nhật và trả về các điểm trong
Chỉ trong trường hợp tôi không rõ ràng về những gì tôi muốn đạt được. Tương đương với 'vanilla' sql nếu tôi có trường lat và long thay vì một điểm sẽ là:
SELECT * FROM myTable where lat> xMin AND lat < xMax AND long > yMin and long < yMax
EDIT CẬP NHẬT:
Tôi đang thử giải pháp của underdark. Lúc đầu, tôi không có bộ tạo ST_MakePoint (bây giờ tôi làm) và tôi vẫn gặp một lỗi rất giống nhau (chỉ trên một ký tự khác).
SELECT * FROM myTable WHERE ST_Within(ST_MakePoint(point),GeometryFromText('POLYGON((75 20,80 30,90 22,85 10,75 20))',4326))
và tôi đang nhận được lỗi này:
ERROR: function st_makepoint(point) does not exist
LINE 1: SELECT * FROM triples WHERE ST_Within(ST_MakePoint(point),Ge...
^
HINT: No function matches the given name and argument types. You might need to add explicit type casts.
********** Error **********
ERROR: function st_makepoint(point) does not exist
SQL state: 42883
Hint: No function matches the given name and argument types. You might need to add explicit type casts.
Character: 39
BIÊN TẬP:
Trong ngắn hạn, tôi có thể giải quyết nó bằng:
SELECT * FROM triples WHERE box '((point1),(point2))' @> point
Nhưng tôi sẽ phải tìm ra lý do tại sao không có chức năng nào của PostGIS không hoạt động đối với tôi.