[Back in July!] Volker Wichmann wrote: > I have upgraded r.in.xyz to allow for the following aggregate functions: > - skewness > - median > - percentile > - trimmed mean > > To make this possible, I created singly linked lists for all points > falling into a cell. I followed a suggestion of Glynn and used arrays > instead of pointers and stored the head of each list in a raster map > ([GRASS-dev] storing pointers in CELL_TYPE maps? (from April 2007)). > The linked lists are then used to calculate the corresponding > statistics before binning the values. > So far we encountered no problems with this approach in our working > group, but I'm not sure about some details. Maybe there should be some > more checks, e.g. to prevent the index to overflow because of too many > cells.
[Gf patch #450] After a long delay I have finally applied the patch in GRASS 6.3-CVS/HEAD. I apologize to Volker for taking so long to deal with this, and congratulate him and his team on a job well done. It's a nice little bit of code. The memory footprint seems to be about the same as for a stddev map. Question for the LFS folks: if the region size is >2/4billion cells* will the num_nodes, max_nodes, and node.next variables want to be something larger than int? nb I expect there will be other memory issues in this case anyway, and multi-pass via the percent= option should be used. * regions bigger than 45000x45000 / 63245x63245 aside: I am finding the r.colors "-e" flag and the 'r.colors.stddev -z' add-on script very very useful these days. ('r.colors -e' for ignoring outliers and 'r.colors.stddev -z' for a proper differences map [method=skewness]) go forth and test it, Hamish _______________________________________________ grassuser mailing list grassuser@grass.itc.it http://grass.itc.it/mailman/listinfo/grassuser