// STA API endpoint ############################################################################### const frostBaseURL = "https://app.sdk-cloud.de/FROST-Server/v1.1"; //const frostBaseURL = 'https://gi3.gis.lrg.tum.de/frost/v1.1'; // frost queries ################################################################################## // Full intersections let intersectionsQuery = "/Things?$select=@iot.id,name,description,properties,@iot.selfLink" + "&$filter=properties/aggregation_type eq 'whole_intersection'" + "&$expand=Locations($select=@iot.id,@iot.selfLink,location),Datastreams($select=@iot.id,@iot.selfLink)" + "&$count=true&$top=10000"; // Single detectors let detectorsQuery = "/Things?$select=@iot.id,name,description,properties,@iot.selfLink" + "&$filter=properties/aggregation_type eq 'single_detector'" + "&$expand=Locations($select=@iot.id,@iot.selfLink,location),Datastreams($select=@iot.id,@iot.selfLink)" + "&$count=true&$top=10000"; // Query latest Observation let queryLatestObs = "/Datastreams?$filter=substringof('Stream for counts',description)" + "&$orderBy=phenomenonTime asc&$top=1&$select=phenomenonTime"; let uriIntersections = frostBaseURL + intersectionsQuery; let uriDetectors = frostBaseURL + detectorsQuery; let uriLatestObs = frostBaseURL + queryLatestObs; // document.getElementById('query').innerHTML = `${uriIntersections}`; fetchSTA(uriLatestObs, uriIntersections, uriDetectors) .then(([lastObs, inters, detectors]) => { // For debugging // console.log(inters); // console.log(detectors); // console.log(lastObs); // let latestObsDate = new Date(); let latestObsDate = lastObs.value[0].phenomenonTime; // console.log(latestObsDate); let timeSince = 0; try { latestObsDate = new Date(lastObs.value[0].phenomenonTime.split("/")[1]); timeSince = (new Date() - latestObsDate) / (3600 * 1000); } catch (e) { console.error(e); } // Create markers let markers = []; inters.value.forEach(function (e) { let marker = L.marker(switchLatLon(e.Locations[0].location.coordinates), { icon: greenIcon, }); addPopup(e, marker, latestObsDate); addTooltip(e, marker); markers.push(marker); }); detectors.value.forEach(function (e) { let marker = L.marker(switchLatLon(e.Locations[0].location.coordinates)); addPopup(e, marker); addTooltip(e, marker); markers.push(marker); }); // featureGroup let featureGroup = L.featureGroup(markers); map.fitBounds(featureGroup.getBounds()); // markerCluster let markerClusterGroup = L.markerClusterGroup(markerClusterOpts); markers.forEach((marker) => markerClusterGroup.addLayer(marker)); map.addLayer(markerClusterGroup); }) .catch((err) => { console.log("Requesting data from STA failed!"); console.log(err); });