[GRASS-SVN] r65154 - in grass-addons/grass7/raster/r.green: . libgreen r.green.hydro/r.green.hydro.optimal r.green.hydro/r.green.hydro.structure

svn_grass at osgeo.org svn_grass at osgeo.org
Mon Apr 27 08:19:40 PDT 2015


Author: Giulia
Date: 2015-04-27 08:19:40 -0700 (Mon, 27 Apr 2015)
New Revision: 65154

Added:
   grass-addons/grass7/raster/r.green/libgreen/
   grass-addons/grass7/raster/r.green/libgreen/Makefile
   grass-addons/grass7/raster/r.green/libgreen/__init__.py
   grass-addons/grass7/raster/r.green/libgreen/checkparameter.py
   grass-addons/grass7/raster/r.green/libgreen/utils.py
   grass-addons/grass7/raster/r.green/r.green.hydro/r.green.hydro.optimal/r_green_hydro_optimal_availablestreams.png
   grass-addons/grass7/raster/r.green/r.green.hydro/r.green.hydro.optimal/r_green_hydro_optimal_potentialplants.png
   grass-addons/grass7/raster/r.green/r.green.hydro/r.green.hydro.structure/r_green_hydro_structure_plantstructure.png
   grass-addons/grass7/raster/r.green/r.green.hydro/r.green.hydro.structure/r_green_hydro_structure_potentialplants.png
Removed:
   grass-addons/grass7/raster/r.green/r.green.hydro/r.green.hydro.optimal/availablestreams.jpg
   grass-addons/grass7/raster/r.green/r.green.hydro/r.green.hydro.optimal/potentialplants.jpg
   grass-addons/grass7/raster/r.green/r.green.hydro/r.green.hydro.structure/plantstructure.png
   grass-addons/grass7/raster/r.green/r.green.hydro/r.green.hydro.structure/potentialplants.jpg
Modified:
   grass-addons/grass7/raster/r.green/Makefile
   grass-addons/grass7/raster/r.green/r.green.hydro/r.green.hydro.optimal/r.green.hydro.optimal.html
   grass-addons/grass7/raster/r.green/r.green.hydro/r.green.hydro.structure/r.green.hydro.structure.html
Log:
add libgreen and change jpg in png

Modified: grass-addons/grass7/raster/r.green/Makefile
===================================================================
--- grass-addons/grass7/raster/r.green/Makefile	2015-04-27 13:40:00 UTC (rev 65153)
+++ grass-addons/grass7/raster/r.green/Makefile	2015-04-27 15:19:40 UTC (rev 65154)
@@ -4,8 +4,8 @@
 
 SUBDIRS = r.green.hydro/libhydro \
 	r.green.biomassfor \
-	r.green.hydro
-	  
+	r.green.hydro \
+	libgreen
 
 include $(MODULE_TOPDIR)/include/Make/Dir.make
 

Added: grass-addons/grass7/raster/r.green/libgreen/Makefile
===================================================================
--- grass-addons/grass7/raster/r.green/libgreen/Makefile	                        (rev 0)
+++ grass-addons/grass7/raster/r.green/libgreen/Makefile	2015-04-27 15:19:40 UTC (rev 65154)
@@ -0,0 +1,25 @@
+MODULE_TOPDIR = ../../..
+
+include $(MODULE_TOPDIR)/include/Make/Other.make
+include $(MODULE_TOPDIR)/include/Make/Python.make
+
+MODULES = utils checkparameter
+
+
+LIBGREENDIR = $(ETC)/r.green
+ETCDIR = $(LIBGREENDIR)/libgreen
+
+
+PYFILES := $(patsubst %,$(ETCDIR)/%.py,$(MODULES) __init__)
+PYCFILES := $(patsubst %,$(ETCDIR)/%.pyc,$(MODULES) __init__)
+
+default: $(PYFILES) $(PYCFILES) $(ETCDIR)/__init__.py $(ETCDIR)/__init__.pyc
+
+$(ETCDIR):
+	$(MKDIR) $@
+
+$(ETCDIR)/%: % | $(ETCDIR)
+	$(INSTALL_DATA) $< $@
+
+install:
+	cp -r $(ETCDIR) $(INST_DIR)

Added: grass-addons/grass7/raster/r.green/libgreen/__init__.py
===================================================================
Added: grass-addons/grass7/raster/r.green/libgreen/checkparameter.py
===================================================================
--- grass-addons/grass7/raster/r.green/libgreen/checkparameter.py	                        (rev 0)
+++ grass-addons/grass7/raster/r.green/libgreen/checkparameter.py	2015-04-27 15:19:40 UTC (rev 65154)
@@ -0,0 +1,51 @@
+# -*- coding: utf-8 -*-
+from grass.exceptions import ParameterError
+from grass.pygrass.vector import VectorTopo
+from grass.pygrass.raster import RasterRow
+from grass.pygrass.messages import get_msgr
+
+
+def check_required_columns(vname, layer, reqcols, pname):
+    """Check if the vector input maps has the right columns
+    in the attribute table."""
+    vname, mset = vname.split('@') if '@' in vname else (vname, '')
+    with VectorTopo(vname, mset, mode='r', layer=layer) as vect:
+        columns = vect.table.columns
+    for col in reqcols:
+        if col not in columns:
+            msg = ("Parameter: %s require the following columns: %r,"
+                   " %s is missing")
+            raise ParameterError(msg % (pname, reqcols, col))
+    return vect
+
+
+def check_range(value, min=0., max=1.):
+    """Check if a value is between a range"""
+    if value < min or value > max:
+        raise ParameterError("Value not between: %f, %f" % (min, max))
+    return value
+
+
+def check_float_or_raster(parameter, min=None, max=None):
+    """Check if the parameter is a float or a raster map in a certain range."""
+    try:
+        par = float(parameter)
+        if min is not None and max is not None:
+            par = check_range(par, min, max)
+    except:
+        try:
+            rname, mset = (parameter.split('@') if '@' in parameter
+                           else (parameter, ''))
+            if min is not None and max is not None:
+                with RasterRow(rname, mset) as rst:
+                    mn, mx = rst.info.range
+                    check_range(mn, min, max)
+                    check_range(mx, min, max)
+            par = parameter
+        except:
+            raise ParameterError("Raster is not readable or not in a range")
+    return par
+
+
+def exception2error(exc):
+    get_msgr().error(str(exc.args[0] if len(exc.args) == 1 else str(exc.args)))

Added: grass-addons/grass7/raster/r.green/libgreen/utils.py
===================================================================
--- grass-addons/grass7/raster/r.green/libgreen/utils.py	                        (rev 0)
+++ grass-addons/grass7/raster/r.green/libgreen/utils.py	2015-04-27 15:19:40 UTC (rev 65154)
@@ -0,0 +1,149 @@
+# -*- coding: utf-8 -*-
+from scipy.sparse import csr_matrix
+import numpy as np
+#import pdb
+
+# import grass libraries
+from grass.script import mapcalc
+from grass.script import core as gcore
+from grass.pygrass.raster import RasterRow
+from grass.pygrass.raster.buffer import Buffer
+from grass.pygrass.gis.region import Region
+
+
+def cleanup(rast=None, vect=None, debug=False):
+    """Delete temporary maps"""
+    if not debug:
+        if rast:
+            gcore.run_command("g.remove", flags="f", type='rast', name=rast)
+        if vect:
+            gcore.run_command("g.remove", flags="f", type='vect', name=vect)
+
+
+def check_overlay_rv(raster, vector):
+    """
+    check the overlay between a raster and a vector
+    :param raster: grass raster name
+    :type raster: string
+    :param vector: grass vector name
+    :type vector: string
+    """
+    gcore.run_command('v.to.rast',
+                      input=vector,
+                      output='vec_rast',
+                      use='cat')
+    #pdb.set_trace()
+    formula = 'overlay = if( %s>0  && vec_rast , vec_rast)' % (raster)
+    mapcalc(formula, overwrite=True)
+    formula = 'diff = overlay - vec_rast'
+    mapcalc(formula, overwrite=True)
+    perc_0 = perc_of_overlay('diff', '0')
+    return perc_0
+
+
+def check_overlay_rr(raster1, raster2):
+    """
+    check the overlay between a raster and a vector
+    :param raster1: grass raster name
+    :type raster: string
+    :param raster2: grass raster name
+    :type vector: string
+    """
+    formula = 'overlay = if( %s>0  && %s>0 , %s)' % (raster1, raster2, raster2)
+    mapcalc(formula, overwrite=True)
+    formula = 'diff = overlay - %s' % (raster2)
+    mapcalc(formula, overwrite=True)
+    perc_0 = perc_of_overlay('diff', '0')
+    return perc_0
+
+
+def perc_of_overlay(raster, val):
+    """
+    split the output of r.report and give the percentage of a value
+    :param raster: grass raster name
+    :type raster: string
+    :param val: value to compute the percentage
+    :type val: string
+    """
+    temp = 0
+    info = gcore.parse_command('r.report', flags='nh', map=raster, units='p')
+    for somestring in info.keys():
+        if ((' %s|' % val) or ('|%s|' % val)) in somestring:
+            temp = somestring.split('|')[-2]
+    return temp
+
+
+def raster2compressM(A):
+    """Return a compress matrix from a raster map"""
+    with RasterRow(A, mode='r') as A_ar:
+        A_sparse = np.array(A_ar)
+    A_sparse[A_sparse == -2147483648] = 0
+    A_sparse = csr_matrix(A_sparse)
+    return A_sparse
+
+
+def raster2numpy(A):
+    """Return a numpy array from a raster map"""
+    with RasterRow(A, mode='r') as array:
+        return np.array(array)
+
+
+def numpy2raster(array, mtype, name):
+    """Save a numpy array to a raster map"""
+    reg = Region()
+    if (reg.rows, reg.cols) != array.shape:
+        msg = "Region and array are different: %r != %r"
+        raise TypeError(msg % ((reg.rows, reg.cols), array.shape))
+    with RasterRow(name, mode='w', mtype=mtype) as new:
+        newrow = Buffer((array.shape[1],), mtype=mtype)
+        for row in array:
+            newrow[:] = row[:]
+            new.put_row(newrow)
+
+
+def remove_pixel_from_raster(lakes, stream):
+    """
+    Remove pixel belonged to a raster from the second one
+    """
+    gcore.run_command("v.to.rast", overwrite=True, input=lakes,
+                      output="lakes", use="val")
+    stream, mset = stream.split('q') if '@' in stream else (stream, '')
+    del_lake = '%s=if(%s,if(isnull(lakes),%s,null()),null())' % (stream,
+                                                                 stream,
+                                                                 stream)
+    mapcalc(del_lake, overwrite=True)
+
+
+def dissolve_lines(in_vec, out_vec):
+    """
+    If more lines are present for the same category
+    it merges them
+    """
+    gcore.run_command('v.clean', overwrite=True,
+                      input=in_vec, output=out_vec,
+                      tool='break,snap,rmdupl,rmarea,rmline,rmsa')
+    info = gcore.parse_command('v.category',
+                               input=out_vec, option='print')
+    for i in info.keys():
+        #import ipdb; ipdb.set_trace()
+        gcore.run_command('v.edit', map=out_vec, tool='merge',
+                          cats=i)
+
+
+def get_coo(raster, i, j):
+    """
+    Given a raster map and the index i and j of the
+    corresponded array obtained with Raster Row
+    it computes the coordinate p_x and p_y
+    """
+    info = gcore.parse_command('r.info', flags='g', map=raster)
+    p_y = ((float(info['north'])) - i * (float(info['nsres'])) -
+           0.5 * (float(info['nsres'])))
+    p_x = ((float(info['west'])) + j * (float(info['ewres'])) +
+           0.5 * (float(info['ewres'])))
+    return p_x, p_y
+
+
+if __name__ == "__main__":
+    import doctest
+    doctest.testmod()

Deleted: grass-addons/grass7/raster/r.green/r.green.hydro/r.green.hydro.optimal/availablestreams.jpg
===================================================================
(Binary files differ)

Deleted: grass-addons/grass7/raster/r.green/r.green.hydro/r.green.hydro.optimal/potentialplants.jpg
===================================================================
(Binary files differ)

Modified: grass-addons/grass7/raster/r.green/r.green.hydro/r.green.hydro.optimal/r.green.hydro.optimal.html
===================================================================
--- grass-addons/grass7/raster/r.green/r.green.hydro/r.green.hydro.optimal/r.green.hydro.optimal.html	2015-04-27 13:40:00 UTC (rev 65153)
+++ grass-addons/grass7/raster/r.green/r.green.hydro/r.green.hydro.optimal/r.green.hydro.optimal.html	2015-04-27 15:19:40 UTC (rev 65154)
@@ -20,7 +20,7 @@
 Here is the vector file availablestreams of the interested streams. The river segments already exploited by an existing plant do not appear in the file.<br>
 
 <center>
-<img src="availablestreams.jpg" alt="availablestreams"><br>
+<img src="r_green_hydro_optimal_availablestreams.jpg" alt="r_green_hydro_optimal_availablestreams"><br>
 Vector map availablestreams
 </center><br>
 
@@ -31,7 +31,7 @@
 This command calculates the energy potential for a plant length range from 10 to 800 m and a distance between plants of 200m.<br><br>
 
 <center>
-<img src="potentialplants.jpg" alt="potentialplants"><br>
+<img src="r_green_hydro_optimal_potentialplants.jpg" alt="r_green_hydro_optimal_potentialplants"><br>
 Superposition of the potential segments vector file (potentialsegments, in blue) and the potential intakes and restitution vector file (potentialplants, in red)
 </center>
 

Added: grass-addons/grass7/raster/r.green/r.green.hydro/r.green.hydro.optimal/r_green_hydro_optimal_availablestreams.png
===================================================================
(Binary files differ)


Property changes on: grass-addons/grass7/raster/r.green/r.green.hydro/r.green.hydro.optimal/r_green_hydro_optimal_availablestreams.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: grass-addons/grass7/raster/r.green/r.green.hydro/r.green.hydro.optimal/r_green_hydro_optimal_potentialplants.png
===================================================================
(Binary files differ)


Property changes on: grass-addons/grass7/raster/r.green/r.green.hydro/r.green.hydro.optimal/r_green_hydro_optimal_potentialplants.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Deleted: grass-addons/grass7/raster/r.green/r.green.hydro/r.green.hydro.structure/plantstructure.png
===================================================================
(Binary files differ)

Deleted: grass-addons/grass7/raster/r.green/r.green.hydro/r.green.hydro.structure/potentialplants.jpg
===================================================================
(Binary files differ)

Modified: grass-addons/grass7/raster/r.green/r.green.hydro/r.green.hydro.structure/r.green.hydro.structure.html
===================================================================
--- grass-addons/grass7/raster/r.green/r.green.hydro/r.green.hydro.structure/r.green.hydro.structure.html	2015-04-27 13:40:00 UTC (rev 65153)
+++ grass-addons/grass7/raster/r.green/r.green.hydro/r.green.hydro.structure/r.green.hydro.structure.html	2015-04-27 15:19:40 UTC (rev 65154)
@@ -12,7 +12,7 @@
 Here is the input vector file potentialplants with the intakes and restitution (in red) computed by r.green.hydro.optimal. The vector map with the segments of river is also visibile in blue on this picture.<br><br>
 
 <center>
-<img src="potentialplants.jpg" alt="potentialplants"><br>
+<img src="r_green_hydro_structure_potentialplants.png" alt="r_green_hydro_structure_potentialplants"><br>
 Potential intakes and restitution
 </center><br>
 
@@ -22,7 +22,7 @@
 The result is shown in the following vector map structplants.<br><br>
 
 <center>
-<img src="plantstructure.png" alt="plantstructure"><br>
+<img src="r_green_hydro_structure_plantstructure.png" alt="r_green_hydro_structure_plantstructure"><br>
 Structure of the potential plants
 </center>
 

Added: grass-addons/grass7/raster/r.green/r.green.hydro/r.green.hydro.structure/r_green_hydro_structure_plantstructure.png
===================================================================
(Binary files differ)


Property changes on: grass-addons/grass7/raster/r.green/r.green.hydro/r.green.hydro.structure/r_green_hydro_structure_plantstructure.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: grass-addons/grass7/raster/r.green/r.green.hydro/r.green.hydro.structure/r_green_hydro_structure_potentialplants.png
===================================================================
(Binary files differ)


Property changes on: grass-addons/grass7/raster/r.green/r.green.hydro/r.green.hydro.structure/r_green_hydro_structure_potentialplants.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream



More information about the grass-commit mailing list