Approximate the area sizes of the polygons in real-world area units (such as sq km or sq mi), proportional numbers, or normalized numbers. Also, the areas can be calibrated to a prespecified area total. This function is a convenient wrapper around st_area
.
Arguments
- shp
shape object, i.e., an
sf
orsp
object.- target
target unit, one of
"prop"
:Proportional numbers. In other words, the sum of the area sizes equals one.
"norm"
:Normalized numbers. All area sizes are normalized to the largest area, of which the area size equals one.
"metric"
(default):Output area sizes will be either
"km"
(kilometer) or"m"
(meter) depending on the map scale"imperial"
:Output area sizes will be either
"mi"
(miles) or"ft"
(feet) depending on the map scale- other:
Predefined values are "km^2", "m^2", "mi^2", and "ft^2". Other values can be specified as well, in which case
to
is required).
These units are the output units. See
orig
for the coordinate units used by the shapeshp
.- total.area
total area size of
shp
in number of target units (defined bytarget
). Useful if the total area of theshp
differs from a reference total area value. For"metric"
and"imperial"
units, please provide the total area in squared kilometers respectively miles.
Value
Numeric vector of area sizes (class units
).
Details
Note that the method of determining areas is an approximation, since it depends on the used projection and the level of detail of the shape object. Projections with equal-area property are highly recommended. See https://en.wikipedia.org/wiki/List_of_map_projections for equal area world map projections.
Examples
if (require(tmap) && packageVersion("tmap") >= "3.99") {
data(NLD_muni)
NLD_muni$area <- approx_areas(NLD_muni, total.area = 33893)
tm_shape(NLD_muni) +
tm_bubbles(size="area",
size.legend = tm_legend(title = expression("Area in " * km^2)))
# function that returns min, max, mean and sum of area values
summary_areas <- function(x) {
list(min_area=min(x),
max_area=max(x),
mean_area=mean(x),
sum_area=sum(x))
}
# area of the polygons
approx_areas(NLD_muni) %>% summary_areas()
# area of the polygons, adjusted corrected for a specified total area size
approx_areas(NLD_muni, total.area=33893) %>% summary_areas()
# proportional area of the polygons
approx_areas(NLD_muni, target = "prop") %>% summary_areas()
# area in squared miles
approx_areas(NLD_muni, target = "mi mi") %>% summary_areas()
# area of the polygons when unprojected
approx_areas(NLD_muni %>% sf::st_transform(crs = 4326)) %>% summary_areas()
}
#> Loading required package: tmap
#> Breaking News: tmap 3.x is retiring. Please test v4, e.g. with
#> remotes::install_github('r-tmap/tmap')