使用scala计算两个Gps点之间的距离

来源:互联网 发布:淘宝美工字体 编辑:程序博客网 时间:2024/05/29 06:29
通常进行轨迹数据的挖掘,都会用到经纬度转换距离。特别是Spark需要scala语言编写,这方面的轮子比较少。
object getDistance{   def main(args: Array[String]) {         val lon1 = 108.956769;val lat1 = 34.229644    val lon2 = 108.958830;val lat2 =34.229701    def getDistance(lon1: Double, lat1: Double, lon2: Double, lat2: Double): Double ={         //pi为π,r为地球半径      val pi = 3.1415926      val r: Double  = 6370.99681      //a1、a2、b1、b2分别为上面数据的经纬度转换为弧度      val a1 = lat1 * pi /180.0      val a2 = lon1 * pi /180.0      val b1 = lat2 * pi /180.0      val b2 = lon2 * pi /180.0      var t1: Double = Math.cos(a1) * Math.cos(a2) * Math.cos(b1)* Math.cos(b2)      var t2: Double = Math.cos(a1) * Math.sin(a2) * Math.cos(b1)* Math.sin(b2)      var t3: Double = Math.sin(a1) * Math.sin(b1)      val distance = Math.acos(t1 + t2 + t3) * r      distance    }    println(getDistance(lon1,lat1,lon2,lat2))   }}
下面是该程序的打印结果

 
原创粉丝点击