2014-10-20 2 views
1

GPS 장치는 이미 일부 차량에 고정되어 있으며 값 (예 : 위도와 경도)을 연속적으로 전달하여 해당 값이 데이터베이스 (mongodb)에 저장됩니다. 이제 데이터베이스에있는 좌표를 사용하여 여행 한 총 거리를 계산하려고했습니다.이미 GPS 좌표가 mongodb에 저장되어있는 GPS 총 거리를 계산하는 방법

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); 
} 
+0

GPS 장치가 이미 일부 차량 연속적 값 (즉, 위도 및 경도) 때문에 그 값을 전달하는 장치에 고정되고,이 데이터베이스에 저장된 (mongodb). 이제 데이터베이스에있는 좌표를 사용하여 여행 한 총 거리를 계산하려고했습니다. –

+0

편집이 더 적절할 것이라고 생각합니다. –

답변

0

컨트롤러 :

여기 내 코드

controller.php의

공공 기능 dist_lat_lon()

,369 1,363,210
{ 
    $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; 
    } 
관련 문제