Skip to contents

This function solves the problem that buffers will not be circular when used on non-projected data.

Usage

geo_buffer(shp, dist = NULL, width = NULL, ...)

Arguments

shp

A spatial object with a geographic CRS (e.g. WGS84) around which a buffer should be drawn

dist

The distance (in metres) of the buffer (when buffering simple features)

width

The distance (in metres) of the buffer (when buffering sp objects)

...

Arguments passed to the buffer (see ?sf::st_buffer for details)

Details

Requires recent version of PROJ (>= 6.3.0). Buffers on sf objects with geographic (lon/lat) coordinates can also be done with the s2 package.

Examples

lib_versions <- sf::sf_extSoftVersion()
lib_versions
#>           GEOS           GDAL         proj.4 GDAL_with_GEOS     USE_PROJ_H 
#>       "3.10.2"        "3.4.1"        "8.2.1"         "true"         "true" 
#>           PROJ 
#>        "8.2.1" 
if (lib_versions[3] >= "6.3.1") {
  buff_sf <- geo_buffer(routes_fast_sf, dist = 50)
  plot(buff_sf$geometry)
  geo_buffer(routes_fast_sf$geometry, dist = 50)
}

#> Geometry set for 42 features 
#> Geometry type: POLYGON
#> Dimension:     XY
#> Bounding box:  xmin: -1.551723 ymin: 53.80203 xmax: -1.510228 ymax: 53.83086
#> Geodetic CRS:  WGS 84
#> First 5 geometries:
#> POLYGON ((-1.535569 53.82873, -1.535517 53.8287...
#> POLYGON ((-1.550723 53.82451, -1.550871 53.8248...
#> POLYGON ((-1.530548 53.81706, -1.530586 53.8170...
#> POLYGON ((-1.518697 53.81731, -1.51892 53.81742...
#> POLYGON ((-1.516744 53.82823, -1.51678 53.82823...