使用scala計算兩個Gps點之間的距離

通常進行軌跡數據的挖掘,都會用到經緯度轉換距離。特別是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))
   }
}


下面是該程序的打印結果



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章