Shapely/PyProj 面积计算不匹配 Google Earth Engine 也不匹配 Geojson.io

Shapely/PyProj area calculation doesn't match Google Earth Engine nor Geojson.io

计算多边形的面积时,使用 shapely/pyproj 的结果与 google earth engine 或 geojson.io 的结果截然不同。我认为这与投影有关,在研究它时,我发现了诸如 (How do I get the area of a GeoJSON polygon with Python) 之类的示例,这些示例表明 Alders 等面积投影,但在 PyProj 的 2.1.3 版中似乎没有这些选项.我还想知道 google earth engine 和 geojson.io 是否有一种自动选择区域适当区域投影给定多边形区域的方法,但我不确定他们将如何选择这些区域。

例如:

coords = [(-97.59238135821987, 43.47456565304017),
 (-97.59244690469288, 43.47962399877412),
 (-97.59191951546768, 43.47962728271748),
 (-97.59185396090983, 43.47456565304017),
 (-97.59238135821987, 43.47456565304017)]

projection = partial(pyproj.transform, pyproj.Proj(init='epsg:4326'), pyproj.Proj(init='epsg:3857'))
shapely.ops.transform(projection, shapely.geometry.Polygon(sample_coords)).area

returns 面积 45573.993884405005 m^2.

Google 地球引擎 returns 23944.14737277293 和 Geojson.io returns 23997.77

我发现了这个问题并用 shapely https://github.com/Toblerity/Shapely/issues/726

做了一个相应的 github 问题

简而言之,shapely 使用的是另一种方法,其来源尚不清楚,而其他人使用的是 JPL 论文中描述的方法。