2017-06-05 1 views
0

J'essaie de tracer des données de précipitation, à partir d'un fichier netCDF4, sur un fond de carte en utilisant python 3.6. Le code que j'utilise a parfaitement fonctionné sur un ensemble de données très similaire. La seule différence étant que les données de précipitation précédentes étaient en «cm» alors que les données que j'essaie actuellement de tracer sont en «kg m-2 s-1». Les variables trouvées dans ce fichier sont time, time_bnds, lat, lat_bnds, lon, lon_bnds et pr. pr est la variable de précipitation et celle que je cherche à tracer.Changement d'unités Python sur une carte de base

Voici mon code

from mpl_toolkits.basemap import Basemap, cm 
from netCDF4 import Dataset as NetCDFFile 
import matplotlib.pyplot as plt 

nc = NetCDFFile('filename.nc','r') 

p = nc.variables['prc'] 
data = p[:,:,0] 

fig = plt.figure(figsize=(8,8)) 
ax = fig.add_axes([0.1,0.1,0.8,0.8]) 

m = Basemap(projection='cyl',lon_0=180,lat_0=0,resolution='l') 

m.drawcoastlines() 
m.drawstates() 
m.drawcountries() 


ny = data.shape[0]; nx = data.shape[1] 
lons, lats = m.makegrid(nx,ny) 
x,y = m(lons, lats) # compute map proj coordinates. 

cs=plt.contourf(x,-y,data*2592000,range(0,1000,10),cmap=cm.s3pcpn,latlon=True) 

#data is multiplied by the amount of seconds in a month 

cbar = m.colorbar(cs,location='bottom',pad="5%") 
cbar.set_label('mm') 

plt.show() 

Si vous voulez essayer et exécuter ce code avec le même dossier que je l'utilise est un fichier netCDF4 a été téléchargé sur le site CMIP5: http://pcmdi9.llnl.gov/ Mon nom de fichier: (/ données /CCSM4/pr_Amon_CCSM4_historical_r1i1p1_185001-200512.nc) Toutefois, les données d'origine sont au format netCDF3_CLASSIC, vous devez donc le remplacer par netCDF4.

+0

Y at-il une erreur que nous devrions connaître? –

+0

Je ne reçois pas de message d'erreur lorsque j'exécute ce code, mais affiche une carte avec des couleurs aléatoires. Mais ce n'est pas la façon dont les données de précipitations sont censées regarder et je suppose que c'est parce que les unités sont fausses. @WoodyPride – CPG

Répondre

1

Si le seul changement est dans les unités pour combien de précipitations, qu'en est-il de convertir les données en cm, de cette façon vous savez que cela fonctionnera et vous êtes déjà familier avec la façon d'interpréter les données. Vous pourriez même écrire une fonction pour le convertir. Si vous le convertissez, et qu'il est dans le même format que vous envisagez de travailler, mais que cela ne fonctionne toujours pas, vous aurez constaté qu'il y a quelque chose d'autre qui ne va pas dans vos données. .