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('/CONSTRUCTION', 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_CLOSURE', 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); } });