Luigi Ponti wrote: > I haven't been able to find this in previous discussions > but it seems like a trivial yet impossible (for me) to solve > thing. (Running grass6.4-svn windows standalone installer > win7.)
(it needs to be explained better in the docs.) > I am trying to get a ps.map using an input file like the > following: > > # ps.map input file > border y > color black > width 1 > end > > raster shadedRelief > > vareas ecologicalZones > layer 1 > rgbcolumn RGB_COLOR > label GEZ_CODE > lpos 1 > end > > vlegend > where 0.5 6 > border black > font arial > fontsize 12 > cols 1 > end > end > > I would like to print a categorical legend with the same > colors as the rgbcolumn, but I only get one gray color that > is different from the RGB_COLOR definitions: > https://docs.google.com/fileview?id=0B0EpsfMZ-IZYNzI2ZjRjMTQtNTNiNi00NTJkLWJlZjAtNzAyN2E0MTM3OWUw&hl=it nice! > Any pointer? the vector legend is by map, not by category. Because you only used the vareas instruction once, you only get one entry in the vector legend. two alternatives: 1) add one vareas instruction for every vector zone, and add a where column_name = 'zonename' to each one. You might have to explicitly give the fill color, I don't think it is smart enough to know that the SQL query only results in 1. Set the label to be each zonename. (easiest way for a few values) 2) take the 'v.colors -s' approach, and create a dummy raster map containing a category file and color table matching what's in the vector's DB. Then use the colortable command to display it. example: (this exposes a bug in the ps.map categorical legend though! the fill colors get rearranged!) # North Carolina sample dataset g.copy v=soils_wake,soils_wakeL # assign soil type ID number to each soil of the 77 soil types v.db.addcol soils_wakeL col='DSL_NUM integer' SOIL_TYPES=`v.db.select soils_wake col=DSL_NAME | sort | uniq` i=0 ( for TYPE in $SOIL_TYPES ; do i=`expr $i + 1` echo "UPDATE soils_wakeL SET DSL_NUM=$i WHERE DSL_NAME='$TYPE';" done ) | db.execute v.extract in=soils_wakeL out=soils_wakeLc type=area where="DSL_NUM > 70" d.vect soils_wakeLc type=area -c where="DSL_NUM > 70" v.colors -s map=soils_wakeLc column=DSL_NUM color=random d.erase d.vect soils_wakeLc type=area -a g.rename vcolors_23877,soils_wakeLc.legend #create cats file: v.db.select -c soils_wakeLc columns=DSL_NUM,DSL_NAME fs=":" | \ sort | uniq | r.category soils_wakeLc.legend rules=- d.legend soils_wakeLc.legend ps.map in=test.psm out=test.ps && gv test.ps & #----test.psm # ps.map input file border y color black width 1 end raster elevation_shade vareas soils_wakeLc rgbcolumn GRASSRGB label SOIL_CODE lpos 1 end #vlegend # where 5.5 8 # border black # font arial # fontsize 12 # cols 1 # end colortable where 1 8 raster soils_wakeLc.legend font arial fontsize 12 cols 1 nodata Yes end end #---- hope it helps, Hamish _______________________________________________ grass-user mailing list [email protected] http://lists.osgeo.org/mailman/listinfo/grass-user
