In [46]:
%matplotlib inline
from wmf import wmf
import numpy as np
import pylab as pl
import datetime as dt
import os
import pandas as pd
import pickle
import plot_y_tablas as pyt
from scipy import stats as stat
In [97]:
from IPython.display import HTML
HTML('''<script>
code_show=true;
function code_toggle() {
if (code_show){
$('div.input').hide();
} else {
$('div.input').show();
}
code_show = !code_show
}
$( document ).ready(code_toggle);
</script>
<form action="javascript:code_toggle()"><input type="submit" value="Click here to toggle on/off the raw code."></form>''')
Out[97]:
Lectura de mapas de direcciones y de elevación:
In [100]:
cuCap = wmf.SimuBasin(0,0,0,0,rute='/media/nicolas/discoGrande/01_SIATA/nc_cuencas/Picacha_Abajo.nc')
In [6]:
#Guarda Vector de la cuenca
cuCap.Save_Basin2Map('/media/nicolas/discoGrande/01_SIATA/vector/Cuenca_AltaVista2.shp')
In [7]:
cuCap.Save_Net2Map('/media/nicolas/discoGrande/01_SIATA/vector/Red_Altavista_Abajo.shp',dx = 12.7, umbral=470)
In [8]:
cuCap.GetGeo_Parameters()
In [9]:
cuCap.Tc
Out[9]:
In [24]:
#Parametros Geomorfologicos de las cuencas
cuCap.GetGeo_Parameters(rutaParamASC=ruta_images+'param_cap.txt',
plotTc=True,
rutaTcPlot=ruta_images+'Tc_cap.png')
No se tienen en cuenta los tiempos de concentración de campo y munera y Giandotti, los demás si, se tiene como tiempo de concentración medio un valor de $T_c = 2.69 hrs$
In [26]:
0.58*60.0
Out[26]:
In [10]:
#Tiempo medio y mapas de tiempos de viajes
TcCap = np.array(cuCap.Tc.values()).mean()
#Calcula tiempos de viajes
cuCap.GetGeo_IsoChrones(TcCap, Niter= 6)
In [12]:
#Figura de tiempos de viaje
cuCap.Plot_basin(cuCap.CellTravelTime,
ruta = '/media/nicolas/discoGrande/01_SIATA/ParamCuencas/AltaVistaAbajo/IsoCronas.png',
lines_spaces=0.01)
Este mapa debe ser recalculado con una mayor cantidad de iteraciones, lo dejamos haciendo luego, ya que toma tiempo, de momento esta malo.
In [13]:
ruta_images = '/media/nicolas/discoGrande/01_SIATA/ParamCuencas/AltaVistaAbajo/'
In [14]:
cuCap.Plot_Travell_Hist(ruta=ruta_images + 'Histogram_IsoCronas.png')
In [15]:
cuCap.GetGeo_Cell_Basics()
cuCap.GetGeo_Ppal_Hipsometric(intervals=50)
In [16]:
cuCap.Plot_Hipsometric(normed=True,ventana=10, ruta=ruta_images+'Hipsometrica_Captacion.png')
In [17]:
cuCap.PlotPpalStream(ruta=ruta_images+'Perfil_cauce_ppal_Capta.png')
El cauce principal presenta un desarrollo típico de una cuenca mediana-grande, en donde de ve claramente una zona de producción de sedimentos entre los 0 y 10 km, y de los 10km en adelante se presenta una zona de transporte y depositación con pendientes que oscilan entre 0.0 y 0.8 %
In [18]:
cuCap.PlotSlopeHist(bins=[0,2,0.2],ruta=ruta_images+'Slope_hist_cap.png')
El histograma de pendientes muestra que gran parte de las pendientes son inferiores al 0.6, por lo cual se considera que el cauce ppal de la cuenca se desarrolla ppalmente sobre un valle.
In [19]:
cuCap.GetGeo_HAND()
In [20]:
cuCap.Plot_basin(cuCap.CellHAND_class, ruta=ruta_images+'Map_HAND_class.png', lines_spaces=0.01)
In [21]:
cuCap.Plot_basin(cuCap.CellSlope, ruta=ruta_images + 'Map_Slope.png', lines_spaces=0.01)
El mapa de pendientes muestra como las mayores pendientes en la cuenca se desarrollan en la parte alta de la misma, en la medida en que se observa el desarrollo de la cuenca en la zona baja esta muestra claramente como las pendientes comienzan a ser bajas.
In [22]:
IT = cuCap.GetGeo_IT()
cuCap.Plot_basin(IT, ruta = ruta_images+'Indice_topografico.png', lines_spaces= 0.01)
Calculo de caudales medio de largo plazo mediante el campo de precipitación estimado para la zona mediante el uso de las estaciones del IDEAM
In [83]:
Precip = 1650
cuCap.GetQ_Balance(Precip)
cuCap.Plot_basin(cuCap.CellETR, ruta=ruta_images+'Map_ETR_Turc.png', lines_spaces=0.01)
cuCap.GetQ_Balance(Precip)
print 'Caudal Captacion:', cuCap.CellQmed[-1]
cuCap.Plot_basin(Precip - cuCap.CellETR, ruta = ruta_images+'Map_RunOff_mm_ano.png',
lines_spaces=0.01,
colorTable = 'jet_r')
In [74]:
#Periodos de retrorno para obtener maximos y minimos
Tr=[2.33, 5, 10, 25, 50, 100]
In [84]:
QmaxRegGum = cuCap.GetQ_Max(cuCap.CellQmed, Dist='gumbel', Tr= Tr, Coef = [6.71, 3.29], Expo = [1.2, 0.9])
QmaxRegLog = cuCap.GetQ_Max(cuCap.CellQmed, Dist='lognorm', Tr= Tr, Coef = [6.71, 3.29], Expo = [1.2, 0.9])
QminRegLog = cuCap.GetQ_Min(cuCap.CellQmed, Dist='lognorm', Tr= Tr,)
QminRegGum = cuCap.GetQ_Min(cuCap.CellQmed, Dist='gumbel', Tr= Tr,)
Se guarda el mapa con el caudal medio, y los maximos y minimos para toda la red hídrica de la cuenca
In [76]:
Dict = {'Qmed':cuCap.CellQmed}
for t,q in zip([2.33,5,10,25,50,100],QminRegGum):
Dict.update({'min_g'+str(t):q})
for t,q in zip([2.33,5,10,25,50,100],QminRegLog):
Dict.update({'min_l'+str(t):q})
for t,q in zip([2.33,5,10,25,50,100],QmaxRegGum):
Dict.update({'max_g'+str(t):q})
for t,q in zip([2.33,5,10,25,50,100],QmaxRegLog):
Dict.update({'max_l'+str(t):q})
In [37]:
cuCap.GetGeo_Parameters()
In [90]:
#Parametros pára maximos
TcCap = np.median(cuCap.Tc.values())
#CN = 50
CN=80
print 'tiempo viaje medio Captacion:', TcCap
print u'Número de curva:', CN
In [91]:
# Obtención de la lluvia de diseño.
Intensidad = [40.9, 49.5, 55.5, 60.6, 67.4, 75.7]
# Lluvia efectiva
lluviaTr,lluvEfect,S = cuCap.GetHU_DesingStorm(np.array(Intensidad),
TcCap,
CN=CN,
plot='si',
ruta=ruta_images + 'Q_max_LLuvia_Efectiva_descarga.png',
Tr=[2.33, 5, 10, 25, 50, 75, 100])
Se presenta en la figura como para diferentes periodos de retorno se da una pérdida de la cantidad de lluvia efectiva
In [92]:
#Calcula los HU para la descarga
Tscs,Qscs,HU=cuCap.GetHU_SCS(cuCap.GeoParameters['Area[km2]'],
TcCap,)
Tsnyder,Qsnyder,HU,Diferencia=cuCap.GetHU_Snyder(cuCap.GeoParameters['Area[km2]'],
TcCap,
Cp=0.8,
Fc=2.9)
#Cp=1.65/(np.sqrt(PendCauce)**0.38))
Twilliam,Qwilliam,HU=cuCap.GetHU_Williams(cuCap.GeoParameters['Area[km2]'],
cuCap.GeoParameters['Long_Cuenca [km]'],
780,
TcCap)
#Agrupa los hidrogramas unitarios para luego plotearlos
D = {'snyder':{'time':Tsnyder,'HU':Qsnyder},
'scs':{'time':Tscs,'HU':Qscs},
'williams':{'time':Twilliam,'HU':Qwilliam}}
#Hace el plot de ellos
cuCap.PlotHU_Synthetic(D,ruta=ruta_images + 'Q_max_HU.png')
Hidrogramas unitarios calibrados para la cuenca, williams muestra un rezago en este caso con las demás metodologías
In [78]:
#QmaxRegGum = cuCap.GetQ_Max(cuCap.CellQmed, Dist='gumbel', Tr= Tr, Coef = [6.71, 3.29], Expo = [1.2, 0.9])
#QmaxRegLog = cuCap.GetQ_Max(cuCap.CellQmed, Dist='lognorm', Tr= Tr, Coef = [6.71, 3.29], Expo = [1.2, 0.9])
In [98]:
#Realiza la convolucion de los hidrogramas sinteticos con la tormenta de diseno
HidroSnyder,QmaxSnyder,Tsnyder = cuCap.GetHU_Convolution(Tsnyder,Qsnyder,lluvEfect)
HidroWilliam,QmaxWilliam,Twilliam = cuCap.GetHU_Convolution(Twilliam,Qwilliam,lluvEfect)
HidroSCS,QmaxSCS,Tscs = cuCap.GetHU_Convolution(Tscs,Qscs,lluvEfect)
DicQmax = {#'Snyder':QmaxSnyder,
#'Williams':QmaxWilliam,
#'SCS': QmaxSCS,
'Gumbel': QmaxRegGum[:,-1],
'Log-Norm': QmaxRegLog[:,-1]}
#Plot de maximos
pyt.PlotQmaxTr(DicQmax,Tr,ruta=ruta_images + 'Q_max_Metodos_Tr_descarga.png')
#Tablas de maximos
DataQmax = pd.DataFrame(DicQmax, index=Tr)
#Escritura en excel.
writer = pd.ExcelWriter(ruta_images + 'Qmax_captacion.xlsx')
DataQmax.to_excel(ruta_images + 'Qmax_captacion.xls')
In [99]:
cuCap.GeoParameters
Out[99]:
In [ ]: