Chọn theo hộp giới hạn với PostGIS


12

Tôi có một bộ dữ liệu lớn trong cơ sở dữ liệu PostGIS. Tôi đang xem nó thông qua một giao diện web tải dữ liệu dưới dạng GeoJSON. Có quá nhiều dữ liệu để cung cấp cho khách hàng cùng một lúc (trị giá 10 MB ...) vì vậy tôi muốn có được một vùng dữ liệu trong hộp giới hạn được tạo bởi các cạnh của cửa sổ (đường chấm trong hình bên dưới ). Lấy tọa độ cho các điểm f và g rất dễ dàng.

Câu hỏi 1: Đây có phải là một cách tốt để làm việc? Tôi có nên nghĩ đến việc lưu trữ chúng dưới dạng gạch hoặc phương pháp này có đủ hiệu quả không?

Câu hỏi 2: Làm thế nào để tôi chỉ lấy dữ liệu trong hộp giới hạn này?

Câu 3: Nếu một hình dạng chồng lên cạnh của khung giới hạn (ví dụ hình A bên dưới) thì có cách nào đơn giản để cắt nó vì nó được truy vấn như trong hình thứ hai không?

nhập mô tả hình ảnh ở đây


Bạn đang chạy trên máy khách nào?
underdark

Lập bản đồ. Tôi hiện đang sử dụng OpenLayers làm nhà cung cấp.
Mr_Chimp

Câu trả lời:


8

chỉ cần thay đổi thứ tự của các câu hỏi và bạn có một quy trình:

2) Chỉ chọn những gì giao nhau với bbox ( ST_Intersects).
3) Giao tiếp với bbox để cắt các đa giác ( ST_Intersection).
1) Tạo một bảng mới với kết quả ( CREATE TABLE newtable AS SELECT...).

Tài liệu ST_Intersection chứa một mẫu mã. Bạn sẽ cần điều chỉnh nó và sử dụng ST_PolygonFromText làm bbox.


4

Tôi nghĩ rằng hầu hết (tất cả) khách hàng web (và cả máy tính để bàn cũng vậy) đang làm điều này. Bạn không thể gửi toàn bộ dữ liệu.

Nếu bạn nên thiết lập một số loại bộ nhớ đệm phụ thuộc vào việc dữ liệu của bạn thay đổi tĩnh hay nếu nó đang thay đổi.

Để thực hiện kiểm tra hộp giới hạn này để lấy dữ liệu sẽ rất nhanh (nếu bạn có chỉ số không gian), nhưng tất nhiên nó không miễn phí. Bạn sẽ trả bằng một số cpu.

Như đã nói trước: Để tìm các đa giác trong phạm vi của bạn, bạn sử dụng ST_Intersects.

Để chỉ nhận phần trong phạm vi của bạn, hãy sử dụng ST_Intersection, nhưng đừng làm điều đó. ST_Intersection là một quá trình tốn kém. Trừ khi bạn có đa giác cực lớn, tôi nghĩ tốt hơn là gửi toàn bộ đa giác.

Nhưng tôi đoán bạn muốn làm điều này một cách nhanh chóng thay vì đặt nó vào một cái bàn

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.