1. 程式人生 > >使用scala計算兩個Gps點之間的距離

使用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))
   }
}
下面是該程式的列印結果