Herramientas de HydroBID Flood¶
Ejecución automatizada por lotes de simulaciones del modelo¶
Puede ejecutar varias simulaciones de HydroBID Flood mediante scripts por lotes. Al controlar las ejecuciones del modelo mediante scripts por lotes, se recomienda activar la opción de salida Automatic Close of Model Windows en la interfaz DIP para garantizar una ejecución ininterrumpida.
Hay dos métodos disponibles para ejecutar varias simulaciones mediante scripts por lotes:
- Usar un script de MS-DOS guardado en un archivo.
- Usar un script escrito en el lenguaje de programación Python.
Note
Nota: los archivos de script descritos en este capítulo se pueden descargar mediante el siguiente enlace:
Uso de un script de MS-DOS para ejecutar varias simulaciones por lotes¶
C:
cd "C:\Program Files\Hydronia\RiverFlow2D"
HydroBIDFlood "D:\HydroBIDFlood\Projects\ProjectA\Scenario1\Run1" > "D:\HydroBIDFlood\Projects\ProjectA\Scenario1\Run1_batch.log"
HydroBIDFlood "D:\HydroBIDFlood\Projects\ProjectA\Scenario2\Run2" > "D:\HydroBIDFlood\Projects\ProjectA\Scenario2\Run2_batch.log"
Warning
El nombre del archivo de registro redirigido no debe coincidir con <projectname>.log. El motor RiverFlow2D escribe su propio archivo de registro con ese nombre exacto y, si se redirige al mismo archivo, este queda bloqueado durante la ejecución del comando e impide que se inicie el visor RiverFlow2D Plus. Use un sufijo diferente, como _batch.log (tal como se muestra arriba), o no incluya la redirección.
Las líneas de comentario en los archivos por lotes de MS-DOS deben comenzar con REM o ::. El carácter % inicia la expansión de variables; por eso, cualquier línea que comience con % se analizará y ejecutará como un comando en lugar de ignorarse como comentario.
Uso de un script de Python dentro de QGIS para ejecutar varias simulaciones por lotes¶
Este script se ejecuta dentro de la Consola de Python de QGIS, pero tiene la desventaja de bloquear QGIS mientras se ejecutan los modelos.
# -*- coding: utf-8 -*-
from subprocess import call
rf2d_path = r"C:\Program Files\Hydronia\RiverFlow2D\RiverFlow2dm5 "
dat_paths = [
r"C:\Users\hydronia\Documents\RiverFlow2D_QGIS\ExampleProjects\MUDTutorial\MUD_Tutorial",
r"C:\Users\hydronia\Documents\RiverFlow2D_QGIS\ExampleProjects\MUDTutorial2\MUD_Tutorial"
]
for path in dat_paths:
prjPath = rf2d_path + path
call(prjPath)
Uso de un script de Python mediante un archivo por lotes para ejecutar varias simulaciones¶
Este script también se ejecuta desde QGIS, pero crea un archivo .BAT que no bloquea QGIS mientras se ejecutan los modelos.
# -*- coding: utf-8 -*-
import tempfile
import subprocess
tmpdir = tempfile.mkdtemp(prefix='rf2qgis')
temp = os.path.join(tmpdir, "temp.bat")
dat_paths = [
r"C:\Users\hydronia\Documents\RiverFlow2D_QGIS\ExampleProjects\MUDTutorial\MUD_Tutorial",
r"C:\Users\hydronia\Documents\RiverFlow2D_QGIS\ExampleProjects\MUDTutorial2\MUD_Tutorial"
]
with open(temp, "w") as f:
f.write("C:\n")
f.write('cd "C:\Program Files\Hydronia\RiverFlow2D"\n')
for path in dat_paths:
f.write('RiverFlow2dm5 "' + path + '" > "' + QFileInfo(path).absolutePath +
'/Run.log" \n')
subprocess.Popen(temp, shell=True)