Os arquivos no formato NetCDF (Network Common Data Form) são muito utilizados para armazenamento de dados científicos, permitindo criação e acesso de mapas com várias coordenadas (como latitude, longitude, níveis verticais, tempo, etc). O Python possui bibliotecas para trabalhar com esses dados, como o netCDF4 e o xarray. O Cartopy também é um pacote Python projetado para processamento de dados geoespaciais a fim de produzir mapas, integrado com o pacote Matplotlib, e outras análises.
O script a seguir faz uso de um arquivo de exemplo do site da Unidata (membro dos Programas Comunitários da UCAR, University Corporation for Atmospheric Research), que deve ser baixado e salvo na mesma pasta do script – ou especificar o nome e caminho. Comentários ao longo do código explicam as linhas utilizadas. Baseado nesse tutorial de NetCDF.
Os parâmetros ‘vmin’ e ‘vmax’ indicam os limites da barra de cores, que podem ser fixos também – interessante para padronizar vários mapas. Para uma escala de cores (“colormap”) com mais variações, use “cmap = ‘gist_ncar'”. Para discretizar, adicione o parâmetro ‘levels=ALGUM_NÚMERO’.
#!/usr/bin/env python3.7.9 # -*- Coding: UTF-8 -*- import matplotlib.pyplot as plt # standard graphics library import xarray as xr import cartopy.crs as ccrs # cartographic coordinate reference system import cartopy.feature as cfeature # features such as land, borders, coastlines # Input variables var_name = 'tas' # air temperature at surface file_in = 'sresa1b_ncar_ccsm3-example.nc' file_out = 'map_{0}.png'.format(var_name) # Open the file as an xarray Dataset and display the metadata ds = xr.open_dataset(file_in) # Select DataArray from variable da = ds[var_name] plt.figure(dpi = 100) # open a new figure window and set the resolution ax = plt.axes(projection = ccrs.Mercator()) ax.coastlines() # use the default low-resolution coastline gl = ax.gridlines(draw_labels = True) # label all axes gl.top_labels = False # turn off top label gl.right_labels = False # turn off right label da.plot(x = 'lon', y = 'lat',\ cmap = 'jet', vmin = da.min(), vmax = da.max(),\ transform = ccrs.PlateCarree()) plt.title(var_name) #plt.show() plt.savefig(file_out,bbox_inches='tight') # Save image as PNG file without large white borders
Para executar o script em um terminal Linux, copie o código para um editor de texto simples (como o bloco de notas) e salve o arquivo com um nome terminado com “.py”, para então executar o comando “python NOME_DO_SCRIPT.py”.