R语言--确定两经纬度点方位
//此函是计算两个经纬度点之间的直线距离
dist<-function(x1,x2){
x2[1]<-x2[1]-x1[1]
x1[1]<-0
d<-atan((x2[2]-x1[2])/x2[1])
g<-(d*180)/pi
g
}
//该函数确定x1->x2的方向 这里把正北方向定义为北偏西和北偏东10度的扇形范围内为正北 不然正北的概率太小
direction<-function(x1,x2){
g<-dist(x1,x2)
if(x2[1]>x1[1]){
if(g<0){
if((90-abs(g))<10){
return("西")
}else if(abs(g)<10){
return("北")
}
else{
return("西北")
}
}
else if(g>0){
if((90-g)<10){
return("东")
}else if(g<10){
return("北")
}else{
return("东北")
}
}
}
else if(x2[1]<x1[1]){
if(g<0){
if((90-abs(g))<10){
return("东")
}else if(abs(g)<10){
return("南")
}else{
return("东南")}
}
else if(g>0){
if((90-g)<10){
return("西")
}else if(g<10){
return("南")
}
else{
return("西南")}
}
}
}
//测试
direction(c(34.7472500000,113.6249300000),c(34.7375922091,113.6377716064))
[1] "东南"