Skip to content

Commit

Permalink
se corrige error en el balance de largo plazo, se habilita boton para…
Browse files Browse the repository at this point in the history
… pasar variable a red hidrica en Nc y WMF, en WMF todavia no funciona por un problea aun no explorado
  • Loading branch information
nicolas998 committed Sep 7, 2018
1 parent b388d75 commit 46ce51c
Show file tree
Hide file tree
Showing 5 changed files with 207 additions and 279 deletions.
31 changes: 22 additions & 9 deletions qgisplugin/HydroSEDPluginUtils.py
Original file line number Diff line number Diff line change
Expand Up @@ -142,17 +142,33 @@ def BasinNc2Network(self,pathNetwork, names):
umbral = self.cuenca.umbral,
EPSG = int(self.cuenca.epsg),
Dict = DicVar)

def BasinWMF2Network(self,pathNetwork, names):
'''Guarda una red hidrica con las variables seleccionadas del diccionario NC'''
# genera el diccionario de las variables a guardar
DicVar = {}
for n in names:
DicVar.update({n.encode():self.DicBasinWMF[n]['var'].data})
print DicVar
#Guarda la red hidrica
self.cuenca.Save_Net2Map(pathNetwork, wmf.cu.dxp,
umbral = self.cuenca.umbral,
EPSG = int(self.cuenca.epsg),
Dict = DicVar)

def hidologia_balance(self, dxp, umbral, PathRain, PathETR, PathQmed):
def hidologia_balance(self, dxp, umbral, PathRain, PathETR):
#Se fija si la lluvia es un path o un valor
try:
Rain = float(PathRain)
except:
Rain, prop, epsg = wmf.read_map_raster(PathRain)
if epsg == self.cuenca.epsg:
Rain = self.cuenca.Transform_Map2Basin(Rain, prop)
else:
return 1, 1
#Trata de sacarlo del WMF
try:
Rain = np.copy(self.DicBasinWMF[PathRain]['var'])
except:
try:
Rain = np.copy(self.DicBasinNc[PathRain]['var'])
except:
return 1
#Realiza el balance
self.cuenca.GetQ_Balance(Rain, Tipo_ETR = PathETR)
#Actualiza el diccionario de WMF
Expand Down Expand Up @@ -184,9 +200,6 @@ def hidologia_balance(self, dxp, umbral, PathRain, PathETR, PathQmed):
'categoria': 'Hidro',
'var': Runoff,
'saved':False}})
# Guarda el resultado
if len(PathQmed)>2:
self.cuenca.Save_Net2Map(PathQmed, dxp, umbral, qmed = self.cuenca.CellQmed)
#Retorna el resultado a la salida
return 0,self.cuenca.CellQmed[-1]

Expand Down
58 changes: 37 additions & 21 deletions qgisplugin/HydroSEDPlugin_dockwidget.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
* (at your option) any later version. *
* *
***************************************************************************/
comando para cargar todos los iconos: pyrcc4 -o resources.py resources.qrc
"""

import os
Expand Down Expand Up @@ -70,7 +71,8 @@ def __init__(self, iface = None, parent=None):

self.TablaFila_WMF = 0
self.TablaFila_NC = 0
self.botonClicked = False
self.botonClicked_NC = False
self.botonClicked_WMF = False
self.segundaCarga = False
self.Segunda_carga_Qobs = False
self.Segunda_carga_Qobs_Sed = False
Expand Down Expand Up @@ -175,7 +177,7 @@ def clickEventSelectShape2SaveNc():

def SelectNetworkshapeDialog (fileDialogHolder):
'''Hace que cuando se busquen shapes solo se encuetren formatos vectoriales'''
lineEditHolder = fileDialogHolder.getOpenFileName (QtGui.QDialog (), "Guardar en capa vectorial...", "*", "Shapefiles (*.shp);;")
lineEditHolder = fileDialogHolder.getSaveFileName (QtGui.QDialog (), "Guardar en capa vectorial...", "*", "Shapefiles (*.shp);;")
return lineEditHolder
#if ((os.path.exists (lineEditHolder.text ().strip ())) and (not (self.iface is None))):
# self.iface.addVectorLayer (lineEditHolder.text ().strip (), os.path.basename (lineEditHolder.text ()).strip (), "ogr")
Expand Down Expand Up @@ -252,25 +254,47 @@ def clickEventBasinLoadNetwork():

def clickEventBasinVarNC2Network():
'''Convierte un conjunto de variables a una red hidrica de la cuenca'''
if self.botonClicked is False:
if self.botonClicked_NC is False:
#Hace que la seleccion sea multiple en la columna de NC
self.Tabla_Prop_NC.setSelectionMode(QAbstractItemView.MultiSelection)
self.ruta2Network = ''
#imprime las variables seleccionadas
self.Vars2Network = []
self.botonClicked = True
self.ButtonVar2Net_NC.setText('Variables')
self.botonClicked_NC = True
return
elif self.botonClicked is True:
elif self.botonClicked_NC is True:
for i in self.Tabla_Prop_NC.selectedItems()[::4]:
self.Vars2Network.append(i.text())
#En el segundo click selecciona el archivo y ejecuta
self.ruta2Network = SelectNetworkshapeDialog(QFileDialog)
self.Tabla_Prop_NC.setSelectionMode(QAbstractItemView.SingleSelection)
self.botonClicked = False
self.botonClicked_NC = False
#Guardado de las variables en formato red hidrica
self.HSutils.BasinNc2Network(self.ruta2Network,self.Vars2Network)
self.ButtonVar2Net_NC.setText('Var2Net')
self.iface.messageBar().pushMessage (u'Hydro-SIG:', u'Las variables seleccionadas han sido convertidas a la red hidrica',
level=QgsMessageBar.INFO, duration=3)

def clickEventBasinVarWMF2Network():
'''Convierte un conjunto de variables a una red hidrica de la cuenca'''
if self.botonClicked_WMF is False:
#Hace que la seleccion sea multiple en la columna de NC
self.Tabla_Prop_WMF.setSelectionMode(QAbstractItemView.MultiSelection)
self.ruta2Network = ''
#imprime las variables seleccionadas
self.Vars2Network = []
self.botonClicked_WMF = True
return
elif self.botonClicked_WMF is True:
for i in self.Tabla_Prop_WMF.selectedItems()[::4]:
self.Vars2Network.append(i.text())
#En el segundo click selecciona el archivo y ejecuta
self.ruta2Network = SelectNetworkshapeDialog(QFileDialog)
self.Tabla_Prop_WMF.setSelectionMode(QAbstractItemView.SingleSelection)
self.botonClicked_WMF = False
#Guardado de las variables en formato red hidrica
self.HSutils.BasinWMF2Network(self.ruta2Network,self.Vars2Network)
self.iface.messageBar().pushMessage (u'Hydro-SIG:', u'Las variables seleccionadas han sido convertidas a la red hidrica',
level=QgsMessageBar.INFO, duration=3)

#Botones para variables de entrada
self.botonSelectorProyectBasin.clicked.connect(clickEventSelectorBasin)
Expand All @@ -280,6 +304,7 @@ def clickEventBasinVarNC2Network():
self.Boton_verRedHidrica.clicked.connect(clickEventBasinLoadNetwork)
#boton para convertir variables a red hidrica
self.ButtonVar2Net_NC.clicked.connect(clickEventBasinVarNC2Network)
self.ButtonVar2Net_WMF.clicked.connect(clickEventBasinVarWMF2Network)


def setupGeomorfologia(self):
Expand Down Expand Up @@ -589,32 +614,23 @@ def hadleClickEventEjecutarBalance():
Retorno, QSalida = self.HSutils.hidologia_balance(self.spinBox_dxPlano.value(),
self.spinBoxUmbralRed.value(),
self.PathInHydro_Rain.text(),
TipoETR,
self.PathOutHydro_Qmed.text())
TipoETR)
#Pone el valor de cadual medio en el cuadro
textoCaudal = '%.3f' % QSalida
self.ShowResultQmed.setText(textoCaudal)
#Mensaje de exito
if Retorno == 0:
self.iface.messageBar().pushInfo(u'HidroSIG:',u'Balance realizado: variables Caudal, ETR y Runoff cargadas a Tabla de propiedades WMF.')
self.iface.messageBar().pushMessage(u'HidroSIG:',
u'Balance realizado: variables Caudal, ETR y Runoff cargadas a Tabla de propiedades WMF.',
level=QgsMessageBar.INFO, duration=3)
else:
self.iface.messageBar().pushMessage (u'Hydro-SIG:',
u'No se ha logrado realizar el balance hidrológico en la cuenca',
level=QgsMessageBar.WARNING, duration=3)
#Habilita botones de visualizacion de variables
if len(self.PathOutHydro_Qmed.text()) > 2:
self.Button_HidroViewQmed.setEnabled(True)
#Actualiza la tabla de variables temporales y actualiza comboBox de gomorfo
for k in ['Caudal','ETR','Runoff']:
self.TabWMF.NewEntry(self.HSutils.DicBasinWMF[k],k, self.Tabla_Prop_WMF)

#Botones para variables de entrada
self.Boton_HidroLoadRain.clicked.connect(clickEventSelectorRaster)
#Botones para variables de salida
self.Button_HidroSaveQmed.clicked.connect(clickEventOutQmed)
#Botones para visualizar variables
self.Button_HidroViewRain.clicked.connect(clickEventViewRainfall)
self.Button_HidroViewQmed.clicked.connect(clickEventViewQmedNetwork)
#Botones para ejecutar
self.Butto_Ejec_HidroBalance.clicked.connect(hadleClickEventEjecutarBalance)

Expand Down
Loading

0 comments on commit 46ce51c

Please sign in to comment.