问题描述
在同一边界区域中,我有一组2,220个嵌套坐标(var1)和另一组26个界标坐标(var2)。我想找到2624组中每个点之间的2,224个坐标之间的距离,以便创建带有列(嵌套坐标,最小距离界标坐标,以m为单位的距离)的新数据框。
我被困在尝试交叉这两个集合以生成一个集合,其中所有界标坐标与每个嵌套坐标配对。
**nest** **landmark** **distance**
lat1,lon1 lat1,lon1 34
lat1,lon1 lat2,lon2 18
lat1,lon1 lat3,lon3 82
....
lat1,lon1 lat26,lon26 61
lat2,lon2 lat1,lon1 94
lat2,lon2 lat2,lon2 38
...
lat2,220,lon 2,220 lat 26,lon26 46
我尝试过交(var1,var2),其中var1和var2都是包含经度和纬度值的矩阵,然后计算每个结果行之间的Haversine距离(请参见下文)。这似乎可行,但是我认为这并没有给我期望的确切结果。交叉产生的行数与这些集合的nrow的乘积不一致。
我还希望能够将具有所有距离值的结果集分成26个组,其中每个组包含嵌套坐标(每行重复),26个界标坐标之一以及两点。从那里,我将选择距离最小的行。
newset <- crossing(nests,landmarks)
mindist <- distHaversine(newset[1],newset[2],r=6378137)
newsetwdist <- cbind(newset,mindist)
sv <- split(newsetwdist,rep(1:56056,each=26))
#56056 was the resulting number of rows,even though I expected 57,720.
var3 <- lapply(sv,"[",3) #returns a nested list of all distances for each nest
var4 <- lapply(var2,"[[","mindist")
df = as.data.frame(do.call(rbind,lapply(var4,unlist)))
min.dist.from.landmark <- apply(df,1,FUN=min)
似乎应该是一个简单的解决方法,我们将不胜感激。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)