在R中围绕空间数据创建缓冲区

时间:2017-03-06 16:29:09

标签: r buffer shape spatial

我有一个购物中心的空间数据集,我想在R中创建缓冲区。

我认为这些套餐很有用:

require(maptools)
require(geosphere) 

我能够为一组坐标做到这一点,但不能用于空间数据。代码如下所示:

coordinates(locs) <- c("Longitude", "Latitude")  # set spatial  coordinates
fivekm <- cbind(coordinates(locs), X=rowSums(distm (coordinates(locs)[,1:2], fun = distHaversine) / 1000 <= 5)) # number of points within 5 km

但我不知道用于一组多边形的函数/包。有人可以就功能(或代码)提出建议,我会从那里开始吗?

谢谢!

3 个答案:

答案 0 :(得分:2)

我认为目前唯一的选择是将经度和纬度点投射到平面地图上然后在那里做所有事情。据我所知,在球体上没有用于做多边形几何的包(我正在研究一个,但没有ETA)。

投影过去是使用spTransform包中的sp完成的,但现在使用功能更{{1}的更现代的简单功能包sf可能会更方便}}。小插图https://cran.r-project.org/web/packages/sf/vignettes/sf1.html有一个名为“坐标参考系统和转换”的部分,可以帮助您完成此部分。缓冲在“几何操作”部分中描述。

答案 1 :(得分:1)

在库rgeos中,gBuffer函数可与SpatialPoints或SpatialPolygons一起使用。
width参数允许设置要缓冲的距离。但是,请注意,此距离是使用的坐标系的比例。因此,以度为单位而非以米为单位的非投影数据。根据@Ege Rubak的建议,您必须首先使用spTransform投放数据(请务必根据您的位置使用相应的CRS)。
至于现在,rgeos库与库sp一起使用,但不是(还是?)与最近的sf一起使用。

答案 2 :(得分:0)

前两篇文章已经介绍了细节,但我认为提供工作流程可能会有所帮助。这假设您使用的是lat和long点。您的原始空间数据格式是什么?

  1. 将您的坐标转换为空间点数据框SpatialPointsDataFrame,并为其指定与您的坐标数据匹配的地理CRS(proj4)(可能是WGS84)
  2. 将投影更改为具有首选单位的本地预计CRS
  3. 将缓冲区应用于空间点数据框,width现在将处于更多可用单位