cfgReadChar('gpsdatabase.host');
$gps_db_port = $savvyext->cfgReadLong('gpsdatabase.port');
$gps_db_name = $savvyext->cfgReadChar('gpsdatabase.name');
$gps_db_user = $savvyext->cfgReadChar('gpsdatabase.user');
$gps_db_pass = $savvyext->cfgReadChar('gpsdatabase.pass');
$conn_string_gps = "host=${gps_db_host} port=${gps_db_port} dbname=${gps_db_name} user=${gps_db_user} password=${gps_db_pass}";
$pgconn_gps = pg_connect($conn_string_gps);
$res = [];
$min_lat = PHP_INT_MAX;
$min_lng = PHP_INT_MAX;
$max_lat = PHP_INT_MIN;
$max_lng = PHP_INT_MIN;
$center_lat = 0;
$center_lng = 0;
$member_id=$_GET['member_id']??0;
$q= "select traked_group, ttime::date as tracked_date, count(*) as point from members_tracking where member_id=".$member_id." group by traked_group,ttime::date ORDER by tracked_date DESC";
$q="
select traked_group, tracked_date, count(*) as point from
(select distinct traked_group,lat,lng, ttime::date as tracked_date from members_tracking where member_id=".$member_id."
group by traked_group,lat,lng,ttime::date ORDER by tracked_date DESC) as summary
group by summary.traked_group, summary.tracked_date
ORDER by summary.tracked_date DESC
LIMIT 50";
$r = pg_query($pgconn_gps, $q);
?>
GPS speed test
0 && $traked_group>0){
$q = "select distinct a.traked_group, a.lat, a.lng, extract(epoch from a.ttime-b.ttime) as seconds,a.* from members_tracking a left join members_tracking b on (b.id=a.previous_id) ";
$q.= "where a.member_id=".$member_id." and a.traked_group='".$traked_group."' and a.ttime::date='".$tracked_date."' order by a.ttime asc";
$r = pg_query($pgconn_gps, $q);
while ($f=pg_fetch_assoc($r)) {
$res[] = $f;
if ($f["lat"]<$min_lat) $min_lat = $f["lat"];
if ($f["lng"]<$min_lng) $min_lng = $f["lng"];
if ($f["lat"]>$max_lat) $max_lat = $f["lat"];
if ($f["lng"]>$max_lng) $max_lng = $f["lng"];
}
$center_lat = ($min_lat+$max_lat)/2;
$center_lng = ($min_lng+$max_lng)/2;
pg_close($pgconn_gps);
}
?>
= distanceBetweenTwoGpsCoordinates($min_lat,$min_lng,$max_lat,$max_lng,'K'); ?>
| ID |
Group |
GPS |
Duration |
Seconds |
Speed |
Syn.speed |
Distance |
Time |
foreach ($res as $f) { ?>
| =$f["id"]?> |
=$f["traked_group"]?> |
=$f["lat"]?>,=$f["lng"]?> |
=$f["duration"]?> |
=strtok($f["seconds"],'.')?> |
=sprintf("%0.02f",$f["speed"])?> |
=$f["seconds"]>0?sprintf("%0.02f",$f["distance"]/$f["seconds"]):0?> |
=$f["distance"]?> |
=strtok($f["ttime"],'.')?> |
} ?>
function distanceBetweenTwoGpsCoordinates($lat1,$lon1,$lat2,$lon2,$unit) {
//error_log("public function distanceBetweenTwoGpsCoordinates($lat1,$lon1,$lat2,$lon2,$unit)");
if (($lat1 == $lat2) && ($lon1 == $lon2)) {
return 0;
}
$theta = $lon1 - $lon2;
$dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) + cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($theta));
$dist = acos($dist);
$dist = rad2deg($dist);
$miles = $dist * 60 * 1.1515;
$unit = strtoupper($unit);
if ($unit == "K") {
return ($miles * 1.609344);
}
if ($unit == "N") {
($miles * 0.8684);
}
return $miles;
}