[GRASS-dev] trying to amend d.vect.chart - need for advice

Moritz Lennert mlennert at club.worldonline.be
Wed Sep 6 08:17:23 EDT 2006


Hello,

With a colleague we are trying to amend d.vect.chart in order to

1) speed it up
2) allow a where clause

Currently, d.vect.chart loops through each vector feature and opens a 
new db cursor to fetch the column information. On a map with a fair 
amount of features (20464 centroids) with the table in Postgresql it 
seems that the db connection is what takes the most of the time (even 
worse obviously when the map is linked to a view which needs to be 
recalculated for every feature).

So currently, the program's logic is as follows (in 
display/d.vect.chart/plot.c):

- get number of features (little aside question: why is this done with 
Vect_get_num_lines() which should return number of lines, not number of 
features - as you can see I'm very new to the vector library)
- loop through each feature:
    - get cat of feature
    - open cursor selecting columns [and sizecol] for this feature 
according to cat
    - close cursor
    - plot with this info

We would like to modify this according to the following logic:

- add a 'where' option
- open a cursor selecting cat, columns [and sizecol] limited by the 
where option
- loop through the cursor:
    - find x,y values according to cat
    - plot with this info
- close cursor

I have two main questions about this:

1) Does this sound reasonable ? Anything we are missing ?
2) Is there a function to get x,y point values according to cat value ?

Thanks,

Moritz




More information about the grass-dev mailing list