【问题标题】:Create buffer around spatial data in R在 R 中围绕空间数据创建缓冲区
【发布时间】:2018-03-02 14:39:39
【问题描述】:

我有一个购物中心的空间数据集,我想在 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

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

谢谢!

【问题讨论】:

    标签: r buffer shape spatial


    【解决方案1】:

    在库 rgeos 中,有一个 gBuffer 函数可用于 SpatialPoints 或 SpatialPolygons。
    width 参数允许设置要缓冲的距离。但是,请注意,此距离是在所使用的坐标系的范围内。因此,以度为单位,而不是以非投影数据的米为单位。正如@Ege Rubak 所建议的那样,您必须首先使用spTransform 投影您的数据(请务必根据您的位置使用适当的CRS)。
    目前,rgeos 库与库 sp 一起使用,但(还没有?)与最近的 sf 一起使用。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 谢谢! @Ege Rubak。
      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2017-07-18
        • 2012-01-03
        • 1970-01-01
        • 2018-06-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-27
        相关资源
        最近更新 更多