Расчет правильной площади для полигонов с помощью геопанд

Недавно я попытался рассчитать размеры страны с помощью географических карт и включенного файла мира; и я не могу рассчитать правильный размер для выбранных стран. Может кто подскажет, где я ошибся?

Пробовал различные шейп-файлы (и включенный файл мира, поставляемый с геопандами); все afaik в epsg: 4326

world = gpd.read_file(gpd.datasets.get_path('naturalearth_lowres'))
cnames = ['Austria','Sweden','Kenya']
epsgs = ['3857','3395']

for c in cnames:
    carea = world[world['name'] == c]
    for e in epsgs:
        carea = carea.to_crs(epsg=e)
        area = int(pd.to_numeric(carea['geometry'].area)/10**6)
        print(area)

Ожидаемые результаты:

  • Австрия: 83 879 км²
  • Швеция: 450 295 км²
  • Кения: 580 367 км²

Фактические результаты я получаю:

  • Австрия: 187163
  • Австрия: 186592
  • Швеция: 2190160
  • Швеция: 2187138
  • Кения: 595731
  • Кения: 591749

Значит, Кения довольно близко (тоже к экватору)? Неужели перепроецирование неверно?


person Gaelic Miko    schedule 10.08.2019    source источник


Ответы (1)


Чтобы получить правильную площадь, вы должны использовать «равновеликую» проекцию. Тот, который хорошо работает с вашим кодом, - epsg 6933. Представляет собой цилиндрический равновеликий выступ.

person swatchai    schedule 10.08.2019
comment
Спасибо, это многое проясняет. В этом вопросе они говорят о том, что 3395 - это равная площадь crs: gis.stackexchange.com/questions/218450/ одна из причин, по которой я был на неправильном пути :) - person Gaelic Miko; 10.08.2019