is_area.Rd
Tests if input refers to an area using international area
units according to the SPATA2
area framework.
is_area()
: Tests if input can be interpreted as an area
is_area_si()
: Tests if input can be interpreted as an area in SI units.
is_area_pixel()
: Tests if input can be interpreted as an area
in pixel.
is_area(input, error = FALSE)
is_area_pixel(input, error = FALSE)
is_area_si(input, error = FALSE)
Character vector. Elements must match the requirements of
the SPATA2
area framework. See details for more information.
Logical vector of the same length as input and/or an error if verbose
is TRUE
.
Several functions in SPATA2
have arguments that take area input.
To specifically refer to an area the unit must be specified. There are
three ways to create valid input for these arguments.
1. In pixel:
There are two valid input options to specify an area in pixel:
numeric: Single numeric values, e.g. arg_input = c(2, 3.554, 69, 100.67)
. If no unit
is specified the input will be interpreted as pixels.
character: Suffixed with 'px', e.g. arg_input = c('2px', '3.554px', '69px', '100.67px')
Note: The unit pixel (px) is used for distances as well as for areas. If pixel refers to a distance the pixel side length is meant. If pixel refers to an area the number of pixels is meant.
2. According to the Systeme international d`unites (SI):
Specifying areas in SI units e.g. arg_input = c('2mm2', '4mm2')
etc.
requires the input to be a character as the unit must be provided as suffix.
Between the numeric value and the unit must be no empty space! Valid suffixes
can be obtained using the function validUnitsOfAreaSI()
.
3. As vectors of class unit
:
Behind the scenes SPATA2
works with the units
package. Input
is converted into vectors of class units
. Therefore, input can be directly
provided this way: arg_input = units::set_unit(x = c(2,4), value = 'mm2')
Note that pixel is not a valid unit in the units
package. If you want
to specify the input in pixel you have to use input option 1. In pixel.
library(SPATA2)
##### provide input as character vectors
# will return TRUE
is_area(input = c('2mm2', '4mm2'))
# will return FALSE
is_area(input = c('200 m2')) # space between value and unit
# will return TRUE
area_values <- c(200, 400)
area_values <- as_area(area_values, unit = "mm2")
is_area(input = area_values)
###### use units package
library(units)
area_values2 <- set_units(x = c(200, 300), value = "mm2")
is_area(area_values2)