Расчет площади Shapely/PyProj не соответствует Google Earth Engine или Geojson.io

При вычислении площади многоугольника результат с использованием shapely/pyproj сильно отличается от результатов, полученных с помощью движка Google Earth или geojson.io. Я подумал, что это как-то связано с проекцией, и, изучив ее, я нашел такие примеры, как (Как мне получить площадь полигона GeoJSON с помощью Python), которые предполагают проекции равной площади Олдерса, но, похоже, это не вариант в версии 2.1. 3 из ПиПродж. Мне также интересно, есть ли у движка Google Earth и 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

возвращает площадь 45573.993884405005 м^2.

Google Earth Engine возвращает 23944.14737277293, а Geojson.io возвращает 23997.77


person Brenton    schedule 04.06.2019    source источник


Ответы (1)


Я обнаружил проблему и создал соответствующую проблему на github с красивым https://github.com/Toblerity/Shapely/issues/726

Короче говоря, shapely использует другой метод, происхождение которого неясно, а другие используют метод, описанный в документе JPL.

person Brenton    schedule 05.06.2019