2012-10-30 297 views
3

基本上,我想知道0.25°lat x 0.25°lon補丁適合位於世界各地的各種多邊形的次數。後者的尺寸大約爲3°lat x 10°lon或2°lat x 4°lon。使用Python計算緯度/經度多邊形的面積

我有多邊形的角落的經/緯度值,我計算其面積是這樣的:

from pyproj import Proj 
from shapely.geometry import shape 

def getArea(coords): 
    c = {"type": "Polygon", 
    "coordinates": [[ (coords[0], coords[2]), (coords[1], coords[2]), 
         (coords[0], coords[3]), (coords[1], coords[3]) ]]} 
    lon, lat = zip(*c['coordinates'][0]) 
    pro = Proj("+proj=aea") 
    x, y = pro(lon, lat) 
    poly = {"type": "Polygon", "coordinates": [zip(x, y)]} 
    return shape(cop).area 

我從這裏的做法:How to calculate the area of a polygon on the earth's surface using python?

現在的問題是,我應該選擇相同的面積投影,以便具有可比較的多邊形面積大小。無論在這樣的投影中它在地球上的位置如何,小補丁的區域總是相同的。

以阿爾伯斯等面積投影(AEA)導致的三個多邊形這些方面:

  1. 240993868.90978813
  2. 699931593.1047173
  3. 212092562.5238676

以蘭伯特方位角等面積投影( laea)導致這些區域的相同多邊形:

  1. 148709452.69292444
  2. 409253749.5468254
  3. 106218747.36092758

爲什麼在兩個投影區域之間的關係有什麼不同?首先1:3 = 0.344;第二個1:3 = 0.363;他們應該是相同的,因爲兩者都是等面積投影?!

這讓我想知道在任一投影中比較小塊與多邊形區域是否合理。你有什麼建議嗎?

+1

2°lat x 3°lon是相當大的,任何錯誤都會成比例的大。而且有不同預測的原因是沒有投影是完美的,它根本不可能。 –

+0

我更新了修補程序/多邊形的大小以用於記錄。嗯,所以你說這個方法的錯誤越來越大了?我還能嘗試什麼? – HyperCube

+1

完美的唯一方法就是計算球體切割面的表面積而不是投影。否則,您必須根據對您而言重要的屬性決定投影。 –

回答

2

如果你關心實際的相對面積,計數瓷磚不會給你正確的答案。 如果您需要實際的表面積,請使用橢球體或球體幾何體,或者使用下面的想法。

蠻力矢量方法:生成全球範圍的.25度網格作爲多邊形,與多邊形相交,對結果進行計數。每個多邊形可以是笛卡爾正方形或實際的橢圓正方形。爲每個圖塊創建一個自定義的理想投影,然後計算並存儲該區域作爲每個圖塊的屬性。你只需要做一次:)

相關問題