Построение картографических данных с использованием картографии с использованием NorthPolarStereo - PullRequest
0 голосов
/ 27 февраля 2020

Я перехожу из Базовой карты в Картопу и хочу построить данные для Океана Arcti c, который покрывает полюс.

Я решил использовать проекцию NorthPolarStereo () и счастлив использовать либо pcolorme sh, либо контур. К сожалению, мое поле данных не отображается, когда я выполняю следующий код:

import cartopy.crs as ccrso
from netCDF4 import Dataset


def import_envisat_field(year,
                         month):

    data_dir = f'/media/robbie/Seagate Portable Drive/Envisat_thickness/{year}/'
    file = f'ESACCI-SEAICE-L3C-SITHICK-RA2_ENVISAT-NH25KMEASE2-{year}{month}-fv2.0.nc'
    data = Dataset(data_dir+file)

    return(data)

# Import data

data = import_envisat_field("2003","02")

# Make plot

fig = plt.figure(figsize=[10, 5])
ax = plt.axes(projection=ccrs.NorthPolarStereo())

ax.add_feature(cartopy.feature.OCEAN, zorder=0)
ax.add_feature(cartopy.feature.LAND, zorder=1, edgecolor='black')

extent = 2500000

ax.set_extent((-extent,
               extent,
               -extent,
               extent),
              crs=ccrs.NorthPolarStereo())

ax.gridlines()

lon = np.array(data['lon'])
lat = np.array(data['lat'])
field = np.array(data['sea_ice_thickness'])[0]

print(lon.shape,lat.shape,field.shape)
# This print command gives (432, 432) (432, 432) (432, 432)

plt.pcolormesh(lon, lat, field,zorder=2,
             transform=ccrs.NorthPolarStereo())

plt.show()

Данные отображаются простым способом с использованием базовой карты, но выполнение приведенного выше кода просто дает мне хорошее представление о Arcti c океан, но без моих данных об этом.

Я также пытался заменить plt.pcolorme sh на ax.pcolorme sh, но это тоже не сработало.

Вывод карт:

What I get with Cartopy

Вывод базовой карты с теми же данными:

What I get with Basemap

1 Ответ

0 голосов
/ 27 февраля 2020

Если ваши координаты данных - широта и долгота, вам нужно использовать преобразование PlateCarree:

plt.pcolormesh(lon, lat, field,zorder=2, transform=ccrs.PlateCarree())

Преобразование описывает координаты данных и не зависит от проекции, на которой вы хотите построить график. См. Это руководство в документации Cartopy для более подробной информации https://scitools.org.uk/cartopy/docs/latest/tutorials/understanding_transform.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...