2013-10-15 86 views
1

我已經模擬了這個算法http://forcefront.github.io/point-in-polygon/point-in-polygon.html如何判斷一個地理座標點在一個地理座標多邊形中?

但我認爲經度和緯度都是球形座標。

該算法是否適合在地圖上對多邊形進行聚合點?

+0

經緯度應該完全適合這種算法,它們可以完美地投影到平坦的表面上。你有沒有看過平面紙質地圖? ;-)雖然你可能想在http://gis.stackexchange.com嘗試這個問題,但那些傢伙專門回答這些問題。 – deceze

回答

3

一個通用的多邊形點實現並不能解釋這個事實,即你可以從一個像179.999度這樣的值包裝到-180度,並且我們還沒有得到關於手邊問題的足夠信息。如果你的輸入被正確地歸一化(就像我的情況那樣,它被放置在[-180,180)),並且你的多邊形不會觸及你的地圖邊界,那麼你應該沒問題。

當你看到這樣的算法時,x和y座標系統是任意的;你可以將它們應用於y和z,x和t等等(儘管x和t的情況不需要我可以快速想到的任何含義)。

如果我在我的描述中沒有清楚說明:如果我給了你一個圍繞北極圈的多邊形,那麼對於這個多邊形是否包含北極,或者它是否包含了北極的一切極;這並沒有明確地傳達給我。同樣,如果你看一個球體的緯度/經度投影,一個多邊形與lat或long = 180相交,而多邊形中的通用點不會處理這個。

enter image description here

就拿我對這個世界的圖片,使事情更加清楚。我不知道如何將多邊形定義爲左側綠色區域與兩個半圓之間的區域(穿過我們和中國)之間的區域。

關閉我的頭頂,你可以解決這些問題,將兩個圓分成兩個不同的多邊形並單獨測試。您可以按原樣表示頂部半圓,也可以用多邊形表示頂點半圓,並用點和整個地圖的四個角來表示頂點。

或者,您可以在您對多邊形進行測試時移動座標系(以便它不會換行並且它的點全部歸一化),儘管這將無法解釋多次跨越您的地球的多邊形(標準化會打破你的多邊形)。

+1

+1爲世界的圖片 –

0

大多數時候,你只有-179和180度之間的角度,它應該工作。如果你的角度更小或更大,那麼你需要轉換它。您可以使用轉換爲每個頂點的世界座標並將其投影回-179,180度。下面介紹如何計算一個邊界框,例如從美國的紐約到中國的北京:Need to calculate latitude longitude from postal code database when location has multiple codes。這裏是你如何規範角度Easy way to keeping angles between -179 and 180 degrees。您還可以使用小葉JavaScript庫和wrap函數。

0

它可以在所有情況下,除非你

1)重疊的數據限制(限制在那裏經度跳到180〜-180),或當
2)重疊的兩極。

因此,對於99.99%的所有應用程序,只需檢查地理數據導入 這兩個條件,然後使用鏈接的算法。

提供不符合這些條件的多邊形會被忽略的信息,並且數據提供者必須先拆分它們。