我在两个数据集中有很多地理坐标,并且想要运行最近邻搜索。我遇到了“RANN”包,该功能nn2(x,y)
运行得非常快。
现在有一个问题,当然在伦敦地区,向北一个学位比向西一个学位要远得多。
我现在的想法是将位置坐标转换为某个网格,其中在 x 方向上的一步与在 y 方向上的一步几乎相同。该地区是伦敦(中心 -0.1045,51.489)。如何执行此转换?
library(RANN)
xyunf <- structure(c(-0.19117, -0.173862, -0.187623, -0.187623, -0.192366,
-0.176224, 51.489096, 51.482442, 51.50226, 51.50226, 51.491632,
51.495429), .Dim = c(6L, 2L), .Dimnames = list(c("1", "2", "3",
"4", "6", "7"), c("Longitude", "Latitude")))
xyosm <- structure(c(-0.1966434, -0.1097162, -0.2023061, -0.198467, -0.4804301,
-0.4286548, 51.6511198, 51.6134576, 51.6042042, 51.5186019, 51.3757395,
51.3351355), .Dim = c(6L, 2L), .Dimnames = list(NULL, c("lon",
"lat")))
res <- nn2(data=xyunf, query=xyosm, k=1)
res$nn.dists
res$nn.idx