Did you try the legendfile= parameter of d.thematic.area ? This creates an instructions file which you can feed into d.graph. Feedback on this is more than welcome and we can tweak that output according to your experience. The instructions file is pure text, so you can easily play around with it to find the right settings.
This comes from the use of d.out.file which is useless in your script. d.out.file takes all the commands used to display features on an X-monitor and displays them to a PNG. But when you use a PNG-"Monitor" you are already writing to a file. Just take out the call to d.out.file and you should get the same results without the error message.
Monitor 'PNG' terminated
yr is 2100
PNG: GRASS_TRUECOLOR status: TRUE
PNG: collecting to file: pc2100.png,
GRASS_WIDTH=4097, GRASS_HEIGHT=3775
Graphics driver [PNG] started
ERROR: Only X monitors are supported.
Monitor 'PNG' terminated
/
I know you're busy, so whenever you can respond is totally fine- Vishal
-----SCRIPT FOLLOWS----
#!/bin/bash
#generate 5yr interval thematic pngs of low series PPIC population projections
# get current region settings from thematic map of interest
g.region vect=CountyPop2 # Store current environment
OLD_GRASS_WIDTH=$GRASS_WIDTH
OLD_GRASS_HEIGHT=$GRASS_HEIGHT
OLD_GRASS_PNGFILE=$GRASS_PNGFILE
OLD_GRASS_TRANSPARENT=$GRASS_TRANSPARENT
OLD_GRASS_TRUECOLOR=$GRASS_TRUECOLOR
LEGEND_WIDTH=500
LEGEND_HEIGHT=500
LEGEND_TEXT_COLOR=white
BACKGROUND_COLOR=black
# define the driver settings
export GRASS_WIDTH=`g.region -g | grep "cols" | cut -d= -f2`
export GRASS_HEIGHT=`g.region -g | grep "rows" | cut -d= -f2`
export GRASS_TRANSPARENT=FALSE ## if transparent the text overlaps in the animated gif created at the end
export GRASS_TRUECOLOR=TRUE ##
yr=2010
while [ $yr -lt 2105 ] ; do
echo "yr is $yr "
export GRASS_PNGFILE=pc$yr.png
d.mon start=PNG
d.mon select=PNG
d.thematic.area map=CountyPop2 column=pc$yr breaks=20,40,60 colors=cyan,blue,yellow,red
d.text -b text="$yr Population" at=50,90 size=4
d.out.file output=$GRASS_PNGFILE format=png
d.mon stop=PNG
#
if [ $yr -eq 2090 ]; then yr=$((yr+10)); else yr=$((yr+5)); fi;
done
#create an animated gif using Image Magick, delay 20/100 sec loop endless
convert -delay 20 -loop 0 *.png population.gif
------
---------------------------------------
On Mon, Apr 6, 2009 at 10:32 AM, Moritz Lennert <mlennert@club.worldonline.be <mailto:mlennert@club.worldonline.be>> wrote:
Thanks. I'll try to look into this as soon as I find the time (but
am busy writing a report for a large research project right now...).
Which version of GRASS are you using ?
Moritz
On 06/04/09 19:16, Vishal Mehta wrote:
Moritz, thanks much for your interest in this.
I'm attaching the shapefile that I used in these past
conversations. Its California counties, in Latlong WGS84. column
'pop2000' is 200 population. columns pc2005 to pc2100 are
percentage changes from pop2000. note that pc2095 is missing
(the data source is like that).
All i'm trying to do is create a nice thematic map with
consistent colors, and a nice legend; which i'll then convert
into an animated kml. I've done this with rasters: i can share
that with you as well.
i've started a blog to put up some of this stuff:
algoesalgo.wordpress.com <http://algoesalgo.wordpress.com>
<http://algoesalgo.wordpress.com>
Thanks again,
Vishal
On Mon, Apr 6, 2009 at 5:29 AM, Moritz Lennert
<mlennert@club.worldonline.be
<mailto:mlennert@club.worldonline.be>
<mailto:mlennert@club.worldonline.be
<mailto:mlennert@club.worldonline.be>>> wrote:
Hi again,
Would it be possible to send me your files offlist, so that I can
try to reproduce the error ? Or you could see if you can
reproduce
it with one of the GRASS demo datasets ?
Moritz
On 04/04/09 01:13, Vishal Mehta wrote:
A couple of strange behaviors with a test vector dataset
whose
columns are population projections every 5 years:
I ran the following script below but:
1. I see it working ok on the x0 monitor; but the output png
files are all blank..
2. and i get messages while the script is running that
include
'segmentation fault' but not on EVERY iteration of the loop..
---------------------script-------
#!/bin/bash
#generate 5yr interval thematic pngs of low series PPIC
population projectiosn
yr=2010
while [ $yr -lt 2105 ] ; do
#actions here
echo "yr is $yr "
d.thematic.area map=CountyPop column=pc$yr breaks=20,40,60
colors=cyan,blue,yellow,red
d.out.file output=pop$yr format=png
#
yr=$((yr+5))
done
------------------------messages while running above
script-----
---
yr is 2020
Segmentation fault
Saving display from Monitor: [x0] to <pop2020.png>.
Image size [640 x 480]
Screen export complete. (writing the file may take a small
amount of time)
Image crop [523 x 480]
Done.
yr is 2025
Segmentation fault
Saving display from Monitor: [x0] to <pop2025.png>.
Image size [640 x 480]
Screen export complete. (writing the file may take a small
amount of time)
Image crop [523 x 480]
Done.
yr is 2030
Segmentation fault
Saving display from Monitor: [x0] to <pop2030.png>.
Image size [640 x 480]
Screen export complete. (writing the file may take a small
amount of time)
Image crop [523 x 480]
Done.
yr is 2035
Saving display from Monitor: [x0] to <pop2035.png>.
Image size [640 x 480]
Screen export complete. (writing the file may take a small
amount of time)
Image crop [523 x 480]
Done.
yr is 2040
Saving display from Monitor: [x0] to <pop2040.png>.
Image size [640 x 480]
Screen export complete. (writing the file may take a small
amount of time)
Image crop [523 x 480]
Done.
yr is 2045
Saving display from Monitor: [x0] to <pop2045.png>.
Image size [640 x 480]
Screen export complete. (writing the file may take a small
amount of time)
Image crop [523 x 480]
Done.
------
On Thu, Apr 2, 2009 at 11:54 PM, Moritz Lennert
<mlennert@club.worldonline.be
<mailto:mlennert@club.worldonline.be>
<mailto:mlennert@club.worldonline.be
<mailto:mlennert@club.worldonline.be>>
<mailto:mlennert@club.worldonline.be
<mailto:mlennert@club.worldonline.be>
<mailto:mlennert@club.worldonline.be
<mailto:mlennert@club.worldonline.be>>>> wrote:
On 03/04/09 00:23, Vishal Mehta wrote:
Hello all,
I am better at GRASS raster capabilities than with
GRASS
vector
handling, so I am writing to get your help.
What I want to do is this:
1. I will have one vector dataset of watersheds. Each
record is
a polygon, an individual watershed. There are,
apart from the
usual cat fields, 52 attribute columns. Each attribute
column is
modeled weekly snow depth.
2. I need to automate the display and export to
png of 52
thematic images - one for each week/column -
keeping the
color
scheme constant throughout. Then all of the images
will be
packaged into a kml animation.
I know how to do the above starting from a stack
of GRASS
rasters, but am not quickly getting a handle on
displaying GRASS
vectors consistently. I've tried d.vect and
d.vect.thematic. I
havent tried d.thematic.area yet.
The main issues are that I dont know:
- how to assign a constant color scheme to each map
(that spans
the min and max of all columns); i guess i was
looking for
something as simple as setting color rules like with
raster data.
If you want constant class breaks, i.e. the same class
number and
amplitudes linked to the same colors, then you can
just manually
provide breaks and colors in d.thematic.area.
- how to refer to each attribute column by column
number
in a
loop (d.vect.thematic and d.thematic.area seem to
need
column
name as attribute)
(assuming you are in a *nix environment with a shell):
for col in `v.info <http://v.info> <http://v.info>
<http://v.info> -c
MapName`; do d.thematic.area
.... column=$col; done
(note the backticks around the v.info <http://v.info>
<http://v.info>
<http://v.info> command))
Moritz
-- Vishal K. Mehta, PhD
Scientist
Stockholm Environment Institute - US
133 D St Suite F
Davis CA 95616
www.sei-us.org <http://www.sei-us.org>
<http://www.sei-us.org> <http://www.sei-us.org>
-- Vishal K. Mehta, PhD
Scientist
Stockholm Environment Institute - US
133 D St Suite F
Davis CA 95616
www.sei-us.org <http://www.sei-us.org> <http://www.sei-us.org>
--
Vishal K. Mehta, PhD
Scientist
Stockholm Environment Institute - US
133 D St Suite F
Davis CA 95616
www.sei-us.org <http://www.sei-us.org>
------------------------------------------------------------------------