How to create inward (shrinking) buffer zones with st_buffer()
Dear Xiang, sure it is possible. I suggest using a CRS that is projected, e.g. 3857 (Web Mercator), or turn off s2 geometry. If you turn off s2, then st_buffer() will interpret the dist parameter in degrees. Anyway, if you choose a small enough number, then you'll get a non-empty geometry. > sf_use_s2(FALSE) Spherical geometry (s2) switched off > st_buffer(a, -100) dist is assumed to be in decimal degrees (arc_degrees). Geometry set for 1 feature? (with 1 geometry empty) Geometry type: POLYGON Dimension:???? XY Bounding box:? xmin: NA ymin: NA xmax: NA ymax: NA Geodetic CRS:? WGS 84 POLYGON EMPTY Warning message: In st_buffer.sfc(a, -100) : ? st_buffer does not correctly buffer longitude/latitude data > st_buffer(a, -0.001) dist is assumed to be in decimal degrees (arc_degrees). Geometry set for 1 feature Geometry type: POLYGON Dimension:???? XY Bounding box:? xmin: -2.533411 ymin: 51.40595 xmax: -2.489763 ymax: 51.4315 Geodetic CRS:? WGS 84 POLYGON ((-2.533083 51.41747, -2.528692 51.4204... Warning message: In st_buffer.sfc(a, -0.001) : ? st_buffer does not correctly buffer longitude/latitude data (I don't know why s2 can't deal with negative distance if the CRS is WGS-84.) HTH, ?kos ____________ ?kos Bede-Fazekas Centre for Ecological Research, Hungary 2024. 02. 19. 11:04 keltez?ssel, Xiang Ye via R-sig-Geo ?rta:
Dear community, I am learning some basic geometry operation functions of sf package including st_buffer(). It seems there should be no wonder if I provide a negative value to the dist argument in st_buffer(), I should expect an inward/shrinking buffer zone (I also followed here: https://gis.stackexchange.com/questions/392505/can-i-use-r-to-do-a-buffer-inside-polygons-shrink-polygons-negative-buffer). However, it turn out to be as long as I provide a negative value, the output will be an empty geometry: library(sf) library(spDataLarge) st_geometry(bristol_zones[1, ]) -> a # a is the exemplary data set
a
Geometry set for 1 feature Geometry type: MULTIPOLYGON Dimension: XY Bounding box: xmin: -2.534502 ymin: 51.40487 xmax: -2.488435 ymax: 51.43478 Geodetic CRS: WGS 84 MULTIPOLYGON (((-2.510462 51.42878, -2.507985 5...
st_buffer(a, 100)
Geometry set for 1 feature Geometry type: POLYGON Dimension: XY Bounding box: xmin: -2.536248 ymin: 51.40393 xmax: -2.486907 ymax: 51.43598 Geodetic CRS: WGS 84 POLYGON ((-2.517834 51.43188, -2.518218 51.4318...
st_buffer(a, -100)
Geometry set for 1 feature (with 1 geometry empty) Geometry type: POLYGON Dimension: XY Bounding box: xmin: NA ymin: NA xmax: NA ymax: NA Geodetic CRS: WGS 84 POLYGON EMPTY So I would like to know if it is possible to create inward buffer zones with st_buffer()? If st_buffer() is not designed to perform this, what is the best alternative? Thank you, and have a great start of the week! $B3pfF(B YE, Xiang THINKING SPATIALLY<http://www.linkedin.com/in/spatialyexiang>. Ph.D. in Spatial Statistics [[alternative HTML version deleted]]
_______________________________________________ R-sig-Geo mailing list R-sig-Geo at r-project.org https://stat.ethz.ch/mailman/listinfo/r-sig-geo
Ezt az e-mailt ?tvizsg?lta az Avast AntiVirus szoftver. www.avast.com