const http = require('http'); const fs = require('fs'); const express = require('express') const app = express(); const bodyParser = require('body-parser') const soap = require('soap'); app.use(bodyParser.urlencoded({ extended: false })) app.use(bodyParser.json()) const request_ajax = require('ajax-request'); const request = require('request'); const polycalc = require('./codepoly.js'); const { isEmptyObject } = require('jquery'); //console.log(polycalc) app.use(express.static('vcm')); app.listen(process.env.PORT || 8083); console.log("on 8083"); // //Public Transport https://transit.router.hereapi.com/v8/routes?origin=48.803175,9.226140&destination=48.780264,9.172469&return=polyline&apiKey=9Grm-6B7VRvxAnbf2eKw29gR-9uuJP8VaXXYR8LK93Y // //https://traffic.ls.hereapi.com/traffic/6.1/flow.json?bbox=48.8575,8.9757;48.6747,9.3712&responseattributes=sh%2Cfc&apiKey=9Grm-6B7VRvxAnbf2eKw29gR-9uuJP8VaXXYR8LK93Y // var flow // request('https://traffic.ls.hereapi.com/traffic/6.2/flow.json?prox=48.7823,9.1807,919&responseattributes=sh%2Cfc&apiKey=9Grm-6B7VRvxAnbf2eKw29gR-9uuJP8VaXXYR8LK93Y', {json:true},(err, res, body) => { // if (err) {return console.log(err); } // console.log(body.url); // console.log(body.explanation); // flow = res // }) // var accident // request('https://traffic.ls.hereapi.com/traffic/6.3/incidents.json?apiKey=9Grm-6B7VRvxAnbf2eKw29gR-9uuJP8VaXXYR8LK93Y&bbox=48.790,9.139;48.771,9.239', { json: true }, (err, res, body) => { // if (err) { return console.log(err); } // console.log(body.url); // console.log(body.explanation); // accident = res // console.log(accident[1]); // }); // var navcar // // request('https://router.hereapi.com/v8/routes?transportMode=car&origin=48.803175,9.226140&destination=48.780264,9.172469&return=polyline&apiKey=9Grm-6B7VRvxAnbf2eKw29gR-9uuJP8VaXXYR8LK93Y', {json:true},(err, res, body) => { // // if (err) {return console.log(err); } // // console.log(body.url); // // console.log(body.explanation); // // navcar = res // // }) // var testjsonsflow = { // "type": "FeatureCollection", // "features": [ // { // "type": "Feature", // "properties": {}, // "geometry": { // "type": "LineString", // "coordinates": [ // [ // 9.211758404732821, // 48.79928779052079, // -0.003812428450083977 // ], // [ // 9.21372550369925, // 48.79757037042029, // -0.004464600820639255 // ], // [ // 9.217416766673484, // 48.79386716715126, // -0.0037284616307613283 // ], // [ // 9.217370353016513, // 48.79390319685058, // -0.0038132023499026415 // ] // ] // }, // "vcsMeta": { // "style": { // "type": "vector", // "stroke": { // "color": [ // 51, // 153, // 204, // 1 // ], // "width": 39, // "lineDash": null // } // } // } // } // ], // "vcsMeta": { // "version": "1.0", // "altitudeMode": "clampToGround", // "embeddedIcons": [] // } // } // var flowjson; // app.get('/FLOW', function (req, res) { // console.log('command angekommen!') // try { // // res.json(testjsonsflow); // res.json(flowjson); // console.log('.../loadSetP successful!'); // } // catch (err) { // console.log('.../loadSetP failed!\n' + err); // } // }); // // var navcartest; // var navcarjson; // app.get('/NAVCAR', function (req, res) { // console.log('command angekommen!') // try { // // console.log(navcar.body.routes[0].sections[0].polyline) // // var pol = polycalc.decode(navcar.body.routes[0].sections[0].polyline) // // console.log(pol) // // res.json(testjsonsflow); // res.json(navcarjson); // // console.log(navcarjson) // console.log('.../loadSetP successful!'); // } // catch (err) { // console.log('.../loadSetP failed!\n' + err); // } // }); // app.get('/CONSTRUCTION2', function (req, res) { // console.log('command angekommen!') // try { // var testjson = { // "name":"incident" + "01", // "type":"FeatureCollection", // "crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } }, // "features": buildJSON('CONSTRUCTION') // }; // res.json(testjson); // console.log('.../loadSetP successful!'); // } // catch (err) { // console.log('.../loadSetP failed!\n' + err); // } // }); // app.get('/ROAD_CLOSURE2', function (req, res) { // console.log('command angekommen!') // try { // var testjson = { // "name":"incident" + "01", // "type":"FeatureCollection", // "crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } }, // "features": buildJSON('ROAD_CLOSURE') // }; // res.json(testjson); // console.log('.../loadSetP successful!'); // } // catch (err) { // console.log('.../loadSetP failed!\n' + err); // } // }); // function buildFLOW(){ // var JsonFeature = []; // var length = flow.body.RWS[0].RW.length; // // console.log(length); // for (var i = 0; i<= length -1; i++){ // var shplength = flow.body.RWS[0].RW[i].FIS[0].FI[0].SHP.length; // // var type = accident.body.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].TRAFFIC_ITEM_TYPE_DESC; // var mid = flow.body.RWS[0].RW[i].mid; // var LI = flow.body.RWS[0].RW[i].LI; // var DE = flow.body.RWS[0].RW[i].DE; // var PBT = flow.body.RWS[0].RW[i].PBT; // var TMC = flow.body.RWS[0].RW[i].FIS[0].FI[0].TMC; // var CF = flow.body.RWS[0].RW[i].FIS[0].FI[0].CF[0]; // var locationshp = []; // for (var j = 0; j <= shplength - 1; j++ ){ // var value = flow.body.RWS[0].RW[i].FIS[0].FI[0].SHP[j].value[0]; // // console.log(value[0]) // var splitvalue = []; // splitvalue = value.split(" "); // // console.log(splitvalue.length) // var coord = []; // for (var k = 0; k <= splitvalue.length -2; k++){ // var latlon = []; // latlon = splitvalue[k].split(","); // var lat = latlon[0]; // var lon = latlon[1]; // coord.push([parseFloat(lon),parseFloat(lat)]) // } // // var FC = accident.body.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].LOCATION.GEOLOC.ORIGIN.LONGITUDE; // locationshp.push(coord) // // console.log(value) // } // if (CF.JF){ // // console.log("CF.JF -- " + CF.JF) // } // if ((CF.JF >= 3) ){ // JsonFeature.push({ // "type":"Feature", // "properties": { "id": mid, "name": "linestring" , "LI": LI, "DE": DE, "PBT":PBT, "TMC":TMC, "CF":CF}, // "geometry":{ // "type":"MultiLineString", // "coordinates": locationshp // }, // "vcsMeta": { // "style": { // "type": "vector", // "stroke": { // "color": [ // 153, // 0, // 0, // 1 // ], // "width": 2, // "lineDash": null // } // } // } // }) // } else if ((CF.JF <3 && CF.JF >= 2) ){ // JsonFeature.push({ // "type":"Feature", // "properties": { "id": mid, "name": "linestring" , "LI": LI, "DE": DE, "PBT":PBT, "TMC":TMC, "CF":CF}, // "geometry":{ // "type":"MultiLineString", // "coordinates": locationshp // }, // "vcsMeta": { // "style": { // "type": "vector", // "stroke": { // "color": [ // 255, // 153, // 51, // 1 // ], // "width": 2, // "lineDash": null // } // } // } // }) // } else if ((CF.JF <2 && CF.JF >= 1)){ // JsonFeature.push({ // "type":"Feature", // "properties": { "id": mid, "name": "linestring" , "LI": LI, "DE": DE, "PBT":PBT, "TMC":TMC, "CF":CF}, // "geometry":{ // "type":"MultiLineString", // "coordinates": locationshp // }, // "vcsMeta": { // "style": { // "type": "vector", // "stroke": { // "color": [ // 230, // 230, // 0, // 1 // ], // "width": 2, // "lineDash": null // } // } // } // }) // } else if ((CF.JF < 1)){ // JsonFeature.push({ // "type":"Feature", // "properties": { "id": mid, "name": "linestring" , "LI": LI, "DE": DE, "PBT":PBT, "TMC":TMC, "CF":CF}, // "geometry":{ // "type":"MultiLineString", // "coordinates": locationshp // }, // "vcsMeta": { // "style": { // "type": "vector", // "stroke": { // "color": [ // 0, // 153, // 0, // 1 // ], // "width": 2, // "lineDash": null // } // } // } // }) // } // // JsonFeature.push({ // // "type":"Feature", // // "properties": { "id": mid, "name": "linestring" , "LI": LI, "DE": DE, "PBT":PBT, "TMC":TMC, "CF":CF}, // // "geometry":{ // // "type":"MultiLineString", // // "coordinates": locationshp // // }, // // "vcsMeta": { // // "style": { // // "type": "vector", // // "stroke": { // // "color": [ // // 51, // // 153, // // 204, // // 1 // // ], // // "width": 39, // // "lineDash": null // // } // // } // // } // // }) // // console.log(JsonFeature) // } // return JsonFeature // } // function buildNavCar(){ // var JsonFeature = []; // var pol = polycalc.decode(navcar.body.routes[0].sections[0].polyline) // var length = pol.polyline.length; // // console.log(length); // var id = navcar.body.routes[0].id; // var mid = navcar.body.routes[0].sections[0].id; // var transport = navcar.body.routes[0].sections[0].transport.mode; // var departureTime = navcar.body.routes[0].sections[0].departure.time; // var departureOriglat = navcar.body.routes[0].sections[0].departure.place.originalLocation.lat; // // console.log(departureOriglat) // var departureOriglon = navcar.body.routes[0].sections[0].departure.place.originalLocation.lng; // // console.log(departureOriglon) // var departurelat = navcar.body.routes[0].sections[0].departure.place.location.lat; // var departurelon = navcar.body.routes[0].sections[0].departure.place.location.lng; // var arrivalTime = navcar.body.routes[0].sections[0].arrival.time; // var arrivalOriglat = navcar.body.routes[0].sections[0].arrival.place.originalLocation.lat; // var arrivalOriglon = navcar.body.routes[0].sections[0].arrival.place.originalLocation.lng; // var arrivallat = navcar.body.routes[0].sections[0].arrival.place.location.lat; // var arrivallon = navcar.body.routes[0].sections[0].arrival.place.location.lng; // var departure = []; // departure.push([parseFloat(parseFloat(departureOriglon).toFixed(5)),parseFloat(parseFloat(departureOriglat).toFixed(5))]); // departure.push([parseFloat(parseFloat(departurelon).toFixed(5)),parseFloat(parseFloat(departurelat).toFixed(5))]) // timeDifference(departureTime,arrivalTime); // JsonFeature.push({ // "type":"Feature", // "properties": { "id": id, "name": "linestring" ,"transport": transport,"departureTime": departureTime, "daysDifference": daysDifference, "hoursDifference": hoursDifference, "minutesDifference" : minutesDifference, "secondsDifference": secondsDifference}, // "geometry":{ // "type":"LineString", // "coordinates": departure // }, // "vcsMeta": { // "style": { // "type": "vector", // "stroke": { // "color": [ // 30,144,255, // 1 // ], // "width": 3, // "lineDash": null // } // } // } // }) // var arrival = []; // arrival.push([parseFloat(parseFloat(arrivalOriglon).toFixed(5)),parseFloat(parseFloat(arrivalOriglat).toFixed(5))]); // arrival.push([parseFloat(parseFloat(arrivallon).toFixed(5)),parseFloat(parseFloat(arrivallat).toFixed(5))]) // // console.log(arrival) // JsonFeature.push({ // "type":"Feature", // "properties": { "id": id, "name": "linestring" ,"transport": transport,"arrivalTime": arrivalTime,"departureTime": departureTime, "daysDifference": daysDifference, "hoursDifference": hoursDifference, "minutesDifference" : minutesDifference, "secondsDifference": secondsDifference}, // "geometry":{ // "type":"LineString", // "coordinates": arrival // }, // "vcsMeta": { // "style": { // "type": "vector", // "stroke": { // "color": [ // 30,144,255, // 1 // ], // "width": 3, // "lineDash": null // } // } // } // }) // var pline = []; // var length = pol.polyline.length; // for (var i = 0; i<= length -1; i++){ // pline.push([parseFloat(parseFloat(pol.polyline[i][1]).toFixed(5)),parseFloat(parseFloat(pol.polyline[i][0]).toFixed(5))]) // } // JsonFeature.push({ // "type":"Feature", // "properties": { "id": id, "name": "linestring" ,"transport": transport,"departureTime": departureTime, "daysDifference": daysDifference, "hoursDifference": hoursDifference, "minutesDifference" : minutesDifference, "secondsDifference": secondsDifference}, // "geometry":{ // "type":"LineString", // "coordinates": pline // }, // "vcsMeta": { // "style": { // "type": "vector", // "stroke": { // "color": [ // 199,21,133, // 1 // ], // "width": 4, // "lineDash": null // } // } // } // }) // // console.log(JsonFeature) // return JsonFeature // } // function buildJSON(type){ // var JsonFeature = []; // var length = accident.body.TRAFFIC_ITEMS.TRAFFIC_ITEM.length; // // console.log(length) // for (var i = 0; i <= length - 1; i++){ // // console.log(accident.body.TRAFFIC_ITEMS.TRAFFIC_ITEM[i]) // var lat = accident.body.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].LOCATION.GEOLOC.ORIGIN.LATITUDE; // var lon = accident.body.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].LOCATION.GEOLOC.ORIGIN.LONGITUDE; // // var type = accident.body.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].TRAFFIC_ITEM_TYPE_DESC; // var id = accident.body.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].TRAFFIC_ITEM_ID; // var origid = accident.body.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].ORIGINAL_TRAFFIC_ITEM_ID; // var TRAFFIC_ITEM_DESCRIPTION = accident.body.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].TRAFFIC_ITEM_DESCRIPTION; // var COMMENTS = accident.body.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].COMMENTS; // var CRITICALITY = accident.body.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].CRITICALITY; // var VERIFIED = accident.body.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].VERIFIED; // var TRAFFIC_ITEM_TYPE_DESC = accident.body.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].TRAFFIC_ITEM_TYPE_DESC; // var TRAFFIC_ITEM_STATUS_SHORT_DESC = accident.body.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].TRAFFIC_ITEM_STATUS_SHORT_DESC; // var TRAFFIC_ITEM_DETAIL = accident.body.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].TRAFFIC_ITEM_DETAIL; // var START_TIME = accident.body.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].START_TIME; // var LOCATION = accident.body.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].LOCATION; // var ENTRY_TIME = accident.body.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].ENTRY_TIME; // var END_TIME = accident.body.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].END_TIME; // var ABBREVIATION = accident.body.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].ABBREVIATION; // if (type == 'CONSTRUCTION'){ // // console.log(i) // if (TRAFFIC_ITEM_TYPE_DESC == "CONSTRUCTION"){ // JsonFeature.push({ // "type":"Feature", // "properties": { "id": id, "name": "datapoint" , "original_traffic_id": origid, "TRAFFIC_ITEM_DESCRIPTION": TRAFFIC_ITEM_DESCRIPTION, "COMMENTS":COMMENTS, "CRITICALITY":CRITICALITY, // "VERIFIED":VERIFIED,"TRAFFIC_ITEM_TYPE_DESC":TRAFFIC_ITEM_TYPE_DESC, "TRAFFIC_ITEM_STATUS_SHORT_DESC":TRAFFIC_ITEM_STATUS_SHORT_DESC, "TRAFFIC_ITEM_DETAIL":TRAFFIC_ITEM_DETAIL, // "START_TIME":START_TIME, "LOCATION":LOCATION, "ENTRY_TIME":ENTRY_TIME, "END_TIME":END_TIME, "ABBREVIATION":ABBREVIATION}, // "geometry":{ // "type":"MultiPoint", // "coordinates": [ [lon, lat]] // } // }) // } // } else if (type == "ROAD_CLOSURE"){ // if (TRAFFIC_ITEM_TYPE_DESC == "ROAD_CLOSURE"){ // JsonFeature.push({ // "type":"Feature", // "properties": { "id": id, "name": "datapoint" , "original_traffic_id": origid, "TRAFFIC_ITEM_DESCRIPTION": TRAFFIC_ITEM_DESCRIPTION, "COMMENTS":COMMENTS, "CRITICALITY":CRITICALITY, // "VERIFIED":VERIFIED,"TRAFFIC_ITEM_TYPE_DESC":TRAFFIC_ITEM_TYPE_DESC, "TRAFFIC_ITEM_STATUS_SHORT_DESC":TRAFFIC_ITEM_STATUS_SHORT_DESC, "TRAFFIC_ITEM_DETAIL":TRAFFIC_ITEM_DETAIL, // "START_TIME":START_TIME, "LOCATION":LOCATION, "ENTRY_TIME":ENTRY_TIME, "END_TIME":END_TIME, "ABBREVIATION":ABBREVIATION}, // "geometry":{ // "type":"MultiPoint", // "coordinates": [ [lon, lat]] // } // }) // } // } // } // return JsonFeature; // } // app.post('/getTrafficIncidents', function (req, res) { // console.log('command angekommen!') // try { // res.json(accident); // console.log('.../loadSetP successful!'); // } // catch (err) { // console.log('.../loadSetP failed!\n' + err); // } // }); // app.post('/FLOWdata', function (req, res) { // console.log('command angekommen!') // try { // flowjson = { // "name":"flow" + "01", // "type":"FeatureCollection", // "crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } }, // "features": buildFLOW() // }; // res.json(flowjson); // console.log('.../loadSetP successful!'); // } // catch (err) { // console.log('.../loadSetP failed!\n' + err); // } // }); // app.post('/FLOWtest', function (req, res) { // console.log('command angekommen!') // try { // res.json(testjsonsflow); // console.log('.../loadSetP successful!'); // } // catch (err) { // console.log('.../loadSetP failed!\n' + err); // } // }); // app.post('/NavCARdata', function (req, res) { // console.log('command angekommen!') // try { // navcarjson = { // "name":"navcar" + "01", // "type":"FeatureCollection", // "crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } }, // "features": buildNavCar() // }; // res.json(navcarjson); // console.log('.../loadSetP successful!'); // } // catch (err) { // console.log('.../loadSetP failed!\n' + err); // } // }); // var IDGeojson = 100000 // var ballonContent = { // header: "Test", // Content: "This is a test", // lat: "", // lon: "", // categorie: "locationSM.png" // } // app.post('/', function(req,res){ // try { // const data = req.body; // console.log("data ==============") // // console.log(data.header); // // console.log(data.Content); // // console.log(data.lat); // // console.log(data.lon); // // console.log(data.categorie); // ballonContent.header = data.header; // ballonContent.Content = data.Content; // ballonContent.lat = data.lat; // ballonContent.lon = data.lon; // ballonContent.categorie = data.categorie; // console.log("args ==============") // // console.log(args); // //asdf // // const returnedTarget = Object.assign(args.ui,data); // // args.ui = data; // // args.gmlid = data.id; // // console.log("returned ==============") // // console.log(returnedTarget) // // console.log("args ==============") // // console.log(args); // getCurrentFilenames(); // writeGeojsonFile(); // writeConfigFile(); // res.end('It worked!'); // } // catch (err) { // console.log('.../getSimS failed!\n' + err); // } // }); // var Startpoint; // var Startpointlat; // var Startpointlon; // var Endpoint; // var Endpointlat; // var Endpointlon; // List all the filenames before renaming // app.post('/navPoint', function(req,res){ // try { // console.log("navPoint arrived ////////") // const data = req.body; // console.log("data ==============") // console.log(data.lat); // console.log(data.lon); // console.log(data.loc); // if (data.loc == "Start"){ // Startpointlat = parseFloat(parseFloat(data.lat).toFixed(7)) // Startpointlon = parseFloat(parseFloat(data.lon).toFixed(7)) // Startpoint = { // "type":"FeatureCollection", // "name":"data_point", // "crs":{ // "type":"name", // "properties":{ // "name":"urn:ogc:def:crs:OGC:1.3:CRS84" // } // }, // "features":[ // { // "type":"Feature", // "properties":{ // "id":null, // "name":"datapoint" // }, // "geometry":{ // "type":"Point", // "coordinates":[ // parseFloat(parseFloat(data.lon).toFixed(7)), // parseFloat(parseFloat(data.lat).toFixed(7)) // ] // } // } // ] // } // // Startpoint.push({ // // "type":"Feature", // // "properties": { "id": data.loc, "name": "datapoint"}, // // "geometry":{ // // "type":"MultiPoint", // // "coordinates": [ [data.lon, data.lat]] // // } // // }) // console.log(Startpoint) // res.json(Startpoint); // } else if (data.loc == "End"){ // Endpointlat = parseFloat(parseFloat(data.lat).toFixed(7)) // Endpointlon = parseFloat(parseFloat(data.lon).toFixed(7)) // Endpoint = { // "type":"FeatureCollection", // "name":"data_point", // "crs":{ // "type":"name", // "properties":{ // "name":"urn:ogc:def:crs:OGC:1.3:CRS84" // } // }, // "features":[ // { // "type":"Feature", // "properties":{ // "id":null, // "name":"datapoint" // }, // "geometry":{ // "type":"Point", // "coordinates":[ // parseFloat(parseFloat(data.lon).toFixed(7)), // parseFloat(parseFloat(data.lat).toFixed(7)) // ] // } // } // ] // } // res.json(Endpoint); // } // } // catch (err) { // console.log('.../getSimS failed!\n' + err); // } // }); // app.get('/Startpoint', function (req, res) { // console.log('command angekommen ////// Startpoint!') // try { // // res.json(testjsonsflow); // res.json(Startpoint); // console.log('.../loadSetP successful!'); // } // catch (err) { // console.log('.../loadSetP failed!\n' + err); // } // }); // app.get('/Endpoint', function (req, res) { // console.log('command angekommen!') // try { // // res.json(testjsonsflow); // res.json(Endpoint); // console.log('.../loadSetP successful!'); // } // catch (err) { // console.log('.../loadSetP failed!\n' + err); // } // }); // function getCurrentFilenames() { // console.log("Current filenames:"); // fs.readdirSync(__dirname + '/vcm/templates').forEach(file => { // if (file.includes('.geojson')){ // var tempid = file.replace('.geojson','') // // console.log(tempid) // if (isNaN(tempid) == false){ // var tempid = parseInt(tempid, 10); // if (tempid >= IDGeojson){ // IDGeojson = tempid // console.log("this one - " + IDGeojson) // } // } else { // console.log("not this one - " + tempid) // } // } // // console.log(file); // }); // IDGeojson += 1 // } // function writeGeojsonFile() { // var geojsontemplate = ' {' + // ' "type": "FeatureCollection",' + // ' "name": "data_point",' + // '"crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } },' + // ' "features": [' + // ' { "type": "Feature", "properties": { "id": null, "name": "datapoint" }, "geometry": { "type": "Point", "coordinates": [ ' + ballonContent.lon + ', ' + ballonContent.lat + ' ] } }' + // ' ]' + // ' }' // console.log(geojsontemplate); // try { // console.log(geojsontemplate); // fs.writeFile(__dirname + "/vcm/templates/" + IDGeojson + '.geojson', geojsontemplate, function (err) { // if (err) throw err; // console.log('Saved!'); // }); // } catch (err) { // console.error(err); // } // } // function writeConfigFile(){ // // name of the file // var filename = 'vcm/config.json'; // var contentSync = fs.readFileSync(filename); // console.log('Content of the file : ' + contentSync); // console.log(contentSync.includes('"balloonTypes":')); // var newtext = contentSync.toString().replace('"layers": [','"layers": [' + // '{' + // '"name": "'+ IDGeojson +'",' + // '"url": "./templates/'+IDGeojson+'.geojson",' + // '"type": "vcs.vcm.layer.GeoJSON",' + // '"datasourceId": "...",'+ // '"activeOnStartup": true,'+ // '"exclusive": false,' + // '"projection": {' + // ' "epsg": "4326",' + // ' "proj4": ""' + // '},' + // '"altitudeMode": "relativeToGround",' + // '"style": {' + // ' "image": {' + // ' "icon": {' + // ' "src": "./templates/' + ballonContent.categorie + '",' + // ' "scale": 0.5' + // ' }' + // ' }' + // '},' + // '"heightAboveGround": 0' + // '},') // var ballonText = "\"balloonTypes\": [" + // "{" + // "\"template\": [" + // "\"
\"," + // "\"

" + ballonContent.header + "

\"," + // "\"
\"," + // "\"

" + ballonContent.Content + "

\"," + // // "\"Simply Easy Learning\"," + // "\"
\"," + // "\"<% %>\"" + // // "\"<% openquestionaire() %>\"" + // "]," + // "\"minTop\": \"balloonHeight + 10\"," + // "\"minLeft\": \"70\"," + // "\"layerTypes\": [" + // "\"\""+ // "],"+ // "\"layerNames\": [" + // "\""+ IDGeojson +"\"" + // "]" + // "}," // var newtext = newtext.toString().replace("\"balloonTypes\": [", ballonText) // console.log(newtext); // fs.writeFile(filename, newtext, 'utf8', function (err) { // if (err) return console.log(err); // }); // } // function writeBallon() { // var ballonText = "{" + // "\"template\": [" + // "\"
\"," + // "\"

Station 3

\"," + // "\"
\"," + // "\"

hier wurde eine Outdoorkiosk errichtet.

\"," + // "\"Simply Easy Learning\"," + // "\"
\"," + // "\"<% %>\"," + // "\"<% openquestionaire() %>\"" + // "]," + // "\"minTop\": \"balloonHeight + 10\"," + // "\"minLeft\": \"70\"," + // "\"layerTypes\": [" + // "\"\""+ // "],"+ // "\"layerNames\": [" + // "\"LocationThree\"" + // "]" + // "}," // } var minutesDifference var hoursDifference var secondsDifference var daysDifference function timeDifference(date11,date22) { var date2 = new Date(date11); var date1 = new Date(date22); var difference = date1 - date2 daysDifference = Math.floor(difference/1000/60/60/24); difference -= daysDifference*1000*60*60*24 hoursDifference = Math.floor(difference/1000/60/60); difference -= hoursDifference*1000*60*60 minutesDifference = Math.floor(difference/1000/60); difference -= minutesDifference*1000*60 secondsDifference = Math.floor(difference/1000); console.log('difference = ' + daysDifference + ' day/s ' + hoursDifference + ' hour/s ' + minutesDifference + ' minute/s ' + secondsDifference + ' second/s '); } function timeDifference1(date11,date22) { var date2 = new Date(date11); var date1 = new Date(date22); var difference = date1 - date2 var minutesDifference1 var hoursDifference1 var secondsDifference1 var daysDifference1 daysDifference1 = Math.floor(difference/1000/60/60/24); difference -= daysDifference1*1000*60*60*24 hoursDifference1 = Math.floor(difference/1000/60/60); difference -= hoursDifference1*1000*60*60 minutesDifference1 = Math.floor(difference/1000/60); difference -= minutesDifference1*1000*60 secondsDifference1 = Math.floor(difference/1000); console.log('difference = ' + daysDifference1 + ' day/s ' + hoursDifference1 + ' hour/s ' + minutesDifference1 + ' minute/s ' + secondsDifference1 + ' second/s '); var result = {"daysDifference":daysDifference1, "hoursDifference":hoursDifference1, "minutesDifference":minutesDifference1, "secondsDifference":secondsDifference1} return(result); } // app.post('/Routecalc', function (req, res) { // console.log('command angekommen ////// Route/////!') // const pointData = req.body; // try { // console.log('https://router.hereapi.com/v8/routes?transportMode=car&origin='+ pointData.slat + ',' + pointData.slon + '&destination=' + pointData.elat + ',' + pointData.elon + '&return=polyline&apiKey=9Grm-6B7VRvxAnbf2eKw29gR-9uuJP8VaXXYR8LK93Y') // request('https://router.hereapi.com/v8/routes?transportMode=car&origin='+ pointData.slat + ',' + pointData.slon + '&destination=' + pointData.elat + ',' + pointData.elon + '&return=polyline&apiKey=9Grm-6B7VRvxAnbf2eKw29gR-9uuJP8VaXXYR8LK93Y', {json:true},(err, res, body) => { // if (err) {return console.log(err); } // console.log(body.url); // console.log(body.explanation); // navcar = res // }) // navcarjson = { // "name":"navcar" + "01", // "type":"FeatureCollection", // "crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } }, // "features": buildNavCar() // }; // // res.json(testjsonsflow); // console.log(navcarjson); // console.log('.../route calc successful!'); // res.json(navcarjson); // } // catch (err) { // console.log('.../loadSetP failed!\n' + err); // } // }); // var responseStuff // var navPublicjson // app.post('/navPublicT', function (req, res) { // console.log('command angekommen ////// Route/////!') // const pointData = req.body; // console.log(pointData.slat); // try { // console.log('https://transit.router.hereapi.com/v8/routes?origin='+ parseFloat(parseFloat(pointData.slat).toFixed(5)) + ',' + parseFloat(parseFloat(pointData.slon).toFixed(5)) + '&destination=' + parseFloat(parseFloat(pointData.elat).toFixed(5)) + ',' + parseFloat(parseFloat(pointData.elon).toFixed(5)) + '&return=polyline&apiKey=9Grm-6B7VRvxAnbf2eKw29gR-9uuJP8VaXXYR8LK93Y') // request('https://transit.router.hereapi.com/v8/routes?origin='+ parseFloat(parseFloat(pointData.slat).toFixed(5)) + ',' + parseFloat(parseFloat(pointData.slon).toFixed(5)) + '&destination=' + parseFloat(parseFloat(pointData.elat).toFixed(5)) + ',' + parseFloat(parseFloat(pointData.elon).toFixed(5)) + '&return=polyline&apiKey=9Grm-6B7VRvxAnbf2eKw29gR-9uuJP8VaXXYR8LK93Y', {json:true},(err, res, body) => { // if (err) {return console.log(err); } // // console.log(body.url); // // console.log(body.explanation); // responseStuff = res // // console.log(responseStuff); // console.log('.../route calc successful!'); // }) // for (i = 1; i<= 1000; ++i){ // if (responseStuff){ // console.log("responseStuff"); // navPublicjson = { // "name":"navPublic" + "01", // "type":"FeatureCollection", // "crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } }, // "features": buildNavPublic() // }; // res.json(navPublicjson); // break; // } // } // } // catch (err) { // console.log('.../loadSetP failed!\n' + err); // } // }); // function buildNavPublic(){ // var JsonFeature = []; // // var pol = polycalc.decode(navcar.body.routes[0].sections[0].polyline) // // var length = pol.polyline.length; // // console.log(length); // var id = responseStuff.body.routes[0].id; // var length = responseStuff.body.routes[0].sections.length; // console.log("length of Sections: " + length) // for (var i = 0; i<= length -1; i++){ // console.log(i) // if (responseStuff.body.routes[0].sections[i].type == "pedestrian"){ // console.log("pedestrian") // var section = responseStuff.body.routes[0].sections[i] // var agencyid = section.id; // var agencyname = section.name; // var arrivaltime = section.arrival.time; // var arrivalplace = section.arrival.place; // var departuretime = section.departure.time; // var departureplace = section.departure.place; // var transportInfo = section.transport; // var pol = polycalc.decode(section.polyline) // var pollength = pol.polyline.length; // var timedifference = timeDifference1(departuretime,arrivaltime); // var pline = []; // for (var j = 0; j<= pollength -1; j++){ // pline.push([parseFloat(parseFloat(pol.polyline[j][1]).toFixed(5)),parseFloat(parseFloat(pol.polyline[j][0]).toFixed(5))]) // } // JsonFeature.push({ // "type":"Feature", // "properties": { "id": agencyid,"agencyName":agencyname, "name": "linestring" ,"type": "pedestrian","transportInfo":transportInfo,"arrivalTime": arrivaltime,"arrivalPlace": arrivalplace,"departureTime": departuretime,"departurePlace": departureplace, "daysDifference": timedifference.daysDifference, "hoursDifference": timedifference.hoursDifference, "minutesDifference" : timedifference.minutesDifference, "secondsDifference": timedifference.secondsDifference}, // "geometry":{ // "type":"LineString", // "coordinates": pline // }, // "vcsMeta": { // "style": { // "type": "vector", // "stroke": { // "color": [ // 30,144,255, // 1 // ], // "width": 3, // "lineDash": null // } // } // } // }) // console.log(JsonFeature) // } else if (responseStuff.body.routes[0].sections[i].type == "transit"){ // console.log("transit") // var section = responseStuff.body.routes[0].sections[i] // var agencyid = section.id; // var agencyname = section.name; // var arrivaltime = section.arrival.time; // var arrivalplace = section.arrival.place; // var departuretime = section.departure.time; // var departureplace = section.departure.place; // var transportInfo = section.transport; // var pol = polycalc.decode(section.polyline) // var pollength = pol.polyline.length; // var timedifference = timeDifference1(departuretime,arrivaltime); // var pline = []; // for (var j = 0; j<= pollength -1; j++){ // pline.push([parseFloat(parseFloat(pol.polyline[j][1]).toFixed(5)),parseFloat(parseFloat(pol.polyline[j][0]).toFixed(5))]) // } // JsonFeature.push({ // "type":"Feature", // "properties": { "id": agencyid,"agencyName":agencyname, "name": "linestring" ,"type": "transit","transportInfo":transportInfo,"arrivalTime": arrivaltime,"arrivalPlace": arrivalplace,"departureTime": departuretime,"departurePlace": departureplace, "daysDifference": timedifference.daysDifference, "hoursDifference": timedifference.hoursDifference, "minutesDifference" : timedifference.minutesDifference, "secondsDifference": timedifference.secondsDifference}, // "geometry":{ // "type":"LineString", // "coordinates": pline // }, // "vcsMeta": { // "style": { // "type": "vector", // "stroke": { // "color": [ // 255,140,0, // 1 // ], // "width": 4, // "lineDash": null // } // } // } // }) // console.log(JsonFeature) // } // } // return JsonFeature // } // app.get('/NAVPUB', function (req, res) { // console.log('command angekommen!') // try { // // console.log(navcar.body.routes[0].sections[0].polyline) // // var pol = polycalc.decode(navcar.body.routes[0].sections[0].polyline) // // console.log(pol) // // res.json(testjsonsflow); // res.json(navPublicjson); // // console.log(navcarjson) // console.log('.../loadSetP successful!'); // } // catch (err) { // console.log('.../loadSetP failed!\n' + err); // } // }); //=========================================================================================================================== //Final Version //=========================================================================================================================== // ---- Traffic Flow ---- // - 3Parts - // - get request from the html page app.get('/TrafficFlow', async (req, res) => { console.log('command angekommen!') try{ let APIout = await flow_getApiResponse('https://traffic.ls.hereapi.com/traffic/6.2/flow.json?prox=48.7823,9.1807,919&responseattributes=sh%2Cfc&apiKey=9Grm-6B7VRvxAnbf2eKw29gR-9uuJP8VaXXYR8LK93Y'); let json_tf = await flow_buildTFLOWJson(APIout); var json_tfs = { "name":"flow" + "01", "type":"FeatureCollection", "crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } }, "features": json_tf }; res.json(json_tfs) }catch (error) { console.log(error) } }); // - request from the here API function flow_getApiResponse(url) { return new Promise(function (resolve, reject) { request(url, function (error, res, body) { if (!error && res.statusCode == 200) { resolve(body); } else { reject(error); } }); }); } // - build geojson from response function flow_buildTFLOWJson(inputData){ return new Promise(function (resolve, reject) { try { var json_tflow = JSON.parse(inputData) var JsonFeature = []; console.log(json_tflow.RWS[0].RW.length + "---- in flow func") var length = json_tflow.RWS[0].RW.length; // console.log(length); for (var i = 0; i<= length -1; i++){ var shplength = json_tflow.RWS[0].RW[i].FIS[0].FI[0].SHP.length; // var type = accident.body.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].TRAFFIC_ITEM_TYPE_DESC; var mid = json_tflow.RWS[0].RW[i].mid; var LI = json_tflow.RWS[0].RW[i].LI; var DE = json_tflow.RWS[0].RW[i].DE; var PBT = json_tflow.RWS[0].RW[i].PBT; var TMC = json_tflow.RWS[0].RW[i].FIS[0].FI[0].TMC; var CF = json_tflow.RWS[0].RW[i].FIS[0].FI[0].CF[0]; var locationshp = []; for (var j = 0; j <= shplength - 1; j++ ){ var value = json_tflow.RWS[0].RW[i].FIS[0].FI[0].SHP[j].value[0]; // console.log(value[0]) var splitvalue = []; splitvalue = value.split(" "); // console.log(splitvalue.length) var coord = []; for (var k = 0; k <= splitvalue.length -2; k++){ var latlon = []; latlon = splitvalue[k].split(","); var lat = latlon[0]; var lon = latlon[1]; coord.push([parseFloat(lon),parseFloat(lat)]) } // var FC = accident.body.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].LOCATION.GEOLOC.ORIGIN.LONGITUDE; locationshp.push(coord) // console.log(value) } if (CF.JF){ // console.log("CF.JF -- " + CF.JF) } if ((CF.JF >= 3) ){ JsonFeature.push({ "type":"Feature", "properties": { "id": mid, "name": "linestring" , "LI": LI, "DE": DE, "PBT":PBT, "TMC":TMC, "CF":CF}, "geometry":{ "type":"MultiLineString", "coordinates": locationshp }, "vcsMeta": { "style": { "type": "vector", "stroke": { "color": [ 153, 0, 0, 1 ], "width": 2, "lineDash": null } } } }) } else if ((CF.JF <3 && CF.JF >= 2) ){ JsonFeature.push({ "type":"Feature", "properties": { "id": mid, "name": "linestring" , "LI": LI, "DE": DE, "PBT":PBT, "TMC":TMC, "CF":CF}, "geometry":{ "type":"MultiLineString", "coordinates": locationshp }, "vcsMeta": { "style": { "type": "vector", "stroke": { "color": [ 255, 153, 51, 1 ], "width": 2, "lineDash": null } } } }) } else if ((CF.JF <2 && CF.JF >= 1)){ JsonFeature.push({ "type":"Feature", "properties": { "id": mid, "name": "linestring" , "LI": LI, "DE": DE, "PBT":PBT, "TMC":TMC, "CF":CF}, "geometry":{ "type":"MultiLineString", "coordinates": locationshp }, "vcsMeta": { "style": { "type": "vector", "stroke": { "color": [ 230, 230, 0, 1 ], "width": 2, "lineDash": null } } } }) } else if ((CF.JF < 1)){ JsonFeature.push({ "type":"Feature", "properties": { "id": mid, "name": "linestring" , "LI": LI, "DE": DE, "PBT":PBT, "TMC":TMC, "CF":CF}, "geometry":{ "type":"MultiLineString", "coordinates": locationshp }, "vcsMeta": { "style": { "type": "vector", "stroke": { "color": [ 0, 153, 0, 1 ], "width": 2, "lineDash": null } } } }) } }; resolve(JsonFeature) }catch(error){ reject(error)} }); }; // ---- Accidents ---- // - 3Parts - // - get request from the html page app.get('/CONSTRUCTION', async (req, res) => { console.log('Construction angekommen!') try{ let APIout = await CON_getApiResponse('https://traffic.ls.hereapi.com/traffic/6.3/incidents.json?apiKey=9Grm-6B7VRvxAnbf2eKw29gR-9uuJP8VaXXYR8LK93Y&bbox=48.790,9.139;48.771,9.239'); let json_con = await CON_buildTFLOWJson(APIout,"CONSTRUCTION"); console.log(json_con) var json_cons = { "name":"incident" + "01", "type":"FeatureCollection", "crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } }, "features": json_con }; res.json(json_cons) }catch (error) { console.log(error) } }); app.get('/ROAD_CLOSURE', async (req, res) => { console.log('Construction angekommen!') try{ let APIout = await CON_getApiResponse('https://traffic.ls.hereapi.com/traffic/6.3/incidents.json?apiKey=9Grm-6B7VRvxAnbf2eKw29gR-9uuJP8VaXXYR8LK93Y&bbox=48.790,9.139;48.771,9.239'); let json_con = await CON_buildTFLOWJson(APIout,"ROAD_CLOSURE"); console.log(json_con) var json_cons = { "name":"incident" + "01", "type":"FeatureCollection", "crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } }, "features": json_con }; res.json(json_cons) }catch (error) { console.log(error) } }); // - request from the here API function CON_getApiResponse(url) { return new Promise(function (resolve, reject) { request(url, function (error, res, body) { if (!error && res.statusCode == 200) { resolve(body); } else { reject(error); } }); }); } // - build geojson from response function CON_buildTFLOWJson(inputData,type){ return new Promise(function (resolve, reject) { try { var JsonFeature = []; var json_acc = JSON.parse(inputData) var length = json_acc.TRAFFIC_ITEMS.TRAFFIC_ITEM.length; // console.log(length) for (var i = 0; i <= length - 1; i++){ // console.log(json_acc.TRAFFIC_ITEMS.TRAFFIC_ITEM[i]) var lat = json_acc.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].LOCATION.GEOLOC.ORIGIN.LATITUDE; var lon = json_acc.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].LOCATION.GEOLOC.ORIGIN.LONGITUDE; // var type = json_acc.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].TRAFFIC_ITEM_TYPE_DESC; var id = json_acc.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].TRAFFIC_ITEM_ID; var origid = json_acc.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].ORIGINAL_TRAFFIC_ITEM_ID; var TRAFFIC_ITEM_DESCRIPTION = json_acc.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].TRAFFIC_ITEM_DESCRIPTION; var COMMENTS = json_acc.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].COMMENTS; var CRITICALITY = json_acc.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].CRITICALITY; var VERIFIED = json_acc.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].VERIFIED; var TRAFFIC_ITEM_TYPE_DESC = json_acc.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].TRAFFIC_ITEM_TYPE_DESC; var TRAFFIC_ITEM_STATUS_SHORT_DESC = json_acc.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].TRAFFIC_ITEM_STATUS_SHORT_DESC; var TRAFFIC_ITEM_DETAIL = json_acc.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].TRAFFIC_ITEM_DETAIL; var START_TIME = json_acc.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].START_TIME; var LOCATION = json_acc.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].LOCATION; var ENTRY_TIME = json_acc.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].ENTRY_TIME; var END_TIME = json_acc.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].END_TIME; var ABBREVIATION = json_acc.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].ABBREVIATION; if (type == 'CONSTRUCTION'){ // console.log(i) if (TRAFFIC_ITEM_TYPE_DESC == "CONSTRUCTION"){ JsonFeature.push({ "type":"Feature", "properties": { "id": id, "name": "datapoint" , "original_traffic_id": origid, "TRAFFIC_ITEM_DESCRIPTION": TRAFFIC_ITEM_DESCRIPTION, "COMMENTS":COMMENTS, "CRITICALITY":CRITICALITY, "VERIFIED":VERIFIED,"TRAFFIC_ITEM_TYPE_DESC":TRAFFIC_ITEM_TYPE_DESC, "TRAFFIC_ITEM_STATUS_SHORT_DESC":TRAFFIC_ITEM_STATUS_SHORT_DESC, "TRAFFIC_ITEM_DETAIL":TRAFFIC_ITEM_DETAIL, "START_TIME":START_TIME, "LOCATION":LOCATION, "ENTRY_TIME":ENTRY_TIME, "END_TIME":END_TIME, "ABBREVIATION":ABBREVIATION}, "geometry":{ "type":"MultiPoint", "coordinates": [ [lon, lat]] } }) } } else if (type == "ROAD_CLOSURE"){ if (TRAFFIC_ITEM_TYPE_DESC == "ROAD_CLOSURE"){ JsonFeature.push({ "type":"Feature", "properties": { "id": id, "name": "datapoint" , "original_traffic_id": origid, "TRAFFIC_ITEM_DESCRIPTION": TRAFFIC_ITEM_DESCRIPTION, "COMMENTS":COMMENTS, "CRITICALITY":CRITICALITY, "VERIFIED":VERIFIED,"TRAFFIC_ITEM_TYPE_DESC":TRAFFIC_ITEM_TYPE_DESC, "TRAFFIC_ITEM_STATUS_SHORT_DESC":TRAFFIC_ITEM_STATUS_SHORT_DESC, "TRAFFIC_ITEM_DETAIL":TRAFFIC_ITEM_DETAIL, "START_TIME":START_TIME, "LOCATION":LOCATION, "ENTRY_TIME":ENTRY_TIME, "END_TIME":END_TIME, "ABBREVIATION":ABBREVIATION}, "geometry":{ "type":"MultiPoint", "coordinates": [ [lon, lat]] } }) } } } resolve(JsonFeature) }catch(error){ reject(error)} }); }; // ---- Navpoint ---- // - receive coordinates and return a geojson app.get('/addPoint', async (req, res) => { try { var data = req.query; var Punktadd = { "type":"FeatureCollection", "name":"data_point", "crs":{ "type":"name", "properties":{ "name":"urn:ogc:def:crs:OGC:1.3:CRS84" } }, "features":[ { "type":"Feature", "properties":{ "id":null, "name":"datapoint", "loc": data.sloc }, "geometry":{ "type":"Point", "coordinates":[ parseFloat(parseFloat(data.slon).toFixed(7)), parseFloat(parseFloat(data.slat).toFixed(7)) ] } } ] } res.json(Punktadd); } catch (error) { console.log(error) } }); // http://localhost:8083/Routecalc2?slat=48.68997020356071&slon=9.202611390575258&sloc=Start&elat=48.726559406813294&elon=9.113775973868089&eloc=End // ---- Route Berechnen Test ---- app.get('/Routecalc2', async (req, res) => { console.log('command angekommen ////// Route/////!') const pointData = req.query; console.log(pointData); try { let APIout = await CON_getApiResponse('https://router.hereapi.com/v8/routes?transportMode=car&origin='+ pointData.slat + ',' + pointData.slon + '&destination=' + pointData.elat + ',' + pointData.elon + '&return=polyline&apiKey=9Grm-6B7VRvxAnbf2eKw29gR-9uuJP8VaXXYR8LK93Y'); console.log(APIout) let json_route = await Route_buildJson(APIout); console.log(json_route) var json_routes = { "name":"navcar" + "01", "type":"FeatureCollection", "crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } }, "features": json_route }; console.log(json_routes); console.log('.../route calc successful!'); res.json(json_routes); } catch (err) { console.log('.../loadSetP failed!\n' + err); } }); // - build geojson for Car Routing function Route_buildJson(inputData){ return new Promise(function (resolve, reject) { try { var JsonFeature = []; var json_route = JSON.parse(inputData) var pol = polycalc.decode(json_route.routes[0].sections[0].polyline) var length = pol.polyline.length; // console.log(length); var id = json_route.routes[0].id; var mid = json_route.routes[0].sections[0].id; var transport = json_route.routes[0].sections[0].transport.mode; var departureTime = json_route.routes[0].sections[0].departure.time; var departureOriglat = json_route.routes[0].sections[0].departure.place.originalLocation.lat; // console.log(departureOriglat) var departureOriglon = json_route.routes[0].sections[0].departure.place.originalLocation.lng; // console.log(departureOriglon) var departurelat = json_route.routes[0].sections[0].departure.place.location.lat; var departurelon = json_route.routes[0].sections[0].departure.place.location.lng; var arrivalTime = json_route.routes[0].sections[0].arrival.time; var arrivalOriglat = json_route.routes[0].sections[0].arrival.place.originalLocation.lat; var arrivalOriglon = json_route.routes[0].sections[0].arrival.place.originalLocation.lng; var arrivallat = json_route.routes[0].sections[0].arrival.place.location.lat; var arrivallon = json_route.routes[0].sections[0].arrival.place.location.lng; var departure = []; departure.push([parseFloat(parseFloat(departureOriglon).toFixed(5)),parseFloat(parseFloat(departureOriglat).toFixed(5))]); departure.push([parseFloat(parseFloat(departurelon).toFixed(5)),parseFloat(parseFloat(departurelat).toFixed(5))]) timeDifference(departureTime,arrivalTime); JsonFeature.push({ "type":"Feature", "properties": { "id": id, "name": "linestring" ,"transport": transport,"departureTime": departureTime, "daysDifference": daysDifference, "hoursDifference": hoursDifference, "minutesDifference" : minutesDifference, "secondsDifference": secondsDifference}, "geometry":{ "type":"LineString", "coordinates": departure }, "vcsMeta": { "style": { "type": "vector", "stroke": { "color": [ 30,144,255, 1 ], "width": 3, "lineDash": null } } } }) var arrival = []; arrival.push([parseFloat(parseFloat(arrivalOriglon).toFixed(5)),parseFloat(parseFloat(arrivalOriglat).toFixed(5))]); arrival.push([parseFloat(parseFloat(arrivallon).toFixed(5)),parseFloat(parseFloat(arrivallat).toFixed(5))]) // console.log(arrival) JsonFeature.push({ "type":"Feature", "properties": { "id": id, "name": "linestring" ,"transport": transport,"arrivalTime": arrivalTime,"departureTime": departureTime, "daysDifference": daysDifference, "hoursDifference": hoursDifference, "minutesDifference" : minutesDifference, "secondsDifference": secondsDifference}, "geometry":{ "type":"LineString", "coordinates": arrival }, "vcsMeta": { "style": { "type": "vector", "stroke": { "color": [ 30,144,255, 1 ], "width": 3, "lineDash": null } } } }) var pline = []; var length = pol.polyline.length; for (var i = 0; i<= length -1; i++){ pline.push([parseFloat(parseFloat(pol.polyline[i][1]).toFixed(5)),parseFloat(parseFloat(pol.polyline[i][0]).toFixed(5))]) } JsonFeature.push({ "type":"Feature", "properties": { "id": id, "name": "linestring" ,"transport": transport,"departureTime": departureTime, "daysDifference": daysDifference, "hoursDifference": hoursDifference, "minutesDifference" : minutesDifference, "secondsDifference": secondsDifference}, "geometry":{ "type":"LineString", "coordinates": pline }, "vcsMeta": { "style": { "type": "vector", "stroke": { "color": [ 199,21,133, 1 ], "width": 4, "lineDash": null } } } }) // console.log(JsonFeature) resolve(JsonFeature) }catch(error){ reject(error)} }); }; // ---- Route Offis Berechnen Test ---- app.get('/navPublicT2', async (req, res) => { console.log('command angekommen ////// Route/////!') const pointData = req.query; console.log(pointData); try { let APIout = await CON_getApiResponse('https://transit.router.hereapi.com/v8/routes?origin='+ parseFloat(parseFloat(pointData.slat).toFixed(5)) + ',' + parseFloat(parseFloat(pointData.slon).toFixed(5)) + '&destination=' + parseFloat(parseFloat(pointData.elat).toFixed(5)) + ',' + parseFloat(parseFloat(pointData.elon).toFixed(5)) + '&return=polyline&apiKey=9Grm-6B7VRvxAnbf2eKw29gR-9uuJP8VaXXYR8LK93Y'); console.log(APIout) let json_pub = await Route_PublicbuildJson(APIout); console.log(json_pub) // navPublicjson = { // "name":"navPublic" + "01", // "type":"FeatureCollection", // "crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } }, // "features": buildNavPublic() // }; var json_public = { "name":"navPublic" + "01", "type":"FeatureCollection", "crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } }, "features": json_pub }; console.log(json_public); console.log('.../route calc successful!'); res.json(json_public); } catch (err) { console.log('.../loadSetP failed!\n' + err); } }); // - build geojson for Public Routing function Route_PublicbuildJson(inputData){ return new Promise(function (resolve, reject) { try { var JsonFeature = []; // var pol = polycalc.decode(navcar.body.routes[0].sections[0].polyline) // var length = pol.polyline.length; // console.log(length); var json_public = JSON.parse(inputData) var id = json_public.routes[0].id; var length = json_public.routes[0].sections.length; console.log("length of Sections: " + length) for (var i = 0; i<= length -1; i++){ console.log(i) if (json_public.routes[0].sections[i].type == "pedestrian"){ console.log("pedestrian") var section = json_public.routes[0].sections[i] var agencyid = section.id; var agencyname = section.name; var arrivaltime = section.arrival.time; var arrivalplace = section.arrival.place; var departuretime = section.departure.time; var departureplace = section.departure.place; var transportInfo = section.transport; var pol = polycalc.decode(section.polyline) var pollength = pol.polyline.length; var timedifference = timeDifference1(departuretime,arrivaltime); var pline = []; for (var j = 0; j<= pollength -1; j++){ pline.push([parseFloat(parseFloat(pol.polyline[j][1]).toFixed(5)),parseFloat(parseFloat(pol.polyline[j][0]).toFixed(5))]) } JsonFeature.push({ "type":"Feature", "properties": { "id": agencyid,"agencyName":agencyname, "name": "linestring" ,"type": "pedestrian","transportInfo":transportInfo,"arrivalTime": arrivaltime,"arrivalPlace": arrivalplace,"departureTime": departuretime,"departurePlace": departureplace, "daysDifference": timedifference.daysDifference, "hoursDifference": timedifference.hoursDifference, "minutesDifference" : timedifference.minutesDifference, "secondsDifference": timedifference.secondsDifference}, "geometry":{ "type":"LineString", "coordinates": pline }, "vcsMeta": { "style": { "type": "vector", "stroke": { "color": [ 30,144,255, 1 ], "width": 3, "lineDash": null } } } }) console.log(JsonFeature) } else if (json_public.routes[0].sections[i].type == "transit"){ console.log("transit") var section = json_public.routes[0].sections[i] var agencyid = section.id; var agencyname = section.name; var arrivaltime = section.arrival.time; var arrivalplace = section.arrival.place; var departuretime = section.departure.time; var departureplace = section.departure.place; var transportInfo = section.transport; var pol = polycalc.decode(section.polyline) var pollength = pol.polyline.length; var timedifference = timeDifference1(departuretime,arrivaltime); var pline = []; for (var j = 0; j<= pollength -1; j++){ pline.push([parseFloat(parseFloat(pol.polyline[j][1]).toFixed(5)),parseFloat(parseFloat(pol.polyline[j][0]).toFixed(5))]) } JsonFeature.push({ "type":"Feature", "properties": { "id": agencyid,"agencyName":agencyname, "name": "linestring" ,"type": "transit","transportInfo":transportInfo,"arrivalTime": arrivaltime,"arrivalPlace": arrivalplace,"departureTime": departuretime,"departurePlace": departureplace, "daysDifference": timedifference.daysDifference, "hoursDifference": timedifference.hoursDifference, "minutesDifference" : timedifference.minutesDifference, "secondsDifference": timedifference.secondsDifference}, "geometry":{ "type":"LineString", "coordinates": pline }, "vcsMeta": { "style": { "type": "vector", "stroke": { "color": [ 255,140,0, 1 ], "width": 4, "lineDash": null } } } }) console.log(JsonFeature) } } resolve(JsonFeature) }catch(error){ reject(error)} }); }; // ---- Noise Real Time ---- // - 3Parts - // - get request from the html page app.get('/NoiseRealTime', async (req, res) => { console.log('command angekommen!') try{ let APIout = await flow_getApiResponse('https://data.sensor.community/airrohr/v1/sensor/49368/'); console.log(APIout); res.json(JSON.parse(APIout)); }catch (error) { console.log(error) } }); // ---- Historic Noise Data ---- // ---- Trial Version from PostgreSQL ---- const pgp = require('pg-promise')({ // Initialization Options }); const connection = { user: 'postgres', // name of the user account database: 'NoiseSensorData', // name of the database password: 'ahpk94meteor', // env var: PGPASSWORD host: '193.196.38.112', // Server hosting the postgres database (host: '35.187.21.114') port: 5432, // env var: PGPORT max: 10, // max number of clients in the pool idleTimeoutMillis: 30000 // how long a client is allowed to remain idle before being closed } const db = pgp(connection); console.log('successful connected to DB: NoiseSensorData!') app.post('/getNoiseHist', function (req, res) { try { const data = req.body; // = "select sensor_id from public.noisesensor;" let query_string = " SELECT * FROM noisesensors ORDER BY timestamp ASC;" // query_string += "from noisesensor;"; console.log(query_string) // request the data rsr db.result(query_string) .then(result => { res.json(result.rows); }) .catch(error => { console.log('ERROR:', error); }); console.log('.../getNoiseHist successful!'); } catch (err) { console.log('.../getNoiseHist failed!\n' + err); } });