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

Hamish hamish_nospam at yahoo.com
Thu Sep 7 03:35:48 EDT 2006


Moritz Lennert wrote:
> 
> 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

plotting to the screen is probably the slowest part; having that inside
the loop is probably a slow down .. as a prototype could you write a
shell script that runs v.extract + d.vect.chart?

But it shouldn't be to hard to do as you suggest, and I imagine if you
leave the actual close driver/stabilize call until after the loop it
shouldn't be much slower.


Hamish




More information about the grass-dev mailing list