[R-sig-Geo] How to create inward (shrinking) buffer zones with st_buffer()

Xiang Ye x|@ngye @end|ng |rom bu||@|o@edu
Sun Feb 25 17:57:50 CET 2024


Dear Nick,

Thank you for your reply! And I agree with several points mentioned in your email, as the geographic coordinate system is not the best CRS to generate a buffer zone. According to the guide from previous replies to my question, I turned off the Google s2 geometry library by setting sf_use_s2(FALSE) then st_buffer() will interpret the dist argument in degrees.

Btw, as suggested by class(bristol_zones), it is an sf object.

Thank you and have a great start of the week!



叶翔 YE, Xiang
THINKING SPATIALLY<http://www.linkedin.com/in/spatialyexiang>.
Ph.D. in Spatial Statistics
________________________________
From: R-sig-Geo <r-sig-geo-bounces using r-project.org> on behalf of Nick Bearman <nick using geospatialtrainingsolutions.co.uk>
Sent: Friday, February 23, 2024 0:28
To: r-sig-geo using r-project.org <r-sig-geo using r-project.org>
Subject: Re: [R-sig-Geo] How to create inward (shrinking) buffer zones with st_buffer()

[You don't often get email from nick using geospatialtrainingsolutions.co.uk. Learn why this is important at https://aka.ms/LearnAboutSenderIdentification ]

Dear Xiang,

I've not had a chance to try your code, but your example probably won't
work with the CRS set to WGS84. The buffer will use the units of the
coordinate system, so degrees, which will be far too large for the
bristol_zones example.

Assuming bristol_zones are in the UK, you need to reproject to BNG - 27700.

Also I am not sure whether bristol_zones from spDataLarge are in sp or
sf format.

Once those are addressed - I see no reason why the example in the Stack
Exchange should work.

Best wishes,
Nick.

On 19/02/2024 10:04, Xiang Ye via R-sig-Geo wrote:
> 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://nam12.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgis.stackexchange.com%2Fquestions%2F392505%2Fcan-i-use-r-to-do-a-buffer-inside-polygons-shrink-polygons-negative-buffer&data=05%7C02%7Cxiangye%40buffalo.edu%7Cdfd6d699011c443c102808dc33c3555d%7C96464a8af8ed40b199e25f6b50a20250%7C0%7C0%7C638442161268034782%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C0%7C%7C%7C&sdata=qb0R4h1gmWzIeZOaFJkjtdpylR6WprDzQcFGiJJ5rDs%3D&reserved=0)<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!
>
> 叶翔 YE, Xiang
> THINKING SPATIALLY<https://nam12.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.linkedin.com%2Fin%2Fspatialyexiang&data=05%7C02%7Cxiangye%40buffalo.edu%7Cdfd6d699011c443c102808dc33c3555d%7C96464a8af8ed40b199e25f6b50a20250%7C0%7C0%7C638442161268045734%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C0%7C%7C%7C&sdata=fim9H15Z3SZAoak1FEbs63Ovgosr5nZVwY4MCo0npB4%3D&reserved=0<http://www.linkedin.com/in/spatialyexiang>>.
> Ph.D. in Spatial Statistics
>
>       [[alternative HTML version deleted]]
>
> _______________________________________________
> R-sig-Geo mailing list
> R-sig-Geo using r-project.org
> https://nam12.safelinks.protection.outlook.com/?url=https%3A%2F%2Fstat.ethz.ch%2Fmailman%2Flistinfo%2Fr-sig-geo&data=05%7C02%7Cxiangye%40buffalo.edu%7Cdfd6d699011c443c102808dc33c3555d%7C96464a8af8ed40b199e25f6b50a20250%7C0%7C0%7C638442161268051713%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C0%7C%7C%7C&sdata=0EAPpfFBELTd3FWmskvu18QbgNayTdtB%2BbjE4k3WIOw%3D&reserved=0<https://stat.ethz.ch/mailman/listinfo/r-sig-geo>
>
--
Nick Bearman
+44 (0) 7717745715
nick using geospatialtrainingsolutions.co.uk

Please let me know if I can make any adjustments related to disability or neurodivergence to improve how we interact.

Due to my own life/work balance, you may get emails from me outside of normal working hours. Please do not feel any pressure to respond outside of your own working pattern.

_______________________________________________
R-sig-Geo mailing list
R-sig-Geo using r-project.org
https://nam12.safelinks.protection.outlook.com/?url=https%3A%2F%2Fstat.ethz.ch%2Fmailman%2Flistinfo%2Fr-sig-geo&data=05%7C02%7Cxiangye%40buffalo.edu%7Cdfd6d699011c443c102808dc33c3555d%7C96464a8af8ed40b199e25f6b50a20250%7C0%7C0%7C638442161268057743%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C0%7C%7C%7C&sdata=GTQvGRcmebqPZIn2QVAVxkdc%2F1MVpzLCHFUfsBYihjs%3D&reserved=0<https://stat.ethz.ch/mailman/listinfo/r-sig-geo>

	[[alternative HTML version deleted]]



More information about the R-sig-Geo mailing list