如何计算已经存储在mongodb中的gps坐标的gps总距离


How to calculate gps total distance where already gps coordinates are stored in mongodb

gps设备已经固定在某些车辆中,并且该设备不断传递值(即纬度和经度),因此这些值存储在数据库(mongodb)中。现在我想使用数据库中的坐标来计算旅行的总距离。

这是我的代码

controller.php:

public function cal_distance_traveled()
{
    $this->load->model('general/coordinate');  
    $radius     = 6371; //km        
    $lat1       = $this->input->post('latitude1');
    $lat2       = $this->input->post('latitude2');
    $lon1       = $this->input->post('logitude1');
    $lon2       = $this->input->post('logitude2');  
    $latitude1  = deg2rad($x);       
    $latitude2  = deg2rad($x2);      
    $latitude   = deg2rad($lat2 - $lat1); 
    $logitude   = deg2rad($lon2 - $lon1); 
    $this->coordinate->convertToGPSFormat()
    $a          = sin($latitude/2) * sin($latitude/2) + cos($latitude1) * cos($latitude2) * sin($logitude/2) * sin($logitude/2);
    $c          = 2 * atan2(sqrt($a),sqrt(1-$a));
    $d          = $radius * $c;
    var_dump($d);
    header('Content-Type: application/json');
    echo json_encode(array('success' => 'TRUE'));
}

model.php:

function insertData($x,$y,$timeStamp)
    {
        $data = array(
                       'x' => $this->convertToGPSFormat($x),
                       'y' => $this->convertToGPSFormat($y),
                       'time' => $timeStamp
                     );
        $this->mongo_db->insert('coordinate', $data); 
}

控制器:

公共函数dist_lat_lon()

{ 
  $radius= 6371;            
  $sum = 0;
  $i=0;   
  $this->load->model('general/coordinate');
  $result = $this->coordinate->Total_Distance();               
  $value = count($result); 
  //for Latitude                
     $lat = $result[$i];     
     //stores Latitude value in degree                        
     $lat1[$i] = $lat['x'];  
     $latitude[$i] = deg2rad($lat1[$i]); 
     //for Longitude
        $lon = $result[$i];
        //stores longitude value in degree
        $lon1[$i] = $lon['y'];
        $longitude[$i] = deg2rad($lon1[$i]); 
        for($i=1;$i<$value;$i++) { 
        //for Latitude                
           $lat = $result[$i]; 
           //stores Latitude value in degree                                     
           $lat1[$i] = $lat['x'];  
           $latitude[$i] = deg2rad($lat1[$i]); 
           //for Longitude
              $lon = $result[$i];
              //stores longitude value in degree
              $lon1[$i] = $lon['y'];
              $longitude[$i] = deg2rad($lon1[$i]); 
                 //for Latitude 
                  $lat_sub = -1 * ($lat1[$i-1] - $lat1[$i]);
                  $lat_sub_deg2rad = deg2rad($lat_sub);
                 //for Longitude 
                  $lon_sub = -1 * ($lon1[$i-1] - $lon1[$i]);
                  $lon_sub_deg2rad = deg2rad($lon_sub);
                   //haversine formula
                  $a = sin($lat_sub_deg2rad/2) * sin($lat_sub_deg2rad/2) + cos($latitude[$i-1]) * cos($latitude[$i]) * sin($lon_sub_deg2rad/2) * sin($lon_sub_deg2rad/2); 
                  $c = 2 * atan2(sqrt($a),sqrt(1-$a));
                  $d = $radius * $c;
                  $sum = $sum + $d;
        }       
  header('Content-Type: application/json');
  echo json_encode($sum);
}

型号:

函数Total_Distance()

    {                     
        $this->mongo_db->select(array('x', 'y'));            
        $query = $this->mongo_db->get(COORDINATE);  
        return $query;
    }