Làm thế nào tôi có thể tìm thấy điểm xa nhất từ ​​một tập hợp các điểm hiện có?


17

Tôi có một tập hợp các điểm dưới dạng shapefile và tôi muốn tìm (tọa độ) của một điểm mới sẽ có khoảng cách dài nhất có thể từ mỗi điểm hiện có. Điều đó có thể không? Nếu có, có mã VB mẫu nào không? Cảm ơn Demetris


Bạn có nghĩa là bạn muốn một điểm mới cho mỗi điểm đã tồn tại hoặc một điểm nào đó "xa nhất" với tất cả chúng? Và xa nhất, bạn có nghĩa là "phía bên kia của địa cầu"? Nếu vậy, bạn chỉ có thể nhân vĩ độ với -1 và thêm 180 vào kinh độ (trừ 360 nếu giá trị kết quả là> 180) nếu bạn có chúng theo độ thập phân.
nmpeterson

Tôi nghĩ rằng câu hỏi thú vị sẽ là: đưa ra các điểm hiện có rải rác trên toàn cầu, tìm một điểm mới trên toàn cầu cách xa tất cả các điểm hiện có.
Kirk Kuykendall

Nó thực sự sẽ là điểm ở cuối của một tam giác cân, tại đó khoảng cách chỉ bị giới hạn bởi bạn muốn đi bao xa. Nếu tôi đã đọc đúng câu hỏi, bạn muốn điểm xa nhất từ ​​cả hai? Bằng nhau không?
Lông

1
Oh! Bài viết của tôi đã tạo ra một cuộc thảo luận và tài liệu tuyệt vời! NMpeterson: Đầu tiên, tôi phải nói rằng điểm của tôi nằm trong một khu vực bằng phẳng nhỏ; vì vậy không cần tính toán toàn cầu. Tôi đang tìm kiếm vấn đề thứ hai được nêu ra; tức là một điểm nào đó "xa nhất" so với tất cả các điểm hiện có. Vì vậy, hãy tập trung vào điều này.
Demetris

Tôi tự hỏi nếu có bất kỳ mã VB mẫu nào có sẵn như được yêu cầu trong câu hỏi ban đầu. Có lẽ mã như vậy đã rõ ràng với phản ứng của các chuyên gia. Nhưng là người mới bắt đầu, tôi hy vọng sẽ bắt đầu bằng cách tạo lại giải pháp được cung cấp bởi whuber. Trước đây tôi xin lỗi vì đã đặt ra câu trả lời này thay vì bình luận.

Câu trả lời:


12

Đề xuất của Kirk Kuykendall để xây dựng một sơ đồ Voronoi hình cầu (đa giác Thiessen) là một cách tốt, nhưng có thể có một số trở ngại kỹ thuật để giải quyết. Trong khi đó, như một giải pháp thay thế, người ta có thể áp dụng giải pháp raster tiêu chuẩn như được mô tả trong một luồng khác . Sử dụng khoảng cách hình cầu thay vì khoảng cách Euclide.

Đây là một ví dụ sử dụng năm điểm, ở đây được đưa ra là (lat, lon):

 82.7051   -145.256
 60.3321     81.2881
-17.076     105.125
-38.792    -122.686
  0.000     180.000

Bản đồ khoảng cách

Bản đồ khoảng cách hình cầu này trải dài toàn cầu từ -180 đến 180 độ theo chiều ngang và -90 đến 90 độ theo chiều dọc. Các điểm được hiển thị với các chấm đỏ lớn. Khoảng cách tăng theo độ sáng. Các đường gờ rõ ràng phải là một phần của các vòng tròn lớn. Chấm đen nhỏ gần (-15.3268, -2.04352) đánh dấu điểm có khoảng cách tối đa là 11.227 km. (Khoảng cách đã được tính toán trong mốc đo lường elip ITRF00.)

Độ phân giải của lưới này là một độ. Để có được giải pháp chính xác hơn, người ta có thể phóng to một điểm như vậy (và vào bất kỳ mức tối đa cục bộ nào khác có giá trị gần đủ với mức tối đa toàn cầu) và lặp lại phép tính trên lưới nhỏ hơn nhưng độ phân giải cao hơn.


đẹp hơn nhiều so với vectơ. Không chắc chắn tại sao tôi nghĩ rằng các raster yêu cầu một mô hình trái đất phẳng.
Kirk Kuykendall

Khá, có, nhưng không hiệu quả. Sẽ thật tuyệt khi thấy giải pháp Voronoi hình cầu dựa trên vector hoạt động.
whuber

@Whuber: Làm thế nào bạn có thể tự động lấy tọa độ của điểm đen? "
Demetris

@Demetris Một cách là tính giá trị tối đa trên lưới, chọn tất cả các ô bằng với giá trị đó và sử dụng tọa độ của tâm của ô đó.
whuber

@Whuber: Rất cám ơn. Đây là một ý tưởng tốt. Tuy nhiên, tôi phải cắt đoạn raster đầu ra dựa trên một lớp đối tượng (một đa giác uniqu). Tôi có thể làm điều này?
Demetris

8

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

Tôi chưa bao giờ thử điều này nhưng có vẻ như điều này sẽ hoạt động:

Tạo một sơ đồ voronoi 3D của hình cầu. Đa giác kết quả này sẽ được tập trung đại khái vào các điểm (hạt giống) ban đầu.

Lặp lại qua từng đỉnh kết quả để tìm một đỉnh xa nhất từ ​​điểm hiện tại gần nhất của nó. Điểm này phải là điểm xa nhất trên toàn cầu.


Đây là một ý tưởng tuyệt vời (+1). Nhưng biểu đồ Voronoi hình cầu trông như thế nào khi tất cả các điểm nằm trong một bán cầu chung? Mã bạn tham khảo để có được nó với một thân tàu lồi, nhưng có vẻ như nó sẽ không hoạt động.
whuber

hmm, yeah, tôi đoán ngay cả khi chúng không nằm trong một bán cầu chung, sẽ có một đa giác thiếu điểm hạt giống. Điều gì sẽ xảy ra nếu bạn xây dựng một điểm cho nó bằng cách sử dụng điểm đối cực của tâm vỏ lồi? Sau đó, ngoài việc lặp qua từng đỉnh, điểm lồi-cực âm này sẽ được kiểm tra để xem liệu nó có cách xa các lân cận của nó hơn khoảng cách đỉnh cực đại hay không.
Kirk Kuykendall

Đó là suy nghĩ ban đầu của tôi, nhưng các điểm đối cực sẽ tạo ra các đa giác nhân tạo. Hãy suy nghĩ về những gì sẽ xảy ra trong hình minh họa của bạn nếu ví dụ như cực âm đến mọi điểm! Có lẽ có một giải pháp về bản chất này, nhưng có vẻ như nó không đơn giản.
whuber

1

Bạn có thể sử dụng Hàm Khoảng cách theo Chi phí để xác định khoảng cách mọi ô trong raster của bạn cách tất cả các điểm khác.


Chi phí nào bạn sẽ sử dụng?
whuber

Nếu bạn đặt chi phí là một đơn vị; bạn có thể xác định điểm xa nhất sẽ dựa trên khoảng cách.
djq

@whuber Mặc dù có lẽ điều này không khác gì tính toán cách tiếp cận khoảng cách euclide đã được đề cập.
djq

Đó là khoảng cách Euclide. Trên thực tế, nó thậm chí không phải là: đó là một loại khoảng cách bát giác kỳ lạ (các vòng tròn thực sự là các hình bát giác). Trong tình huống này (chỉ khoảng cách từ các điểm, không có rào cản), việc tính toán trực tiếp khoảng cách Euclide hoặc lưới khoảng cách hình cầu sẽ chính xác và nhanh hơn nhiều, thay vì cố gắng khai thác CostDistance cho việc này.
whuber

Tôi không chắc chắn rằng fucntion khoảng cách có chi phí sẽ có ích vì tôi cần tọa độ của chỉ một điểm và tôi có một tập hợp các vectơ xuất hiện; nhưng tôi sẽ thử. Cảm ơn.
Demetris

1

Theo như tôi biết, phân tích " Cực không thể tiếp cận " này phải được thực hiện lặp đi lặp lại.

Một cách tiếp cận raster lặp đi lặp lại sẽ phù hợp miễn là bạn đang nhìn vào một khu vực nhỏ với độ méo tối thiểu từ phép chiếu. Đối với mỗi ô, tính khoảng cách đến tất cả các điểm, sau đó lấy khoảng cách tối thiểu. Các tế bào có giá trị cao nhất là cực. Bạn cũng có thể sử dụng Khoảng cách Euclide trong Phân tích không gian để thực hiện việc này.

Một cách tiếp cận vector lặp lại phức tạp hơn. Garcia-Castellanos et al 2007 mô tả một phương pháp lặp dựa trên một trái đất hình cầu. Có vẻ như họ đã làm cho mã C của họ có sẵn trực tuyến . Tôi có thể tưởng tượng các cách làm điều này trong Arc với bộ đệm, nhưng nó vẫn lặp và chậm.


0

bạn có thể sử dụng Khoảng cách điểm (Phân tích) Công cụ tạo một bảng có khoảng cách giữa hai bộ điểm. nếu bán kính tìm kiếm mặc định được sử dụng, khoảng cách từ tất cả các điểm đầu vào đến tất cả các điểm gần được tính toán. Bảng đầu ra có thể khá lớn. Ví dụ: nếu cả hai tính năng đầu vào và gần có 1.000 điểm, thì bảng đầu ra có thể chứa một triệu bản ghi.


Làm thế nào điều này có thể được áp dụng để tìm tọa độ của một điểm mới không xuất hiện trong đầu vào? Có lẽ bạn đã đọc sai câu hỏi?
whuber

0

Điểm xa nhất với tập hợp điểm của bạn sẽ là điểm tương ứng với điểm bên trong nhất trong tập hợp của bạn. Chẳng hạn, nếu điểm bên trong nhất trong tập hợp của bạn có tọa độ 49 độ Bắc và -144 độ Đông, thì điểm đối ứng và điểm xa nhất sẽ có tọa độ 49 độ Nam và 36 độ Tây. Điều này không chính xác bởi vì Trái đất không hoàn toàn hình cầu, thay vào đó là địa chất; do đó, tính chính xác của điểm kết quả của bạn rất nhiều phụ thuộc vào hệ thống chiếu và địa lý (chỉnh hình, chỉnh hình ...) mà bạn sử dụng. Có thể hữu ích để tìm một đối ứng cho toàn bộ tập hợp (chuyển một antipode cho một tập hợp) và sau đó chạy phân tích bề mặt trong địa hình được bao phủ bởi tập hợp các điểm cực âm, vì địa hình có thể rất. Tôi cho rằng câu hỏi của bạn không phải là về bất kỳ điểm nào trên các vật thể ngoài trái đất, chẳng hạn như các hành tinh khác hoặc mặt trăng. Lấy làm tiếc, Tôi không có mã VB cho bạn. 🙄


Điểm xa nhất trong tất cả các điểm khác trong một tập hợp sẽ là điểm bên trong nhất (điểm xa nhất trong tất cả các điểm bên ngoài dọc theo cạnh), nó vẫn sẽ là điểm gần nhất với mọi điểm ngay bên cạnh nó. Đây là phân tích cụm, không vui vẻ. Có lẽ tốt hơn là nhìn vào các nguyên tử điện tích tương tự trong Vật lý.😐
Yuriy Shevchuk
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.