Устройство 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;
}
Других решений пока нет …