在R中的空间点数据周围创建缓冲区并计算缓冲区中的点数

时间:2017-02-28 00:35:35

标签: r buffer shape spatial

我正在尝试使用R来分析加油站点的空间密度。我需要在加油站周围创建一个缓冲区(圆圈)并计算缓冲区内的加油站数量。然后,我需要使用缓冲距离来查看什么是合理的缓冲区以查看有趣的内容。这些是我正在使用的文件:https://dl.dropboxusercontent.com/u/45095175/sbc_gas.shp; https://dl.dropboxusercontent.com/u/45095175/sbc_gas.shx; https://dl.dropboxusercontent.com/u/45095175/sbc_gas.dbf

# Install packages 
x <- c("ggmap", "rgdal", "rgeos", "maptools", "ks")
lapply(x, library, character.only = TRUE)
all <- readShapePoints("sbc_gas.shp") 
all.df <- as(all, "data.frame")
locs <- subset(all.df, select = c("OBJECTID", "Latitude", "Longitude"))
head(locs)  # a simple data frame with coordinates
coordinates(locs) <- c("Longitude", "Latitude")  # set spatial  coordinates
plot(locs)

任何帮助都非常感谢!!

2 个答案:

答案 0 :(得分:0)

我们无法使用您提供的数据,因为单独使用.shp文件是不够的。至少,您还必须提供.shx和.dbf文件才能加载此数据。

然而,应该有效的方法是获取包geosphere。它包含一个名为distGeo的函数。您可以使用它来获取每个加油站到所有其他站的距离。从距离矩阵,您应该能够选择指定距离内的所有站点。

答案 1 :(得分:0)

我找到了问题的答案:fivekm <- cbind(coordinates(locs), X=rowSums(distm (coordinates(locs)[,1:2], fun = distHaversine) / 1000 <= 5)) # number of points within 5 km