根据地球上任意两点的经纬度计算两点间的距离,地球是一个近乎标准的椭球体,它的赤道半径为6378.140千米,极半径为 6356.755千米,平均半径6371.004千米。通过极坐标转换把经纬度转换为容易理解和计算的米。
一、the function of distince
getDistancev <- function(arryv) {#点之间距离生成(m)
# arryv=eucv
len=length(arryv)
tempar= matrix(0,nrow(arryv),nrow(arryv))
for(i in 1:nrow(arryv))
for(j in 1:nrow(arryv))
tempar[i,j]=getDistance(arryv[i,1],arryv[i,2],arryv[j,1],arryv[j,2])
#mark
return(tempar)
}
二、the transform of coordinates
getDistance <- function(lat1,lng1,lat2,lng2) {#经纬度->米
EARTH_RADIUS <- 6378.137
radLat1 <- rad(lat1)
radLat2 <- rad(lat2)
a <- radLat1 - radLat2
b <- rad(lng1) - rad(lng2)
s <- 2 * asin(sqrt((sin(a/2))^2) + cos(radLat1)*cos(radLat2)*(sin(b/2))^2);
s = s * EARTH_RADIUS
s = round(s * 10000) / 10
return (s)
}
三、the transform of polar coordinates
rad <- function(d){
return (d*pi / 180.0)
}
四、直接使用
getDistance(121.41479,28.70854,121.41472,28.70878)
over