0 AND a.transport_provider_id=${t}"; $q.= " AND b.id=a.location_start_id AND c.id=a.location_end_id"; $q.= " AND a.travel_date>'${date1} 00:00' AND a.travel_date<'${date2} 23:59'"; $q.= " AND ST_Contains(ST_GeomFromText('POLYGON((${polygonCoordsString1}))', 4326), b.geometry::geometry)"; $q.= " AND ST_Contains(ST_GeomFromText('POLYGON((${polygonCoordsString2}))', 4326), c.geometry::geometry)"; $q.= " ORDER BY a.travel_date"; $r = pg_query($pgconn, $q); while ($f=pg_fetch_assoc($r)) { $f['origin'] = $area1i['name']; $f['destination'] = $area2i['name']; $f['c'] = $c; $f['time'] = strtotime($f['travel_date']); $data[] = $f; } return [$data,$area1i["name"]." to ".$area2i["name"],$boundaries["polygon"]]; } function trend_line($regression1, $data) { $i = 0; $pub1 = array(); $xs1 = []; $ys1 = []; $ys2 = []; foreach ($data as $f) { $t = $f['time']; $pub1[$t] = array($t,$f['cost']); $xs1[] = [$t]; $ys1[] = $f['cost']; $i++; } if ($i>0) { $regression1->train($xs1,$ys1); } foreach ($pub1 as $key=>$f) { $y = $regression1->predict( [$f[0]] ); $f[2] = $y; $pub1[$key] = $f; } return [$pub1,$xs1,$ys2]; } function variation($data, $i, $f, $t) { global $dMin, $dMax, $tVar, $tVar0; $tVar[] = $f['cost']; $trend = $t[$f['time']][2]; $delta = $f['cost'] - $trend; $variation = stats_variance($tVar); if ($delta>$dMax) $dMax = $delta; if ($delta<$dMin) $dMin = $delta; $tVar0[$f['time']] = $variation; /* { "travel_date":"2020-05-10 14:54:04+00", "cost":"12", "location_start_lat":"1.319292", "location_start_lng":"103.9126091", "location_end_lat":"1.316269", "location_end_lng":"103.977615", "origin":"Central East - Eunos", "destination":"Far East - Changi", "c":"#5555ff"} */ //if ($i<5) error_log(json_encode($t)); return [$trend, $delta, $variation]; }