[GRASS-SVN] r33709 - grass/trunk/scripts/d.rast.leg

svn_grass at osgeo.org svn_grass at osgeo.org
Tue Oct 7 02:50:45 EDT 2008


Author: glynn
Date: 2008-10-07 02:50:44 -0400 (Tue, 07 Oct 2008)
New Revision: 33709

Added:
   grass/trunk/scripts/d.rast.leg/d.rast.leg.py
Log:
Convert d.rast.leg to Python


Added: grass/trunk/scripts/d.rast.leg/d.rast.leg.py
===================================================================
--- grass/trunk/scripts/d.rast.leg/d.rast.leg.py	                        (rev 0)
+++ grass/trunk/scripts/d.rast.leg/d.rast.leg.py	2008-10-07 06:50:44 UTC (rev 33709)
@@ -0,0 +1,143 @@
+#!/usr/bin/env python
+
+##############################################################################
+# d.rast.leg	(GRASS Shell Script)
+#
+# displays a raster map and its legend on a graphics window. 
+#
+# Usage: 	d.rast.leg
+#	or	d.rast.leg help
+#	or	d.rast.leg rast_map [num_of_lines]
+#
+# Description:	d.rast.leg clears the entire screen, divides it into a main
+#		(left) and a minor (right) frames, and then display a raster 
+#		map in the main frame and the map legend in the minor frame.
+#		The user can run the program interactively or 
+#		non-interactively.
+#
+# Parameters: 	rast_map 	A raster map to be displayed.
+#
+#	 	num_of_lines 	Number of lines to appear in the legend. 
+#				If this number is not given, the legend frame 
+#				will display as many lines as number of 
+#				categories in the map, otherwise, it will
+#				display the first num_of_lines minus 1  
+#				categories with the rest being truncated. 
+# 
+# Note:		The user may adjust the num_of_lines parameter or the size of 
+#		graphics window to get an appropriate result.
+#
+# See also:	d.rast, d.legend.
+#
+# Jianping Xu and Scott Madry, Rutgers University. October 19, 1993
+# Markus Neteler 8/2002: added simple d.legend logic
+# Markus Neteler 10/2003: added g.parser
+# Michael Barton 12/2004: remove reference to (null)
+# Glynn Clements 10/2008: converted to Python
+##############################################################################
+
+#%Module
+#%  description: Displays a raster map and its legend on a graphics window
+#%  keywords: display
+#%End
+#%flag
+#%  key: f
+#%  description: Flip legend
+#%end
+#%flag
+#%  key: n
+#%  description: Omit entries with missing label
+#%end
+#%option
+#% key: map
+#% type: string
+#% gisprompt: old,cell,raster
+#% description: Name of raster map
+#% required : yes
+#%end
+#%option
+#% key: num_of_lines
+#% type: integer
+#% description: Number of lines to appear in the legend
+#% required : no
+#%end
+#%option
+#% key: rast
+#% type: string
+#% gisprompt: old,cell,raster
+#% description: Name of raster map to generate legend from
+#% required : no
+#%end
+
+import sys
+import os
+import grass
+
+def make_frame(f, b, t, l, r):
+    (ft, fb, fl, fr) = f
+
+    t /= 100.0
+    b /= 100.0
+    l /= 100.0
+    r /= 100.0
+
+    rt = fb + t * (ft - fb)
+    rb = fb + b * (ft - fb)
+    rl = fl + l * (fr - fl)
+    rr = fl + r * (fr - fl)
+    s = '%f,%f,%f,%f' % (rt, rb, rl, rr)
+    os.environ['GRASS_FRAME'] = s
+
+def main():
+    map = options['map']
+    nlines = options['num_of_lines']
+    rast = options['rast']
+    omit = flags['n']
+    flip = flags['f']
+
+    #for -n flag of d.legend
+    if not grass.find_file(map)['file']:
+	grass.fatal("Raster map <%s> not found in mapset search path" % map)
+
+    # for rast=
+    if rast and not grass.find_file(rast)['file']:
+	grass.fatal("Raster map <%s> not found in mapset search path" % rast)
+
+    s = grass.read_command('d.info', flags = 'f')
+    f = tuple([float(x) for x in s.split()[1:5]])
+
+    grass.run_command('d.erase')
+    os.environ['GRASS_PNG_READ'] = 'TRUE'
+
+    #draw title
+    make_frame(f, 90, 100, 65, 100)
+    grass.write_command('d.text', color = 'black', size = 30, stdin = map)
+
+    #draw legend
+    if not nlines:
+	nlines = None
+
+    if rast:
+	lmap = rast
+    else:
+	lmap = map
+
+    histfiledir = grass.find_file(lmap, 'cell_misc')['file']
+    has_hist = os.path.isfile(os.path.join(histfiledir, 'histogram'))
+
+    lflags = ''
+    if flip:
+	lflags += 'f'
+    if has_hist or omit:
+	lflags += 'n'
+
+    make_frame(f, 0, 90, 65, 100)
+    grass.run_command('d.legend', flags = lflags, map = lmap, lines = nlines)
+
+    #draw map
+    make_frame(f, 0, 100, 0, 65)
+    grass.run_command('d.rast', map = map)
+
+if __name__ == "__main__":
+    options, flags = grass.parser()
+    main()


Property changes on: grass/trunk/scripts/d.rast.leg/d.rast.leg.py
___________________________________________________________________
Name: svn:executable
   + *



More information about the grass-commit mailing list