Загрузил(а) файлы в 'htdocs/public/data'

This commit is contained in:
homyak 2024-02-24 00:11:55 +03:00
parent cad10cef17
commit 35b193f9a7
3 changed files with 146 additions and 0 deletions

View File

@ -0,0 +1,31 @@
<?php
require dirname(__DIR__) . "../../includes/bootstrap.php";
$response = [];
$station = StationRepository::getInstance()->getObjectById($_GET['id'] ?? null);
if ($station->isExistingObject()) {
$response['station_id'] = $station->id;
$response['coverage'] = [];
$numberOfHours = 10*24; // latest 10 days should be enough
$limit = 5000; // Limit number of packets to reduce load on server (and browser)
if (getWebsiteConfig('coverage_only_moving_senders')) {
$packetPaths = PacketPathRepository::getInstance()->getLatestMovingDataListByReceivingStationId($_GET['id'] ?? null, $numberOfHours, $limit);
} else {
$packetPaths = PacketPathRepository::getInstance()->getLatestDataListByReceivingStationId($_GET['id'] ?? null, $numberOfHours, $limit);
}
foreach ($packetPaths as $path) {
$row = [];
$row['latitude'] = $path['sending_latitude'];
$row['longitude'] = $path['sending_longitude'];
$row['distance'] = $path['distance'];
$response['coverage'][] = $row;
}
}
header('Content-type: application/json');
echo json_encode($response);

View File

@ -0,0 +1,60 @@
<?php
require dirname(__DIR__) . "../../includes/bootstrap.php";
if (isset($_GET['id']) && isInt($_GET['id'])) {
$station = StationRepository::getInstance()->getObjectById($_GET['id']);
} else {
$station = new Station(null);
}
$color = null;
if (isset($_GET['color'])) {
$color = $_GET['color'];
}
$startTimestamp = time() - (60*60*24); // Default to 24h
if (isset($_GET['startts'])) {
$startTimestamp = $_GET['startts'];
}
if ($startTimestamp < (time() - (60*60*24*3))) {
$startTimestamp = time() - (60*60*24*3); // Not older than 3 days allowed
}
$endTimestamp = time();
if (isset($_GET['endts']) && isInt($_GET['endts'])) {
$endTimestamp = $_GET['endts'];
}
$startTimestampString = strftime('%Y%m%d%H%M', $startTimestamp);
$endTimestampString = strftime('%Y%m%d%H%M', $endTimestamp);
if ($station->isExistingObject()) {
$stationIds = [];
if ($station->stationTypeId == 2) {
$currentStations = StationRepository::getInstance()->getObjectListByName($station->name, 2, $station->sourceId);
foreach ($currentStations as $currentStation) {
$stationIds[] = $currentStation->getId();
}
} else {
$stationIds[] = $station->getId();
}
$lateststation = null;
foreach ($stationIds as $stationId) {
$s = StationRepository::getInstance()->getObjectById($stationId);
if ($lateststation === null) {
$lateststation = $s;
} else if ($lateststation->latestConfirmedPacketTimestamp < $s->latestConfirmedPacketTimestamp) {
$lateststation = $s;
}
}
$packets = PacketRepository::getInstance()->getConfirmedObjectListByStationIdList($stationIds, $startTimestamp, $endTimestamp);
$dom = Kml::getInstance()->getKmlDomDocument($lateststation, $packets, $startTimestamp, $endTimestamp, $color);
$kmlOutput = $dom->saveXML();
header('Content-type: application/vnd.google-earth.kml+xml');
header('Content-Disposition: attachment; filename="' . htmlspecialchars($lateststation->name) . '-' . $startTimestampString . '-' . $endTimestampString . '.kml"');
echo Kml::getInstance()->formatKmlContent($kmlOutput, " ", 4);
}

View File

@ -0,0 +1,55 @@
<?php
require dirname(__DIR__) . "../../includes/bootstrap.php";
$response = [];
$station = StationRepository::getInstance()->getObjectById($_GET['id'] ?? null);
if ($station->isExistingObject()) {
$numberOfHours = $_GET['hours'] ?? 1;
$columns = ['timestamp'];
$type = 'speed';
if ($_GET['type'] == 'speed') {
$type = 'speed';
if ($_GET['imperialUnits'] ?? '0' == '1') {
$response[] = array('Время', 'Скорость (миль/ч)');
} else {
$response[] = array('Время', 'Скорость (км/ч)');
}
} else {
$type = 'altitude';
if ($_GET['imperialUnits'] ?? '0' == '1') {
$response[] = array('Время', 'Высота (фут)');
} else {
$response[] = array('Время', 'Высота (м)');
}
}
$columns[] = $type;
$packets = PacketRepository::getInstance()->getLatestDataListByStationId($_GET['id'] ?? null, $numberOfHours, $columns);
foreach($packets as $packet) {
$value = floatval($packet[$type]);
if ($_GET['imperialUnits'] ?? '0' == '1') {
if ($type == 'speed') {
$value = convertKilometerToMile($value);
} else if ($type == 'altitude') {
$value = convertMeterToFeet($value);
}
}
if ($type == 'speed' && count($response) > 1) {
if (isset($response[count($response) - 1])) {
$prevTimestamp = $response[count($response) - 1][0];
if ($prevTimestamp < ($packet['timestamp'] - 60*60)) {
// Previous value is old, make sure we have a break in graph
$response[] = array($prevTimestamp + 1, null);
}
}
}
$response[] = [$packet['timestamp'], $value];
}
}
header('Content-type: application/json');
echo json_encode($response);