[GRASS5] d.vect.area

Glynn Clements glynn.clements at virgin.net
Thu Jan 31 13:37:28 EST 2002


M Lennert wrote:

> > > I was just wondering, Eric, why you decided to implement 
> > > d.vect.area with a cat-rgb file option, and not with the catnum 
> > > option that was in d.area. This means that for scripts like the 
> > > d.area.class I posted last week, I will have to go through a 
> > > temporary file which will hamper perfomance again... I guess all 
> > > this will not be a problem with the new vector format, but for the 
> > > time being, I liked the catnum option.
> > 
> > d.area's "catnum=" option just takes a list of categories, not
> > category/colour pairs.
> 
> Well it does in the sense that you can list all the categories you want to plot and the color you 
> want to plot them in...

"catnum=" takes a list of categories; "fillcolor=" takes a singles
colour. d.area fills a set of categories in a single colour. 
d.vect.area fills each category in a (potentially) different colour.

> > Also, there's a limit on the maximum length of a command line (or,
> > more usually, of the combined size of the command line and the
> > environment list). Passing the colours via the command line would
> > limit the maximum number of categories which could be coloured.
> 
> I guess my own test examples were just too limited to explode the command line...as I said I 
> only tried with 589 areas.

Is that one call to d.area with 589 categories or 589 calls to d.area,
each with a single category?

Assuming ARG_MAX == 4096 (typical), the former would allow less than 7
characters per category (7 * 589 = 4123). That is just sufficient if
each category is just an integer, but you wouldn't be able to have 589
number/colour pairs.

> > Ideally, vector layers should probably have associated colour tables,
> > as is the case for raster layers.
> 
> Well, this will be addressed by the new vector format, won't it ?

I would hope so.

> > As for efficiency, a version of d.area.class based upon d.vect.area
> > would only need to create the legend file and call d.vect.area once,
> > rather than having to call d.area once per colour.
> 
> I'm quite inexperienced in programming, but doesn't the writing to a file take much more time 
> than calling a module ?

Spawning a command once could potentially take more time than writing
a file (particularly on Cygwin). Both fork() and execve() do quite a
lot of work; program startup (loading shared libraries, relocation)
can also be quite expensive.

Spawning a command multiple times will definitely take more time.

-- 
Glynn Clements <glynn.clements at virgin.net>



More information about the grass-dev mailing list