在Python中从lat/lon多边形计算面积

在Python中从lat/lon多边形计算面积,python,numpy,scipy,gis,geospatial,Python,Numpy,Scipy,Gis,Geospatial,基本上,我想知道一个0.25°lat x 0.25°lon面片在世界各地的各种多边形中拟合了多少次。后者的尺寸约为3°lat x 10°lon或2°lat x 4°lon 我有多边形角的lat/lon值,我计算它们的面积如下: from pyproj import Proj from shapely.geometry import shape def getArea(coords): c = {"type": "Polygon", "coordinates": [[ (coor

基本上,我想知道一个0.25°lat x 0.25°lon面片在世界各地的各种多边形中拟合了多少次。后者的尺寸约为3°lat x 10°lon或2°lat x 4°lon

我有多边形角的lat/lon值,我计算它们的面积如下:

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
我从这里开始着手:

现在的问题是,为了使多边形的面积大小具有可比性,我应该选择哪个等面积投影。小面片的面积总是相同的,无论它在这样的投影中位于地球上的什么位置

采用Albers等面积投影(aea)可得到三个多边形的这些区域:

  • 240993868.90978813
  • 699931593.1047173
  • 212092562.5238676
  • 采用Lambert方位角等面积投影(laea)可得到相同多边形的这些区域:

  • 148709452.69292444
  • 409253749.5468254
  • 106218747.36092758
  • 为什么两个投影区域之间的关系不同?前1:3=0.344;秒1:3=0.363;它们应该是一样的,因为它们都是等面积投影


    这让我怀疑,将小面片与任一投影中的多边形区域进行比较是否合法。你有什么建议吗?

    如果你关心实际的相对面积,数瓷砖不会给你正确的答案。 如果您需要实际的表面积,请使用椭球或球面几何体,或以下想法


    蛮力矢量法:生成全球范围的.25度网格作为多边形,与多边形相交,计算结果。每个多边形可以是笛卡尔正方形或实际的椭球正方形。为每个瓷砖创建自定义理想投影,然后计算面积并将其存储为每个瓷砖的属性。您只需这样做一次:)

    2°lat x 3°lon非常大,任何误差都会成比例地大。有不同投影的原因是没有投影是完美的,它根本不可能完美。我更新了面片/多边形的大小只是为了记录。嗯,你是说这种方法的误差越来越大?我还能尝试什么呢?唯一完美的方法是计算球体切口的表面积,而不投影它。否则,您必须根据对您很重要的属性来决定投影。“2x3面片的面积始终相同”-不正确。子午线度数约为111公里,赤道附近的纬度为1度。但随着位置从赤道移动到极点,后者会变小。也许你可以从中找到有用的东西