我正在尝试使用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)
任何帮助都非常感谢!!
答案 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