Tính toán biểu đồ khả năng hiển thị trên hình cầu


9

Tôi có một bảng PostGIS với một số đa giác (được lưu trữ bằng cách sử dụng kiểu dữ liệu địa lý). Họ đại diện cho các khu vực trên một trái đất hình cầu.

Đối với mỗi cặp đỉnh được chọn trong số tất cả các đa giác, tôi muốn tính toán xem hai đỉnh đó có "hiển thị" với nhau không. (Có n * ( n -1) / 2 cặp như vậy, trong đó n là tổng số đỉnh duy nhất trên tất cả các đa giác trong bảng.) Bởi "hiển thị cho nhau", ý tôi là đường dẫn vòng tròn lớn giữa hai đỉnh không giao nhau với bất kỳ đa giác nào trong bảng.

Cách nhanh nhất để thực hiện tính toán đó, tốt nhất là trong PostgreSQL / PostGIS là gì?

Tôi đã có một cái gì đó hoạt động, nhưng nó chậm. Tôi chỉ lặp đi lặp lại một cách ngây thơ trên tất cả các cặp và xem liệu LineString giữa chúng có giao nhau với bất kỳ đa giác nào không. (Kiểu dữ liệu địa lý của PostGIS xử lý tất cả các phép toán khó trên hình cầu cho tôi.) Vì vậy, tôi tự hỏi liệu có một cấu trúc dữ liệu hoặc thuật toán thông minh nào có thể tăng tốc mọi thứ không.


6
Các khái niệm có liên quan: đồ thị khả năng hiển thị và, nếu bạn muốn thực hiện công việc này ở dạng 2D thay vì 3D, phép chiếu Gnomonic .
whuber

"lặp đi lặp lại trên tất cả các cặp" có nghĩa là bạn có vòng lặp FOR trong quy trình kiểm tra xem một dòng có xen kẽ tất cả các đa giác không?. Nếu vậy, có thể nhanh hơn (chỉ có thể) tạo bảng linestring với tất cả các kết hợp có thể và thực hiện một truy vấn trong đó bạn kiểm tra xem dòng có giao với bảng đa giác không
Simplexio

Bạn có thể chia sẻ một minh họa của vấn đề.
addcolor

Bạn có thể loại trừ mọi thứ nằm ngoài đường chân trời hình cầu (cộng với bit cho các vật thể cao gần rìa) được thực hiện nhanh chóng với hộp giới hạn tọa độ gần đúng. Nếu không, tôi nghĩ rằng về cơ bản là NP khó.
AnserGIS

Câu trả lời:


1

Khấu trừ những gì không nhìn thấy được. Giả sử bạn đứng ở một đỉnh trên bãi biển, nhìn vào hai đỉnh từ xa của một đa giác lân cận. Sau đó, bạn có thể giả sử rằng bất kỳ đỉnh nào trong toàn bộ khu vực phía sau các đỉnh này là vô hình từ đỉnh này.

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.