2016-06-21 68 views
-1

我有一組多邊形,每個多邊形都作爲Python中的一個字典(座標點符合NON凸多邊形),我想知道一個多邊形的百分比是多少由其他多邊形覆蓋。如何計算被另一個多邊形覆蓋的多邊形的百分比

我想舉一個例子來說明清楚。我有一個城市的不同交付覆蓋範圍,我有該城市不同社區的多邊形。我的問題是,我如何知道我所覆蓋的每個社區的百分比。

我將不勝感激任何幫助

+1

請告訴我們你到目前爲止嘗試過的東西。 – linusg

+0

我們得到了什麼假設?所有的內部多邊形都保證完全在外面?內部多邊形是否限制在一個外部多邊形中,或者是否有多個'delivery_coverages'跨越多個'neighborhoods'? – Delioth

+0

我不知道從哪裏開始說實話,我希望已經有一個包裝可以做到這一點。交付範圍也可以覆蓋多個社區。沒有一個多邊形完全在外面。 –

回答

0

有什麼併發症,你需要什麼。

  1. 點之間的縱向長度隨着緯度而減小。
  2. 多邊形是重疊還是完全包含在另一箇中。
  3. 是否有任何多邊形自身交叉。

在您的情況下,在大多數情況下,項目1可以被忽略。

如果多邊形不會交叉,並且一個完全包含在另一箇中,則下面的JavaScript函數可以轉換爲python。

function polygonArea(X, Y, numPoints) 
{ 
    area = 0;   // Accumulates area in the loop 
    j = numPoints-1; // The last vertex is the 'previous' one to the first 

    for (i=0; i<numPoints; i++) 
    { area = area + (X[j]+X[i]) * (Y[j]-Y[i]); 
     j = i; //j is previous vertex to i 
    } 
    return area/2; 
} 

當X & Y的座標的兩個多邊形然後用於%的arrays.The結果。

如果任何座標穿過素數子午線,所有多邊形的座標必須標準化。

如果需要實際區域,則計算可能非常複雜。

確認爲Darel Rex Finley的功能。

Here是Google地圖上的一個演示,顯示了綠色多邊形內粉紅色多邊形的%面積。這裏粉紅色的多邊形是在綠色的多邊形內。