利用R语言确定两个经纬点的方向

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] "东南"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值