This function solves the problem that buffers will not be circular when used on non-projected data.
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.
See also
Other geo:
bbox_scale()
,
bind_sf()
,
geo_bb()
,
geo_bb_matrix()
,
geo_length()
,
geo_projected()
,
geo_select_aeq()
,
quadrant()
Examples
lib_versions <- sf::sf_extSoftVersion()
lib_versions
#> GEOS GDAL proj.4 GDAL_with_GEOS USE_PROJ_H
#> "3.12.1" "3.8.4" "9.4.0" "true" "true"
#> PROJ
#> "9.4.0"
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...