zonal_stats
zonal_statistics(GI::GItype, shapes::GDtype, fun::Function; touches=false, byfeatures=false, groupby="")
or
zonal_statistics(fun::Function, GI::GItype, shapes::GDtype; touches=false, byfeatures=false, groupby="")
or zonal_stats(...)
Compute the statistics of fun
applied to the elements of the grid or image GI
that lie inside the polygons of the GMTdataset shapes
.
Arguments
GI
: A grid (GMTgrid) or image (GMTimage) type uppon which the statistics will be computed by applying thefun
function to the elements that fall inside the polygons ofshapes
.shapes
: A vector of GMTdataset containing the polygons inside which the elements ifGI
will be assigned a single value obtained by applying the functionfun
.fun
: A unidemensional function name used to compute the contant value for theGI
elements that fall inside each of the polygons ofshapes
.
Parameters
touches
: include all cells/pixels that are touched by the polygons. The default is to include only the cells whose centers that are inside the polygons.byfeatures
: Datasets read from OGR vector filres (shapes, geopackages, arrow, etc) are organized in features that may contain several geomeometries each. Each group of geometries in a Feature share the sameFeauture_ID
atribute. Ifbyfeatures
is true, the functionfun
will be applied to each feature independently. This option is actually similar to thegroupby
parameter but doesn't require an attribute name. If neither ofbyfeatures
orgroupby
are provided, thefun
function is applied to each of the polygons independently.groupby
: If provided, it must be an attribute name, for example,groupby="NAME"
. If not provided, we use theFeature_ID
attribute that is a unique identifier assigned during an OGR file reading (by the GMT6.5 C lib). If neither ofbyfeatures
orgroupby
are provided, thefun
function is applied to each of the polygons independently.
Examples
What is the mean altitude of Swisserland?
using GMT
G = gmtread("@earth_relief_06m");
Swiss = coast(DCW=:CH, dump=true, minpts=50);
zonal_statistics(G, Swiss, mean)
1×1 GMTdataset{Float64, 2}
Row │ X
─────┼─────────
1 │ 1313.21
In the example above we used the minpts
option in order to drop the two small polygons tha are also in the DCW database but that is not always feasable as for example when we select more that one country. For those cases we want to use the groupby
option that creates groups of polygons sharing the same attribute ("NAME"). Next example does that for France and Italy.
using GMT
G = gmtread("@earth_relief_06m");
FrIt = coast(DCW="FR,IT", dump=true, minpts=50);
zonal_statistics(G, FrIt, mean, groupby="NAME")
3×1 GMTdataset{Float64, 2}
Row │ col.1 Text
─────┼───────────────────
1 │ 341.849 France
2 │ 569.453 Italy
3 │ 103.25 Ph Italy
The Ph Italy means that Italy has an island inside it. The Vatican city.
These docs were autogenerated using GMT: v1.11.0