[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