Hei Bernardo, Just for the record: I am currently working on something similar / related.
First of all I would like to improve speed of v.rast.stats for multiple inputs: https://www.mail-archive.com/grass-dev@lists.osgeo.org/msg52562.html and https://trac.osgeo.org/grass/ticket/3523 Adding a functionality to "tabulate areas" or "count categories" is a next step I have in mind which I am working on in v.rast.bufferstats (will be a port of v.what.rast.buffer [1] to GRASS 7 / pygrass (with some enhancements)). Once I have a good solution there I would like to see if it can be moved to v.rast.stats. Support for dbf driver is however a challenge... I will add my "work in progress" script to github, so you can have a look if you like. Cheers Stefan 1: https://grass.osgeo.org/grass64/manuals/addons/ -----Original Message----- From: grass-user <grass-user-boun...@lists.osgeo.org> On Behalf Of Helmut Kudrnovsky Sent: mandag 9. april 2018 23.19 To: grass-user@lists.osgeo.org Subject: Re: [GRASS-user] zonal statistics/metrics - beyond simple statistics Bernardo Santos wrote > Dear GRASS list, > I am developing a Python script to be able to calculate (virtually > any) metrics or statistics for zones/polygons in a vector - in analogy > to zonal statistics (such as v.rast.stats).The idea is that one can > calculate raster-based metrics (such as proportion of habitat, number > of patches, or any metric that can be formalized as a function that > takes some information from the input raster and returns a value) for > each polygon in the vector, and this is updated as a value in a newly > created column in the attribute table of this vector. > Is there already anything like that (some addon/module) that I am > missing, just to avoid re-doing something already created? > If not, what I am doing is to create a loop over all the features in a > vector, and for each one I zoom and use the polygon to define a mask > (using r.mask), so that the calculation of the selected metric is > performed only over that polygon, and this process is repeated.The > script allows one to calculate metrics/statistics for multiple raster > maps at once, and to incorporate other function for statistics also. > It may be found here:https://github.com/LEEClab/GeneralizedZonalStats > > For small vectors this works nicely and I believe it has a great > potential. However, when I try to calculate metrics for a large > dataset (e.g. the Brazilian map of cities, with almost 6,000 polygons) > - and that is when the tool would be interesting -, the process of > creating each mask takes too long (387 steps), and the tool becomes kind of > useless. > Then I have two questions:- First, what drives the number of steps > GRASS takes to create a mask? Why it is very small for some maps but > very large for others? I quite don't understand that yet.- Do you > think of a easier or faster way of doing the same thing (instead of using > masks)? > v.rast.stats seems to use r.univar and the option 'zones' for doing > so, but then one gets restricted to the statistics calculated by this module. > Any help or comment would be very welcome! > Best,Bernardo Niebuhr > _______________________________________________ > grass-user mailing list > grass-user@.osgeo > https://lists.osgeo.org/mailman/listinfo/grass-user have look at https://grass.osgeo.org/grass74/manuals/addons/v.habitat.dem.html where I've coded some DEM derived stats and characteristics for polygones. ----- best regards Helmut -- Sent from: http://osgeo-org.1560.x6.nabble.com/Grass-Users-f3884509.html _______________________________________________ grass-user mailing list grass-user@lists.osgeo.org https://lists.osgeo.org/mailman/listinfo/grass-user _______________________________________________ grass-user mailing list grass-user@lists.osgeo.org https://lists.osgeo.org/mailman/listinfo/grass-user