Advertisement
peth31

Ploteo Viento y Presión en Superficie

May 20th, 2019
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.57 KB | None | 0 0
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. """
  4. Created on Thu May 16 21:53:49 2019
  5.  
  6. @author: pedroherreralormendez
  7. """
  8.  
  9. import numpy as np
  10. import matplotlib.pyplot as plt
  11. from mpl_toolkits.basemap import Basemap
  12. from netCDF4 import Dataset
  13.  
  14. '''Lectura archivos verano'''
  15. u_ver = Dataset('u_verano.nc')      #Lectura archivo u_verano
  16. v_ver = Dataset('v_verano.nc')      #Lectura archivo v_verano  
  17.  
  18. '''Lectura archivos invierno'''
  19. u_inv = Dataset('u_invierno.nc')    #Lectura archivo u_invierno    
  20. v_inv = Dataset('v_invierno.nc')    #Lectura archivo v_invierno
  21.  
  22. print ('Las variables de u son: ' + str(u_ver.variables.keys()))
  23. print ('Las variables de v son: ' + str(v_ver.variables.keys()))
  24.  
  25. '''Lectura archivos presión'''
  26. p_inv = Dataset('p_inv.nc')
  27. p_ver = Dataset('p_ver.nc')
  28.  
  29. '''Extracción de datos'''
  30.  
  31. lat = u_ver.variables['lat'][:]     #Extracción de datos de latitud
  32. lon = u_ver.variables['lon'][:]     #Extracción de datos de longitud
  33.  
  34. ###############
  35. # No hay necesidad de extraer lat y lon en cada archivo ya que
  36. # el arreglo de latitudes y longitudes es el mismo para todos los casos
  37. ###############
  38. '''u y v Verano'''
  39. u_ver_data = u_ver.variables['uwnd'][:] #Extracción de datos u verano
  40. v_ver_data = v_ver.variables['vwnd'][:] #Extracción de datos v verano
  41.  
  42. viento_ver = np.sqrt((u_ver_data**2) + (v_ver_data**2))*3.6 #Calculo de la Magnitud del viento Verano
  43. '''u y v Invierno'''
  44. u_inv_data = u_inv.variables['uwnd'][:] #Extracción de datos de u invierno
  45. v_inv_data = v_inv.variables['vwnd'][:] #Extracción de datos de v invierno
  46. viento_inv = np.sqrt((u_inv_data**2) + (v_inv_data**2))*3.6 #Calculo de la Magnitud del viento Invierno
  47.  
  48. '''Presión Verano e Invierno'''
  49. p_inv_data = p_inv.variables['slp'][:]
  50. p_ver_data = p_ver.variables['slp'][:]
  51.  
  52. East = 359.0
  53. West = 220.0
  54. North = 70.0
  55. South = 0.00
  56.  
  57. '''Ploteo del viento en Verano'''
  58. plt.figure(figsize=(12,8))
  59. m = Basemap(projection='cyl', llcrnrlon = West, \
  60.         urcrnrlon = East,llcrnrlat = South,urcrnrlat = North, \
  61.         resolution='l')
  62. m.drawcoastlines()
  63. m.drawcountries()
  64. m.drawparallels(np.arange(-90.,120.,10.), labels=[True,False,True,False])
  65. m.drawmeridians(np.arange(0.,360.,10.),labels=[True,False,False,True])
  66.  
  67. lons, lats= np.meshgrid (lon, lat)
  68. x,y=m(lons, lats)
  69.  
  70. cb = m.contourf(x,y,viento_ver[0,:,:], cmap='cubehelix_r')
  71. m.quiver(x,y,u_ver_data[0,:,:], v_ver_data[0,:,:])  #Plotea vectores
  72. cs = m.contour(x,y,p_ver_data[0,:,:],20, colors = 'k')
  73. m.colorbar(cb, label = 'Km/h')
  74. plt.clabel(cs, inline=1, fontsize=10)
  75. plt.title('Climatología Viento en Superficie y Presión \n JJA 1985-2015')
  76. plt.savefig('Viento_verano.png')
  77.  
  78. '''Ploteo del viento en Invierno'''
  79. plt.figure(figsize=(12,8))
  80. m = Basemap(projection='cyl', llcrnrlon = West, \
  81.         urcrnrlon = East,llcrnrlat = South,urcrnrlat = North, \
  82.         resolution='l')
  83. m.drawcoastlines()
  84. m.drawcountries()
  85. m.drawparallels(np.arange(-90.,120.,10.), labels=[True,False,True,False])   #Dibuja las líneas de latitud
  86. m.drawmeridians(np.arange(0.,360.,10.),labels=[True,False,False,True])      #Dibuja las líneas de longitud
  87.  
  88. lons, lats= np.meshgrid (lon, lat)
  89. x,y=m(lons, lats)
  90.  
  91. cb = m.contourf(x,y,viento_inv[0,:,:], cmap='cubehelix_r')
  92. m.quiver(x,y,u_inv_data[0,:,:], v_inv_data[0,:,:])  #Plotea los vectores
  93. cs = m.contour(x,y,p_inv_data[0,:,:], 20,colors = 'k')
  94. m.colorbar(cb,label = 'Km/h')
  95. plt.clabel(cs, inline=1, fontsize=10)
  96. plt.title('Climatología Viento en Superficie y Presión \n DJF 1985-2015')
  97. plt.savefig('Viento_invierno.png') #Guarda la figura con un nombre y extensión .png
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement