假设您以GeoJSON格式表示科罗拉多州
{"type": "Polygon",
"coordinates": [[
[-102.05, 41.0],
[-102.05, 37.0],
[-109.05, 37.0],
[-109.05, 41.0]
]]}
所有坐标都是经度,纬度。您可以使用pyproj投影坐标和Shapely来查找任何投影多边形的面积:
co = {"type": "Polygon", "coordinates": [
[(-102.05, 41.0),
(-102.05, 37.0),
(-109.05, 37.0),
(-109.05, 41.0)]]}
lon, lat = zip(*co['coordinates'][0])
from pyproj import Proj
pa = Proj("+proj=aea +lat_1=37.0 +lat_2=41.0 +lat_0=39.0 +lon_0=-106.55")
这是一个相当的区域投影,集中在并包围感兴趣的区域。现在,将新的投影GeoJSON表示,变成一个Shapely几何对象,并采取以下区域:
x, y = pa(lon, lat)
cop = {"type": "Polygon", "coordinates": [zip(x, y)]}
from shapely.geometry import shape
shape(cop).area # 268952044107.43506
这是非常接近于被调查的地区。对于更复杂的功能,您需要在顶点之间的边缘进行采样,以获得准确的值。关于数据线等上方的所有注意事项都适用。如果您只对区域感兴趣,则可以在投影之前将您的功能从日期线转换出去。