Как рассчитать общее расстояние GPS, где уже хранятся GPS-координаты в 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);
}

1

Решение

контроллер:

публичная функция 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;
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]