我想通过查看400m(步行5分钟)内其他点的数量来评估每个点与其他等效点的空间接近程度。
我在地图上有一些要点。 我可以在它们周围绘制一个简单的400 m缓冲区。 我想确定哪些缓冲区重叠,然后计算重叠的数量。 该重叠数应与原始点相关,因此我可以看到哪个点具有最高重叠数,因此,如果我要从该点步行400 m,则可以确定可以到达的其他点数。
我已经在GIS溢出中问了这个问题,但是我不确定它是否会在ArcGIS中得到解答,我想我更愿意在R中进行这项工作。
为简化此处的一些代码
# load packages
library(easypackages)
needed<-c("sf","raster","dplyr","spData","rgdal",
"tmap","leaflet","mapview","tmaptools","wesanderson","DataExplorer","readxl",
"sp" ,"rgisws","viridis","ggthemes","scales","tidyverse","lubridate","phecharts","stringr")
easypackages::libraries(needed)
## read in csv data; first column is assumed to be Easting and second Northing
polls<-st_as_sf(read.csv(url("https://www.caerphilly.gov.uk/CaerphillyDocs/FOI/Datasets_polling_stations_csv.aspx")),
coords = c("Easting","Northing"),crs = 27700)
polls_buffer_400<-st_buffer(plls,400)
polls_intersection<-st_intersection(x=polls_buffer_400,y=polls_buffer_400)
plot(polls_intersection$geometry)
这应该显示轮询站周围的重叠缓冲区。 我想做的是计算重叠的次数:
polls_intersection_grouped<-polls_intersection%>%group_by(Ballot.Box.Polling.Station)%>%count()
这是我不确定的一点,要获得所需的输出(在这种情况下,它将显示投票站的“热点”)我该如何为事物着色?我怎么能够 : 通过查看400m(步行5分钟)内其他点的数量,评估每个点与其他等效点的空间接近程度。
这可能是非常糟糕的形式,但这是我最初的GIS问题 https://gis.stackexchange.com/questions/328577/buffer-analysis-of-points-counting-intersects-of-resulting-polygons
编辑: 这给了路口不同的颜色,很棒。 plot(polls_intersection $ geometry,col = sf.colors(categorical = TRUE,alpha = .5))
summary(lengths(st_intersects(polls_intersection)))
我在这里涂什么?我的意思是看起来不错,但我真的不知道自己在做什么。
答案 0 :(得分:2)
我如何通过查看400m(步行5分钟)内其他点的数量来评估每个点与其他等效点的空间接近程度。
以下是在初始sfc
投票站中添加一列的方法,该列告诉您sfc
中每个要素的400m范围内有多少个投票站。
请注意,最小值为1
,因为投票站始终位于其自身的400m之内。
# n_neighbors shows how many polling stations are within 400m
polls %>%
mutate(n_neighbors = lengths(st_is_within_distance(polls, dist = 400)))
类似地,对于您的sfc
相交多边形集合,您可以添加一列来计算包含每个相交多边形的缓冲多边形的数量:
polls_intersection %>%
mutate(n_overlaps = lengths(st_within(geometry, polls_buffer_400)))
这是我不确定的一点,要获得想要的输出(在这种情况下,它将显示投票站的“热点”)我该如何为事物着色?
如果要绘制这些图形,我强烈建议使用ggplot2
。它使您非常清楚如何将颜色等属性与特定变量相关联。
例如,以下示例将每个多边形的alpha
(透明度)映射到n_overlaps
列的缩放版本:
library(ggplot2)
polls_intersection %>%
mutate(n_overlaps = lengths(st_covered_by(geometry, polls_buffer_400))) %>%
ggplot() +
geom_sf(aes(alpha = 0.2*n_overlaps), fill = "red")
最后,应该有一种更好的方法来生成已经计数重叠的相交多边形。这是st_intersection
函数的内置函数,用于查找sfc
对象与其自身的交集。
但是,当您尝试执行此操作时,您的数据尤其会产生错误:
st_intersection(polls_buffer_400)
# > Error in CPL_nary_intersection(x) :
#> Evaluation error: TopologyException: side location conflict at 315321.69159061194 199694.6971799387.
我不知道什么是“边位置冲突”。也许@edzer可以帮上忙。但是,数据的大多数子集都不包含该冲突。例如:
# this version adds an n.overlaps column automatically:
st_intersection(polls_buffer_400[1:10,]) %>%
ggplot() + geom_sf(aes(alpha = 0.2*n.overlaps), fill = "red")