Построение данных на карте работает только при последовательном программировании - PullRequest
0 голосов
/ 29 января 2020

Я установил картоп из пипса, используя Arch Linux. Пакеты актуальны. Я пытаюсь построить простой образец slp примеров, приведенных в официальной документации отсюда https://wrf-python.readthedocs.io/en/latest/plot.html с использованием картопий. Я скопировал код в текстовый редактор и запустил файл. Это произвело изображение как предназначено. Однако я хотел бы разделить карту и данные на две отдельные функции, чтобы упростить построение данных для большого числа переменных. Вот примеры функций, которые я создал: -

#!/usr/bin/env python3
from wrf import latlon_coords, to_np, get_cartopy, getvar, smooth2d, cartopy_xlim, cartopy_ylim
from netCDF4 import Dataset
import matplotlib.pyplot as plt
from cartopy.feature import NaturalEarthFeature, LAND, COASTLINE
from cartopy.mpl.gridliner import LONGITUDE_FORMATTER, LATITUDE_FORMATTER
import numpy as np
from datetime import datetime 

in_file = "/media/sundar/Data/WRF_DATA/wrfout_d03_2016-04-08_12_00_00"
in_nc_file = Dataset(in_file)

def plot_map_boundary(wrd_data, extent=False, stock_image=False):
    proj = get_cartopy_proj(wrd_data)
    fig, ax = plt.subplots(figsize=(8, 6), subplot_kw=dict(projection=proj))
    if stock_image is True:
        ax.stock_img()
    #ax.add_feature(LAND)
    ax.coastlines('50m', linewidth=0.8)
    gl = ax.gridlines(draw_labels=True)
    gl.xlabels_top = False
    gl.ylabels_right = False
    gl.xformatter = LONGITUDE_FORMATTER
    gl.yformatter = LATITUDE_FORMATTER

    # plt.savefig('test_netcdf.png', bbox_inches='tight')
    return fig, ax

def plot_wrf_data(wrf_data, wrf_var, fcst_day=None, subregion=False, resolution='med',
                  contour=True, cfill=False):
    data = get_wrf_var(wrf_data, wrf_var)
    smooth_slp = smooth2d(data, 3, cenweight=4)
    lats, lons = get_lat_lon(data)
    #proj = get_cartopy_proj(data)
    #print('proj', proj)
    fig, ax = plot_map_boundary(data)
    #ax = plt.axes(projection=proj)
    ax = plot_title(ax, get_title(wrf_var))
    cs = ax.contour(to_np(lons), to_np(lats), to_np(smooth_slp))
    plt.show()

    return fig, ax

plot_wrf_data(in_nc_file, 'slp')

Это приводит к изображению ниже без отображения фактических данных: - test_netcdf

Есть ли что-то, что мне не хватает? Любая помощь в решении проблемы приветствуется.

...