Python
Python
"""
Spyder Editor
# Importar librerias
import fiona, numpy as np
import pylab as pl
from netCDF4 import Dataset
from pyscissor import scissor # pip install pyscissor
from cartopy.feature import ShapelyFeature
import cartopy.feature as cfeature
import pandas as pd
import cartopy.crs as ccrs
ncf = Dataset("D:/NESTOR/PPDIARIA/RAIN4PE_daily_0.1d_1981_2015_v1.0.nc")
cuenca = fiona.open("D:/NESTOR/PPDIARIA/cuenca_utm.shp")
print(cuenca.crs)
#cuenca_s18 = cuenca.to_crs(epsg=32718)
print(ncf)
# Ajustes generales para los plots..
from matplotlib.font_manager import *
from matplotlib.pylab import *
ioff()
rc(
'lines',
linewidth=1)
rc(
'text',
usetex=False)# Para poder usar 'usetex=True' es necesario haber instalado latex
rc(
'font',
family='Times New Roman')
font_title = FontProperties(size=24)
font_label = FontProperties(size=22)
font_ticks = FontProperties(size=16)
font_legend = FontProperties(size=15)
print(ncf.variables['time'])
lats =ncf.variables['Latitude'][:]
lons =ncf.variables['Longitude'][:]
prec =ncf.variables['pcp'][:]
times =ncf.variables['time'][:]
# calcular.. mascara para .shp
from shapely.geometry import shape
record = next(iter(cuenca))
shapely_shape = shape(record['geometry'])
ncf.variables
pys = scissor(shapely_shape,lats,lons)
wg = pys.get_masked_weight()
# Cuadricula ponderada
cart_ft =
ShapelyFeature([shapely_shape],ccrs.PlateCarree(),facecolor='none',edgecolor='cyan'
,linewidth=2)
# plot
fig =pl.figure(figsize=(5,5))
ax=pl.axes(projection=ccrs.PlateCarree())
pl.pcolormesh(lons,lats,wg,cmap='ocean',shading='nearest')
pl.colorbar()
ax.set_title("$Cuenca\ Cachi$", fontproperties=font_title)
ax.add_feature(cart_ft)
ax.set_xlim(-74.8, -73.8)
ax.set_ylim(-13.6,-12.8)
pl.show()
# Asignar mascara
prec.mask=wg.mask
for t in range(times.shape[0]):
prec_prom[t] = np.average(prec[t],weights=wg)
# plot
pl.figure(figsize=(12,5))
pl.plot(times,prec_prom,'o-',label='Precipitación promedio areal de cuenca', color=
'blue')
pl.legend(loc=2, prop=font_legend)
pl.xlabel("$Date\ (meses)$")
pl.grid('on', color='.8',linestyle='--')
pl.show()
# Guardas datos!!!
df= pd.DataFrame(prec_prom)
df
#df.to_csv("D:/T_JONA/TESIS_PISCO/Entrada/Pisco_Pp/Python_PISCO/Prec_areal.csv")