[GRASS-SVN] r71642 - in grass-addons/grass7/raster: . r.gsflow.hydrodem

svn_grass at osgeo.org svn_grass at osgeo.org
Wed Nov 8 06:48:27 PST 2017


Author: awickert
Date: 2017-11-08 06:48:27 -0800 (Wed, 08 Nov 2017)
New Revision: 71642

Added:
   grass-addons/grass7/raster/r.gsflow.hydrodem/
   grass-addons/grass7/raster/r.gsflow.hydrodem/Makefile
   grass-addons/grass7/raster/r.gsflow.hydrodem/r.gsflow.hydrodem.html
   grass-addons/grass7/raster/r.gsflow.hydrodem/r.gsflow.hydrodem.py
Log:
r.gsflow.hydrodem
Build a hydrologically-correct coarse-resolution DEM for GSFLOW, the USGS
groundwater--surface-water model.
This uses minimum elevations along the stream corridor and mean elevations
outside of the drainage network.


Added: grass-addons/grass7/raster/r.gsflow.hydrodem/Makefile
===================================================================
--- grass-addons/grass7/raster/r.gsflow.hydrodem/Makefile	                        (rev 0)
+++ grass-addons/grass7/raster/r.gsflow.hydrodem/Makefile	2017-11-08 14:48:27 UTC (rev 71642)
@@ -0,0 +1,8 @@
+MODULE_TOPDIR = ../..
+
+PGM = r.gsflow.hydrodem
+
+include $(MODULE_TOPDIR)/include/Make/Script.make
+
+default: script
+

Added: grass-addons/grass7/raster/r.gsflow.hydrodem/r.gsflow.hydrodem.html
===================================================================
--- grass-addons/grass7/raster/r.gsflow.hydrodem/r.gsflow.hydrodem.html	                        (rev 0)
+++ grass-addons/grass7/raster/r.gsflow.hydrodem/r.gsflow.hydrodem.html	2017-11-08 14:48:27 UTC (rev 71642)
@@ -0,0 +1,24 @@
+<h2>DESCRIPTION</h2>
+
+<em>r.gsflow.hydrodem</em> generates a hydrologically-correct MODFLOW DEM for GSFLOW based on higher-resolution flow routing. It does so by taking minimum grid cell elevations where streams are present, and mean grid cell elevations elsewhere, while coarsening the resolution to that of the specified MODFLOW grid resolution.
+
+<h2>REFERENCES</h2>
+
+Ng, G.-H. C., A. D. Wickert, R. L. McLaughlin, J. La Frenierre, S. Liess, and L. Sabeeri (2016),
+Modeling the role of groundwater and vegetation in the hydrological response of tropical
+glaciated watersheds to climate change, in AGU Fall Meeting Abstracts, H13L–1590, San
+Francisco, CA.
+
+<h2>AUTHORS</h2>
+
+Andrew D. Wickert<br>LSO</h2>
+<a href="v.gsflow.export">v.gsflow.export</a>
+<a href="v.gsflow.gravres">v.gsflow.gravres</a>
+<a href="v.gsflow.hruparams">v.gsflow.hruparams</a>
+<a href="v.gsflow.reaches">v.gsflow.reaches</a>
+<a href="v.gsflow.segments">v.gsflow.segments</a>
+<a href="v.gsflow.grid">v.gsflow.grid</a>
+<a href="v.stream.inbasin">v.stream.inbasin</a>
+<a href="v.stream.network">v.stream.network</a>
+
+<p><i>Last changed: $Date 2016-09-27$</i>

Added: grass-addons/grass7/raster/r.gsflow.hydrodem/r.gsflow.hydrodem.py
===================================================================
--- grass-addons/grass7/raster/r.gsflow.hydrodem/r.gsflow.hydrodem.py	                        (rev 0)
+++ grass-addons/grass7/raster/r.gsflow.hydrodem/r.gsflow.hydrodem.py	2017-11-08 14:48:27 UTC (rev 71642)
@@ -0,0 +1,135 @@
+#!/usr/bin/env python
+############################################################################
+#
+# MODULE:       r.gsflow.hydrodem
+#
+# AUTHOR(S):    Andrew Wickert
+#
+# PURPOSE:      Builds DEM of elevations for MODFLOW grid as part of GSFLOW,
+#               with minimum in-cell elevations chosen for channel cells in 
+#               order to maintain a hydrologically correct DEM
+#
+# COPYRIGHT:    (c) 2016-2017 Andrew Wickert
+#
+#               This program is free software under the GNU General Public
+#               License (>=v2). Read the file COPYING that comes with GRASS
+#               for details.
+#
+#############################################################################
+#
+# REQUIREMENTS: None (MODFLOW grid can be generated by v.gsflow.grid)
+ 
+# More information
+# Started October 2017
+
+#%module
+#% description: Creates hydrologically correct MODFLOW DEM from higher-res DEM
+#% keyword: vector
+#% keyword: stream network
+#% keyword: hydrology
+#% keyword: GSFLOW
+#% keyword: GSFLOW
+#%end
+
+#%option G_OPT_R_INPUT
+#%  key: dem
+#%  label: Input higher-resolution elevation data
+#%  required: yes
+#%end
+
+#%option G_OPT_V_INPUT
+#%  key: grid
+#%  label: MODFLOW grid
+#%  required: yes
+#%end
+
+#%option G_OPT_V_INPUT
+#%  key: streams
+#%  label: Vector map of stream network (lines)
+#%  required: yes
+#%end
+
+#%option
+#%  key: resolution
+#%  label: Target MODFLOW grid resolution
+#%  required: yes
+#%end
+
+#%option G_OPT_R_OUTPUT
+#%  key: streams_modflow
+#%  label: Stream network at MODFLOW grid resolution
+#%  required: yes
+#%end
+
+#%option G_OPT_R_OUTPUT
+#%  key: dem_modflow
+#%  label: Hydrologically corrected DEM at MODFLOW grid resolution
+#%  required: no
+#%end
+
+##################
+# IMPORT MODULES #
+##################
+# PYTHON
+import numpy as np
+from matplotlib import pyplot as plt
+import sys
+import warnings
+# GRASS
+from grass.pygrass.modules.shortcuts import general as g
+from grass.pygrass.modules.shortcuts import raster as r
+from grass.pygrass.modules.shortcuts import vector as v
+from grass.pygrass.modules.shortcuts import miscellaneous as m
+from grass.pygrass.gis import region
+from grass.pygrass import vector
+from grass.script import vector_db_select
+from grass.pygrass.vector import Vector, VectorTopo
+from grass.pygrass.raster import RasterRow
+from grass.pygrass import utils
+from grass import script as gscript
+
+###############
+# MAIN MODULE #
+###############
+
+def main():
+    """
+    Creates a hydrologically correct MODFLOW grid that inlcudes minimum
+    DEM elevations for all stream cells and mean elevations everywhere else
+    """
+    
+    """
+    dem = 'DEM'
+    grid = 'grid_tmp'
+    streams = 'streams_tmp'
+    streams_MODFLOW = 'streams_tmp_MODFLOW'
+    DEM_MODFLOW = 'DEM_coarse'
+    resolution = 500
+    """
+    
+    options, flags = gscript.parser()
+    dem = options['dem']
+    grid = options['grid']
+    streams = options['streams']
+    resolution = float(options['resolution'])
+    streams_MODFLOW = options['streams_modflow']
+    DEM_MODFLOW = options['dem_modflow']
+    
+    gscript.use_temp_region()
+    
+    g.region(raster=dem)
+    g.region(vector=grid)
+    v.to_rast(input=streams, output=streams_MODFLOW, use='val', value=1.0,
+              type='line', overwrite=gscript.overwrite(), quiet=True)
+    r.mapcalc(streams_MODFLOW+" = "+streams_MODFLOW+" * DEM", overwrite=True)
+    g.region(res=resolution, quiet=True)
+    r.resamp_stats(input=streams_MODFLOW, output=streams_MODFLOW, 
+                   method='minimum', overwrite=gscript.overwrite(), quiet=True)
+    r.resamp_stats(input=dem, output=DEM_MODFLOW, method='average',
+                   overwrite=gscript.overwrite(), quiet=True)
+    r.patch(input=streams_MODFLOW+','+DEM_MODFLOW, output=DEM_MODFLOW,
+            overwrite=True, quiet=True)
+
+if __name__ == "__main__":
+    main()
+    



More information about the grass-commit mailing list