Полярная стереографическая проекция карты мира geopandas

#python #geopandas #cartopy

#python #geopandas #картография

Вопрос:

Я хочу использовать карту мира с низким разрешением, включенную в geopandas (см. Здесь ), в качестве фона для моих данных. Это работает нормально, пока я использую, например, проекцию «PlateCarree».

Если я теперь хочу использовать полярную стереографическую проекцию

 ccrs.NorthPolarStereo()
  

или

 ccrs.SouthPolarStereo()
  

Это не работает.

Мой код выглядит следующим образом (с использованием python 3)

 import geopandas as gpd
import cartopy.crs as ccrs

crs = ccrs.NorthPolarStereo()
crs_proj4 = crs.proj4_init
world = gpd.read_file(gpd.datasets.get_path("naturalearth_lowres"))
w = world.to_crs(crs_proj4)
w.plot(facecolor='sandybrown', edgecolor='black',)
  

Есть идеи, если полярные стереографические проекции просто не работают для этой карты (если да, то почему?) Или я делаю что-то не так?

Ответ №1:

При построении графика с определенной картографической проекцией лучше всего фактически создать фигуру и оси matplotlib с использованием cartopy, чтобы убедиться, что он знает о проекции (в техническом плане: чтобы убедиться, что это a GeoAxes , см. https://scitools.org.uk/cartopy/docs/latest/matplotlib/intro.html ):

 crs = ccrs.SouthPolarStereo()
crs_proj4 = crs.proj4_init
w = world.to_crs(crs_proj4)

fig, ax = plt.subplots(subplot_kw=dict(projection=crs))
w.plot(ax=ax, facecolor='sandybrown', edgecolor='black')
  

Однако, похоже, это все еще отображает фигуры, которые выходят за пределы экстента. Используя add_geometries метод картографии, это лучше учитывает степень:

 fig, ax = plt.subplots(subplot_kw=dict(projection=crs))
ax.add_geometries(w['geometry'], crs=crs, facecolor='sandybrown', edgecolor='black')
  

введите описание изображения здесь

На первый взгляд это выглядит немного странно (Антарктика посередине очень маленькая), но, похоже, этого следовало ожидать (см. https://scitools.org.uk/cartopy/docs/latest/crs/projections.html#southpolarstereo ).

В общем, смотрите Пример объединения геопанды и картографии в документах: https://geopandas.readthedocs.io/en/latest/gallery/cartopy_convert.html

Комментарии:

1. Да, это работает, спасибо. Однако на самом деле это не решает мою проблему, поскольку мне не только нужно строить график с использованием стереографической проекции, но и хочется иметь синий (или любой другой цветной) океан. Используя это, я, к сожалению, не могу этого добиться. Я включу это требование в свой первоначальный вопрос.

2. Изменение проблемы после того, как вы получили ответ, на самом деле не очень хорошо. Возможно, вы захотите принять этот ответ, поскольку он решает одну из ваших проблем, и задать новые вопросы с добавлением ваших новых требований. В будущем обязательно включите все требования с самого начала, чтобы вам было легче найти правильное решение вашей проблемы.