Колючки ветра и векторы в Cartopy - проблема с regrid_shape

Недавно я переключился с базовой карты на Cartopy, и у меня возникли проблемы с нанесением векторов ветра. У меня есть северополярная стереографическая проекция (central_longitude = -100.0) с протяженностью [-180,180,10,90]. У меня есть набор данных netCDF со значениями ветра u, v каждые 0,5 градуса широты и долготы.

Если я рисую зазубрины с помощью slice, чтобы вручную пропустить определенное число (поскольку данные слишком плотные, чтобы отобразить их все), я получаю то, что кажется правильным представлением поля (см. Первое изображение ниже):

sknum = 15
skip=(slice(None,None,sknum),slice(None,None,sknum))
ax.barbs(lons[skip], lats[skip], u[skip],v[skip], length=6,
             sizes=dict(emptybarb=0.25, spacing=.2, height=0.5),
             zorder = 20,
             linewidth=0.95, transform= ccrs.PlateCarree())

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

ax.barbs(lons, lats, u,v, length=6,
         sizes=dict(emptybarb=0.25, spacing=.2, height=0.5),
         zorder = 20,
         linewidth=0.95, transform= ccrs.PlateCarree(),  regrid_shape=20)

Является ли это ошибкой для regrid_shape в этой проекции, я что-то делаю не так и / или есть ли другой способ получить естественно выглядящие векторы?

Пропустить изображение вручную  Regrid_Shape = 20 изображение


person MeteoMtl    schedule 12.01.2017    source источник


Ответы (1)


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

person ajdawson    schedule 27.01.2017
comment
Отлично, теперь отлично работает - спасибо! Возможно, это можно было бы обработать в самой функции или упомянуть в документации? Я не подозреваю, что это слишком редкая проблема, поскольку я использую данные повторного анализа (CFSR) в координатах широта / долгота. - person MeteoMtl; 29.01.2017