你好,这是我对stackoverflow的第一个问题,我希望我做的一切正确。 我想算一下地铁站的乘客。 我有四个向量,分别是乘客和车站的经度和纬度。 我用半径20米的圆圈和标记来代表车站。 现在,我想知道圈子中有多少个标记。 我已经尝试过用markerClusterOption对标记进行求和,但是将圆圈外的标记添加到圆圈中的标记中,我只想对圆圈内的标记求和。 我的目标是只增加圆圈内的标记数。
for
答案 0 :(得分:0)
R具有“ geosphere”程序包,用于在给定两个点的经度和纬度的情况下计算距离。问题是要计算出每个车站的乘客在20米以内。
library(geosphere)
#create dataframe of data, first column longitude, second latitude
subway<-data.frame(SubwayStation_long, SubwayStation_lat)
passagier<-data.frame(Passagier_long, Passagier_lat)
#proceed row by row and caluclate the distance between the station and each passenger
#return TRUE if the distance is within 20 meters
#first column of output goes with first row of station data.
within20m<-apply(subway, 1, function(x){distGeo(x, passagier)<20})
#number within 20 meters of each station
colSums(within20m)
apply语句的输出示例。
[,1] [,2]
[1,] TRUE FALSE
[2,] FALSE FALSE
[3,] TRUE FALSE
[4,] TRUE FALSE
[5,] TRUE FALSE
[6,] FALSE FALSE
[7,] FALSE TRUE
[8,] FALSE TRUE
[9,] FALSE TRUE
[10,] TRUE FALSE
[11,] FALSE TRUE
[12,] FALSE TRUE
这应该为合理数量的车站和乘客提供可接受的性能。如果您拥有大量的站点和大量的乘客,那么此解决方案将遇到性能问题,并且需要其他工具和技术。