日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

c语言地理坐标存储 转发,纬度/经度坐标的2个列表之间的地理距离

發(fā)布時(shí)間:2025/5/22 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言地理坐标存储 转发,纬度/经度坐标的2个列表之间的地理距离 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

要計(jì)算具有經(jīng)度/緯度坐標(biāo)的兩點(diǎn)之間的地理距離,可以使用幾個(gè)公式。 包地geosphere包含用于計(jì)算距離的distCosine , distHaversine , distVincentySphere和distVincentyEllipsoid 。 其中, distVincentyEllipsoid被認(rèn)為是最準(zhǔn)確的,但在計(jì)算上比其他的更密集。

有了這些function之一,你可以做一個(gè)距離matrix。 基于這個(gè)matrix,你可以根據(jù)最短的距離,使用which.min和相應(yīng)的距離min (參見答案的最后一部分)來分配locality名稱,如下所示:

library(geosphere) # create distance matrix mat

這給了:

> list1 longitude latitude locality 1 80.15998 12.90524 D 2 72.89125 19.08120 A 3 77.65032 12.97238 C 4 77.60599 12.90927 D 5 72.88120 19.08225 A 6 76.65460 12.81447 E 7 72.88232 19.08241 A 8 77.49186 13.00984 D 9 72.82228 18.99347 A 10 72.88871 19.07990 A

另一種可能性是根據(jù)列表2中的locality的平均經(jīng)度和緯度值來分配locality :

library(dplyr) list2a % group_by(locality) %>% summarise_each(funs(mean)) %>% ungroup() mat2 % mutate(locality2 = list2a$locality[max.col(-mat2)])

或用data.table :

library(data.table) list2a

這給了:

> list1 longitude latitude locality locality2 1 80.15998 12.90524 DD 2 72.89125 19.08120 AB 3 77.65032 12.97238 CC 4 77.60599 12.90927 DC 5 72.88120 19.08225 AB 6 76.65460 12.81447 EE 7 72.88232 19.08241 AB 8 77.49186 13.00984 DC 9 72.82228 18.99347 AB 10 72.88871 19.07990 AB

正如你所看到的,這導(dǎo)致大部分(十分之七)的場(chǎng)合到另一個(gè)指定的locality 。

您可以添加距離:

list1$near_dist

或另一種方法max.col (很可能更快):

list1$near_dist % mutate(near_dist = mat2[matrix(c(1:10, max.col(-mat2)), ncol = 2)]) # or using data.table (if not already a data.table, convert it with 'setDT(list1)' ) list1[, near_dist := mat2[matrix(c(1:10, max.col(-mat2)), ncol = 2)] ]

結(jié)果:

> list1 longitude latitude locality locality2 near_dist 1: 80.15998 12.90524 DD 269966.8970 2: 72.89125 19.08120 AB 65820.2047 3: 77.65032 12.97238 CC 739.1885 4: 77.60599 12.90927 DC 9209.8165 5: 72.88120 19.08225 AB 66832.7223 6: 76.65460 12.81447 EE 0.0000 7: 72.88232 19.08241 AB 66732.3127 8: 77.49186 13.00984 DC 17855.3083 9: 72.82228 18.99347 AB 69456.3382 10: 72.88871 19.07990 AB 66004.9900

總結(jié)

以上是生活随笔為你收集整理的c语言地理坐标存储 转发,纬度/经度坐标的2个列表之间的地理距离的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。