Swiss army knife for bounding boxes. Modify an existing bounding box or create a new bounding box from scratch. See details.
bb(
x = NA,
ext = NULL,
cx = NULL,
cy = NULL,
width = NULL,
height = NULL,
xlim = NULL,
ylim = NULL,
relative = FALSE,
asp.target = NULL,
asp.limit = NULL,
current.projection = NULL,
projection = NULL,
output = c("bbox", "matrix", "extent")
)
bounding box (see argument output
)
One of the following:
A shape from class sf
, stars
, sp
, or raster
.
A bounding box (st_bbox
, Extent
(raster
package, which will no longer be supported in the future versions), numeric vector of 4 (default order: xmin, ymin, xmax, ymax), or a 2x2 matrix).
Open Street Map search query. The bounding is automatically generated by querying x
from Open Street Map Nominatim. See geocode_OSM
.
Extension factor of the bounding box. If 1, the bounding box is unchanged. Values smaller than 1 reduces the bounding box, and values larger than 1 enlarges the bounding box. This argument is a shortcut for both width
and height
with relative=TRUE
. If a negative value is specified, then the shortest side of the bounding box (so width or height) is extended with ext
, and the longest side is extended with the same absolute value. This is especially useful for bounding boxes with very low or high aspect ratios.
center x coordinate
center y coordinate
width of the bounding box. These are either absolute or relative (depending on the argument relative
).
height of the bounding box. These are either absolute or relative (depending on the argument relative
).
limits of the x-axis. These are either absolute or relative (depending on the argument relative
).
limits of the y-axis. See xlim
.
boolean that determines whether relative values are used for width
, height
, xlim
and ylim
or absolute. If x
is unspecified, relative
is set to "FALSE"
.
target aspect ratio, which is width/height, of the returned bounding box.
maximum aspect ratio, which is width/height. Number greater than or equal to 1. For landscape bounding boxes, 1/asp.limit
will be used. The returned bounding box will have an aspect ratio between 1/asp.limit
and asp.limit
.
projection that corresponds to the bounding box specified by x
.
projection to transform the bounding box to.
output format of the bounding box, one of:
"bbox"
a sf::bbox
object, which is a numeric vector of 4: xmin, ymin, xmax, ymax. This representation used by the sf
package.
"matrix"
a 2 by 2 numeric matrix, where the rows correspond to x and y, and the columns to min and max. This representation used by the sp
package.
"extent"
an raster::extent
object, which is a numeric vector of 4: xmin, xmax, ymin, ymax. This representation used by the raster
package.
An existing bounding box (defined by x
) can be modified as follows:
Using the extension factor ext
.
Changing the width and height with width
and height
. The argument relavitve
determines whether relative or absolute values are used.
Setting the x and y limits. The argument relavitve
determines whether relative or absolute values are used.
A new bounding box can be created from scratch as follows:
Using the extension factor ext
.
Setting the center coorinates cx
and cy
, together with the width
and height
.
Setting the x and y limits xlim
and ylim
geocode_OSM
if (require(tmap)) {
## load shapes
data(NLD_muni)
data(World)
## get bounding box (similar to sp's function bbox)
bb(NLD_muni)
## extent it by factor 1.10
bb(NLD_muni, ext=1.10)
## double the width
bb(NLD_muni, width=2, relative = TRUE)
## crop both dimensions from 0.25 to 0.75
bb(NLD_muni, xlim=c(.25, .75), ylim=c(.25, .75), relative = TRUE)
## extent it such that aspect ratio is 1
bb(NLD_muni, asp.target = 1)
## convert to longlat (EPSG 4326)
bb(NLD_muni, projection=4326)
}
if (FALSE) {
if (require(tmap)) {
bb("Limburg", projection = 28992)
bb_italy <- bb("Italy", projection = "+proj=eck4")
tm_shape(World, bbox=bb_italy) + tm_polygons()
# shorter alternative: tm_shape(World, bbox="Italy") + tm_polygons()
}}
Run the code above in your browser using DataLab