diff --git a/server.js b/server.js
index 43c28e6bed57e0332dd71a627636ba7dde0c8258..13a4b4403ca15585797db286100e14d11b1c9321 100644
--- a/server.js
+++ b/server.js
@@ -1,48 +1,28 @@
-
-const fs = require('fs');
 const http = require('http');
-const https = require('https');
-const express = require('express');
-const bodyParser = require('body-parser')
-
-// const request = require('ajax-request');
-// const request = require('request');
-const axios = require('axios');
+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 got = require('got');
+const axios = require('axios');
 const polycalc = require('./codepoly.js');
-// Certificate
-const privateKey = fs.readFileSync('/etc/letsencrypt/live/umfrage.smartvillages.online/privkey.pem', 'utf8');
-const certificate = fs.readFileSync('/etc/letsencrypt/live/umfrage.smartvillages.online/cert.pem', 'utf8');
-const ca = fs.readFileSync('/etc/letsencrypt/live/umfrage.smartvillages.online/chain.pem', 'utf8');
-
-const credentials = {
-	key: privateKey,
-	cert: certificate,
-	ca: ca
-};
-
+const { isEmptyObject } = require('jquery');
+//console.log(polycalc)
 app.use(express.static('vcm'));
+app.listen(process.env.PORT || 8083);
+console.log("on 8083");
 
-// Starting both http & https servers
-// const httpServer = http.createServer(app);
-const httpsServer = https.createServer(credentials, app);
-
-// httpServer.listen(8081, () => {
-// 	console.log('HTTP Server running on port 80');
-// });
-
-httpsServer.listen(8083, () => {
-	console.log('HTTPS Server running on port 443');
-});
 
 var minutesDifference
 var hoursDifference
 var secondsDifference
 var daysDifference
 
-
 function timeDifference(date11,date22) {
   var date2 = new Date(date11); 
   var date1 = new Date(date22); 
@@ -101,836 +81,841 @@ function timeDifference1(date11,date22) {
 }
 
 
+
 //===========================================================================================================================
 //Final Version
 //===========================================================================================================================
 // ---- Traffic Flow ----
-// - 3Parts -
+// - 3Parts -  48.7823,9.1807,919
 // - 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);
-	console.log(json_tf)
-	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) {
-	  axios.get(url)
-		.then(function (response) {
-		  // handle success
-		  console.log(response.data);
-		  resolve(response.data);
-		})
-		.catch(function (error) {
-		  // handle error
-		  console.log(error);
-		  reject(error);
-		});
-	});
-  }
-  // - build geojson from response 
-  function flow_buildTFLOWJson(inputData){
-	return new Promise(function (resolve, reject) {
-	try {
-	  var json_tflow = inputData
-	var JsonFeature = [];
-	console.log(json_tflow.RWS[0].RW.length + "---- in flow func")
-	var length = json_tflow.RWS[0].RW.length;
-	var fik
-	// console.log(length);
-  
-	for (var i = 0; i<= length -1; i++){
-	  var FIlength = json_tflow.RWS[0].RW[i].FIS[0].FI.length
-	  console.log("i - " + i)
-		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;
-	  for (var m = 0; m <= FIlength -1; m++){
-		console.log("k - " + m)
-		var shplength = json_tflow.RWS[0].RW[i].FIS[0].FI[m].SHP.length;
-		console.log("FI - " + json_tflow.RWS[0].RW[i].FIS[0].FI[m])
-		fik = json_tflow.RWS[0].RW[i].FIS[0].FI[m]
-		// var type = accident.body.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].TRAFFIC_ITEM_TYPE_DESC;
-  
-		var TMC = json_tflow.RWS[0].RW[i].FIS[0].FI[m].TMC;
-		var CF = json_tflow.RWS[0].RW[i].FIS[0].FI[m].CF[0];
-		console.log("Shp length - " + json_tflow.RWS[0].RW[i].FIS[0].FI[m].SHP.length)
-		console.log("Shp length - " + shplength)
-		var locationshp = [];
-		for (var j = 0; j <= shplength - 1; j++ ){
-		  console.log("j - " +j)
-		  console.log("RWS  - " + json_tflow.RWS[0])
-		  console.log("RW  - " + json_tflow.RWS[0].RW[i])
-		  console.log("FIS  - " + json_tflow.RWS[0].RW[i].FIS[0])
-		  console.log("FIk  - " + fik)
-		  console.log("FI  - " + json_tflow.RWS[0].RW[i].FIS[0].FI[m])
-  
-		  console.log("shape j  - " + fik.SHP[j])
-		  var value = fik.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)}
-  
-   
-  
-	});
-  
+  console.log('command angekommen!')
+try{
+  let APIout = await flow_getApiResponse('https://traffic.ls.hereapi.com/traffic/6.2/flow.json?prox=48.7544,9.1768,8745&responseattributes=sh%2Cfc&apiKey=9Grm-6B7VRvxAnbf2eKw29gR-9uuJP8VaXXYR8LK93Y');
+  console.log(APIout)
+  let json_tf = await flow_buildTFLOWJson(APIout);
+  console.log(json_tf)
+  var json_tfs = {
+    "name":"flow" + "01",
+    "type":"FeatureCollection",
+    "crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } },
+    "features": json_tf
+    
   };
   
-  
-  // ---- 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)
-  }
-	  
+  res.json(json_tfs)
+
+}catch (error) {
+  console.log(error)
+}
+});
+// - request from the here API
+function flow_getApiResponse(url) {
+  return new Promise(function (resolve, reject) {
+    axios.get(url)
+      .then(function (response) {
+        // handle success
+        console.log(response.data);
+        resolve(response.data);
+      })
+      .catch(function (error) {
+        // handle error
+        console.log(error);
+        reject(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)
-  }
-	  
+}
+// - build geojson from response 
+function flow_buildTFLOWJson(inputData){
+  return new Promise(function (resolve, reject) {
+  try {
+    var json_tflow = inputData
+  var JsonFeature = [];
+  console.log(json_tflow.RWS[0].RW.length + "---- in flow func")
+  var length = json_tflow.RWS[0].RW.length;
+  var fik
+  // console.log(length);
+
+  for (var i = 0; i<= length -1; i++){
+    var FIlength = json_tflow.RWS[0].RW[i].FIS[0].FI.length
+    console.log("i - " + i)
+      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;
+    for (var m = 0; m <= FIlength -1; m++){
+      console.log("k - " + m)
+      var shplength = json_tflow.RWS[0].RW[i].FIS[0].FI[m].SHP.length;
+      console.log("FI - " + json_tflow.RWS[0].RW[i].FIS[0].FI[m])
+      fik = json_tflow.RWS[0].RW[i].FIS[0].FI[m]
+      // var type = accident.body.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].TRAFFIC_ITEM_TYPE_DESC;
+
+      var TMC = json_tflow.RWS[0].RW[i].FIS[0].FI[m].TMC;
+      var CF = json_tflow.RWS[0].RW[i].FIS[0].FI[m].CF[0];
+      console.log("Shp length - " + json_tflow.RWS[0].RW[i].FIS[0].FI[m].SHP.length)
+      console.log("Shp length - " + shplength)
+      var locationshp = [];
+      for (var j = 0; j <= shplength - 1; j++ ){
+        console.log("j - " +j)
+        console.log("RWS  - " + json_tflow.RWS[0])
+        console.log("RW  - " + json_tflow.RWS[0].RW[i])
+        console.log("FIS  - " + json_tflow.RWS[0].RW[i].FIS[0])
+        console.log("FIk  - " + fik)
+        console.log("FI  - " + json_tflow.RWS[0].RW[i].FIS[0].FI[m])
+
+        console.log("shape j  - " + fik.SHP[j])
+        var value = fik.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)}
+
+ 
+
   });
-  // - request from the here API
-  function CON_getApiResponse(url) {
-	return new Promise(function (resolve, reject) {
-	  console.log(url)
-	  axios.get(url)
-		.then(function (response) {
-		  // handle success
-		  // console.log(response.data);
-		  resolve(response.data);
-		})
-		.catch(function (error) {
-		  // handle error
-		  // console.log(error);
-		  reject(error);
-		});
-	});
-  }
-  // - build geojson from response 
-  function CON_buildTFLOWJson(inputData,type){
-	return new Promise(function (resolve, reject) {
-	try {
-	  var JsonFeature = [];
-	  var json_acc = 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;
-		console.log(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)}
-  
-   
-  
-	});
-  
+
+};
+
+
+// ---- 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
+    
   };
-  
-  
-  // ---- 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)
-	}
-	  
+  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) {
+    console.log(url)
+    axios.get(url)
+      .then(function (response) {
+        // handle success
+        // console.log(response.data);
+        resolve(response.data);
+      })
+      .catch(function (error) {
+        // handle error
+        // console.log(error);
+        reject(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 from response 
+function CON_buildTFLOWJson(inputData,type){
+  return new Promise(function (resolve, reject) {
+  try {
+    var JsonFeature = [];
+    var json_acc = 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;
+      console.log(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)}
+
+ 
+
   });
-  // - build geojson for Car Routing
-  function Route_buildJson(inputData){
-	return new Promise(function (resolve, reject) {
-	try {
-	  var JsonFeature = [];
-	  var json_route = 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)}
-  
+
+};
+
+
+// ---- Navpoint ----
+// - receive coordinates and return a geojson
+app.get('/addPoint', async (req, res) => {
+  try {
+
+    var data = req.query;
+    console.log(data)
+    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 = 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;
    
-  
-	});
-  
-  };
-  // ---- 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);
-	}
-  
+    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)}
+
+ 
+
   });
-  
-  // - 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 = 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/' + req.query.id + '/');
-  
-	console.log(APIout);
-  
-	
-	res.json((APIout));
-  
-  }catch (error) {
-	console.log(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);
   }
-  });
-  
-  // ---- 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
-  
+  catch (err) {
+      console.log('.../loadSetP failed!\n' + err);
   }
-  
-  const db = pgp(connection);
-  console.log('successful connected to DB: NoiseSensorData!')
-  
-  app.post('/getNoiseHist', function (req, res) {
+
+});
+
+// - 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 = 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)
+      }
+    
    
-	try {
-	
-		const data = req.body;
-	// = "select sensor_id from public.noisesensor;"
+    }
   
-	let query_string = " SELECT   * FROM   noisesensorstest  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);
-	}
-  });
+  resolve(JsonFeature)
+  }catch(error){ reject(error)}
 
-  app.post('/getSTANoiseHist', async (req, res) => {
  
-	console.log('command angekommen ////// STANoise/////!')
-	const pointData = req.query;
-	// console.log(pointData);
-	try {
-	  
-	  let origURL = 'http://193.196.138.56/frost-noise-api/v1.1/Datastreams(1)/Observations?$orderby=phenomenonTime%20asc'
-	  let STALAeq = await STA_getApiResponse(origURL);
-	  let STALAeqColl = [];
-  
-	  // let origURLmin = 'http://193.196.138.56/frost-noise-api/v1.1/Datastreams(2)/Observations?$orderby=phenomenonTime%20asc'
-	  // let STALAeqmin = await STA_getApiResponse(origURLmin);
-  
-	  // let origURLmax = 'http://193.196.138.56/frost-noise-api/v1.1/Datastreams(3)/Observations?$orderby=phenomenonTime%20asc'
-	  // let STALAeqmax = await STA_getApiResponse(origURLmax);
-	  //eq
-	  for (var i = 0; i<= STALAeq.value.length -1; i++){
-		var newNum = "noise";
-		var newVal = "LAeq";
-  
-		STALAeq.value[i][newNum] = newVal;
-		STALAeqColl.push(STALAeq.value[i]);
-		  
-	  }
-	  do {
-		STALAeq = await STA_getApiResponse(STALAeq["@iot.nextLink"]);
-		for (var j = 0; j<= STALAeq.value.length -1; j++){
-		  STALAeqColl.push(STALAeq.value[j]);
-		  
-		}
-	  } while ("@iot.nextLink" in STALAeq);
-  
-	  
-	  console.log(STALAeqColl.length)
-	  res.json(STALAeqColl);
-	}
-	catch (err) {
-		console.log('.../loadSetP failed!\n' + err);
-	}
+
   });
+
+};
+
+// ---- Noise Real Time ----
+// - 3Parts -
+// - get request from the html page
+app.get('/NoiseRealTime', async (req, res) => {
+  console.log('command angekommen!')
+try{
+  console.log('https://data.sensor.community/airrohr/v1/sensor/' + req.query.id + '/')
+  let APIout = await flow_getApiResponse('https://data.sensor.community/airrohr/v1/sensor/' + req.query.id + '/');
+
+  console.log(APIout);
+
   
+  res.json((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   -- NoiseSensorData
+  password: 'postgres', 																	// env var: PGPASSWORD  -- ahpk94meteor
+  host: 'localhost', 				// Server hosting the postgres database (host: '35.187.21.114') -- 193.196.38.112
+  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 {
   
-  function STA_getApiResponse(url) {
-	return new Promise(function (resolve, reject) {
-	  // console.log(url)
-	  axios.get(url)
-		.then(function (response) {
-		  // handle success
-		  // console.log(response.data);
-		  resolve(response.data);
-		})
-		.catch(function (error) {
-		  // handle error
-		  // console.log(error);
-		  reject(error);
-		});
-	});
+      const data = req.body;
+  // = "select sensor_id from public.noisesensor;"
+
+  let query_string = " SELECT   * FROM   noisesensorstest  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!');
   }
 
-  const connectionFav = {
+  catch (err) {
+      console.log('.../getNoiseHist failed!\n' + err);
+  }
+});
+
+app.post('/getSTANoiseHist', async (req, res) => {
+ 
+  console.log('command angekommen ////// STANoise/////!')
+  const pointData = req.query;
+  // console.log(pointData);
+  try {
+    
+    let origURL = 'http://193.196.138.56/frost-noise-api/v1.1/Datastreams(1)/Observations?$orderby=phenomenonTime%20asc'
+    let STALAeq = await STA_getApiResponse(origURL);
+    let STALAeqColl = [];
+
+    // let origURLmin = 'http://193.196.138.56/frost-noise-api/v1.1/Datastreams(2)/Observations?$orderby=phenomenonTime%20asc'
+    // let STALAeqmin = await STA_getApiResponse(origURLmin);
+
+    // let origURLmax = 'http://193.196.138.56/frost-noise-api/v1.1/Datastreams(3)/Observations?$orderby=phenomenonTime%20asc'
+    // let STALAeqmax = await STA_getApiResponse(origURLmax);
+    //eq
+    for (var i = 0; i<= STALAeq.value.length -1; i++){
+      var newNum = "noise";
+      var newVal = "LAeq";
+
+      STALAeq.value[i][newNum] = newVal;
+      STALAeqColl.push(STALAeq.value[i]);
+        
+    }
+    do {
+      STALAeq = await STA_getApiResponse(STALAeq["@iot.nextLink"]);
+      for (var j = 0; j<= STALAeq.value.length -1; j++){
+        STALAeqColl.push(STALAeq.value[j]);
+        
+      }
+    } while ("@iot.nextLink" in STALAeq);
+
+    
+    console.log(STALAeqColl.length)
+    res.json(STALAeqColl);
+  }
+  catch (err) {
+      console.log('.../loadSetP failed!\n' + err);
+  }
+});
+
+
+function STA_getApiResponse(url) {
+  return new Promise(function (resolve, reject) {
+    // console.log(url)
+    axios.get(url)
+      .then(function (response) {
+        // handle success
+        // console.log(response.data);
+        resolve(response.data);
+      })
+      .catch(function (error) {
+        // handle error
+        // console.log(error);
+        reject(error);
+      });
+  });
+}
+
+
+const connectionFav = {
   
 	user: 'postgres', 																		// name of the user account
 	database: 'FavoritPlaces', 																	// name of the database
@@ -945,120 +930,122 @@ app.get('/TrafficFlow', async (req, res) => {
   const dbFav = pgp(connectionFav);
   console.log('successful connected to DB: FavoritPlaces!')
 
-    // ---- FavPlaces ----
+
+
+  // ---- FavPlaces ----
 // - 3Parts -
 // - get request from the html page
 app.get('/FavPlacesDB', async (req, res) => {
-	console.log('FavPlacesDB angekommen!')
-  try{
-	let APIout = await getDBResult('');
-	console.log(APIout)
-	let json_con = await buildFavJson(APIout,"CONSTRUCTION");
-	// console.log(json_con)
-	var json_cons = {
-	  "name":"FavouritePlaces" + "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 getDBResult(url) {
-	return new Promise(function (resolve, reject) {
-	  
-	  let query_string = " SELECT id, lat, lon, contenttext, approved, timestamp FROM public.places WHERE approved = true;"
-	  // query_string += "from noisesensor;"; 
-	
-	  console.log(query_string)
-	  // request the data rsr
-	  dbFav.result(query_string)
-	  .then(result => {
-		// res.json(result.rows);
-		console.log((result.rows));
-		resolve((result.rows));
-	  })
-	  .catch(function (error) {
-		// handle error
-		// console.log(error);
-		reject(error);
-	  });
-	});
-  }
-  // - build geojson from response 
-  function buildFavJson(inputData,type){
-	return new Promise(function (resolve, reject) {
-	try {
-	  var JsonFeature = [];
-	  var json_acc = inputData
-	  var length = json_acc.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[i].lat;
-		var lon = json_acc[i].lon;
-		//  var type = json_acc.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].TRAFFIC_ITEM_TYPE_DESC;
-		var id = json_acc[i].id;
-		var contenttext = json_acc[i].contenttext;
-		var timestamp = json_acc[i].timestamp;
-  
-  
-		  // console.log(i)
-	
-	  
-  
-		   JsonFeature.push({
-			"type":"Feature",
-			"properties": { "id": id, "name": "datapoint" , "contenttext": contenttext, "timestamp": timestamp, "date": timestamp.getUTCDate(), "month": timestamp.getMonth(), "year": timestamp.getUTCFullYear(),  "lat":lat, "lon":lon},
-			"geometry":{
-				"type":"MultiPoint",
-				"coordinates": [ [parseFloat(lon), parseFloat(lat)]]
-			  }
-			}) 
-  
-		  
-	
-  
-	
-	  }
-	resolve(JsonFeature)
-	}catch(error){ reject(error)}
-  
-   
-  
-	});
-  
+  console.log('FavPlacesDB angekommen!')
+try{
+  let APIout = await getDBResult('');
+  console.log(APIout)
+  let json_con = await buildFavJson(APIout,"CONSTRUCTION");
+  // console.log(json_con)
+  var json_cons = {
+    "name":"FavouritePlaces" + "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 getDBResult(url) {
+  return new Promise(function (resolve, reject) {
+    
+    let query_string = " SELECT id, lat, lon, contenttext, approved, timestamp FROM public.places WHERE approved = true;"
+    // query_string += "from noisesensor;"; 
+  
+    console.log(query_string)
+    // request the data rsr
+    dbFav.result(query_string)
+    .then(result => {
+      // res.json(result.rows);
+      console.log((result.rows));
+      resolve((result.rows));
+    })
+    .catch(function (error) {
+      // handle error
+      // console.log(error);
+      reject(error);
+    });
+  });
+}
+// - build geojson from response 
+function buildFavJson(inputData,type){
+  return new Promise(function (resolve, reject) {
+  try {
+    var JsonFeature = [];
+    var json_acc = inputData
+    var length = json_acc.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[i].lat;
+      var lon = json_acc[i].lon;
+      //  var type = json_acc.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].TRAFFIC_ITEM_TYPE_DESC;
+      var id = json_acc[i].id;
+      var contenttext = json_acc[i].contenttext;
+      var timestamp = json_acc[i].timestamp;
+
+
+        // console.log(i)
   
-  app.post('/saveFavPoint', function (req, res) {
-   
-	try {
-	
-		const data = req.body;
-	// = "select sensor_id from public.noisesensor;"
+    
+
+         JsonFeature.push({
+          "type":"Feature",
+          "properties": { "id": id, "name": "datapoint" , "contenttext": contenttext, "timestamp": timestamp, "date": timestamp.getUTCDate(), "month": timestamp.getMonth(), "year": timestamp.getUTCFullYear(), "lat":lat, "lon":lon},
+          "geometry":{
+              "type":"MultiPoint",
+              "coordinates": [ [parseFloat(lon), parseFloat(lat)]]
+            }
+          }) 
+
+        
   
-	let query_string = " INSERT INTO public.places(    lat, lon, contenttext, approved, timestamp)     VALUES (" + data.lat + ", " + data.lon + ", '" + data.contentext + "',  'false' , NOW()); "
-	  // query_string += "from noisesensor;"; 
+
   
-	console.log(query_string)
-	// request the data rsr
-	dbFav.result(query_string)
-	.then(result => {
-	  res.json(result.rows);
-	})
-	.catch(error => {
-	  console.log('ERROR:', error);
-	});			
-	console.log('.../saveFavPoint successful!');
-	}
+    }
+  resolve(JsonFeature)
+  }catch(error){ reject(error)}
+
+ 
+
+  });
+
+};
+
+app.post('/saveFavPoint', function (req, res) {
+ 
+  try {
   
-	catch (err) {
-		console.log('.../saveFavPoint failed!\n' + err);
-	}
-  });
\ No newline at end of file
+      const data = req.body;
+  // = "select sensor_id from public.noisesensor;"
+
+  let query_string = " INSERT INTO public.places(    lat, lon, contenttext, approved, timestamp)     VALUES (" + data.lat + ", " + data.lon + ", '" + data.contentext + "',  'false' , NOW()); "
+	// query_string += "from noisesensor;"; 
+
+  console.log(query_string)
+  // request the data rsr
+  dbFav.result(query_string)
+  .then(result => {
+    res.json(result.rows);
+  })
+  .catch(error => {
+    console.log('ERROR:', error);
+  });			
+  console.log('.../saveFavPoint successful!');
+  }
+
+  catch (err) {
+      console.log('.../saveFavPoint failed!\n' + err);
+  }
+});
\ No newline at end of file
diff --git a/server_mitCert.js b/server_mitCert.js
new file mode 100644
index 0000000000000000000000000000000000000000..43c28e6bed57e0332dd71a627636ba7dde0c8258
--- /dev/null
+++ b/server_mitCert.js
@@ -0,0 +1,1064 @@
+
+const fs = require('fs');
+const http = require('http');
+const https = require('https');
+const express = require('express');
+const bodyParser = require('body-parser')
+
+// const request = require('ajax-request');
+// const request = require('request');
+const axios = require('axios');
+const app = express();
+app.use(bodyParser.urlencoded({ extended: false })) 
+app.use(bodyParser.json())
+const polycalc = require('./codepoly.js');
+// Certificate
+const privateKey = fs.readFileSync('/etc/letsencrypt/live/umfrage.smartvillages.online/privkey.pem', 'utf8');
+const certificate = fs.readFileSync('/etc/letsencrypt/live/umfrage.smartvillages.online/cert.pem', 'utf8');
+const ca = fs.readFileSync('/etc/letsencrypt/live/umfrage.smartvillages.online/chain.pem', 'utf8');
+
+const credentials = {
+	key: privateKey,
+	cert: certificate,
+	ca: ca
+};
+
+app.use(express.static('vcm'));
+
+// Starting both http & https servers
+// const httpServer = http.createServer(app);
+const httpsServer = https.createServer(credentials, app);
+
+// httpServer.listen(8081, () => {
+// 	console.log('HTTP Server running on port 80');
+// });
+
+httpsServer.listen(8083, () => {
+	console.log('HTTPS Server running on port 443');
+});
+
+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);
+}
+
+
+//===========================================================================================================================
+//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);
+	console.log(json_tf)
+	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) {
+	  axios.get(url)
+		.then(function (response) {
+		  // handle success
+		  console.log(response.data);
+		  resolve(response.data);
+		})
+		.catch(function (error) {
+		  // handle error
+		  console.log(error);
+		  reject(error);
+		});
+	});
+  }
+  // - build geojson from response 
+  function flow_buildTFLOWJson(inputData){
+	return new Promise(function (resolve, reject) {
+	try {
+	  var json_tflow = inputData
+	var JsonFeature = [];
+	console.log(json_tflow.RWS[0].RW.length + "---- in flow func")
+	var length = json_tflow.RWS[0].RW.length;
+	var fik
+	// console.log(length);
+  
+	for (var i = 0; i<= length -1; i++){
+	  var FIlength = json_tflow.RWS[0].RW[i].FIS[0].FI.length
+	  console.log("i - " + i)
+		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;
+	  for (var m = 0; m <= FIlength -1; m++){
+		console.log("k - " + m)
+		var shplength = json_tflow.RWS[0].RW[i].FIS[0].FI[m].SHP.length;
+		console.log("FI - " + json_tflow.RWS[0].RW[i].FIS[0].FI[m])
+		fik = json_tflow.RWS[0].RW[i].FIS[0].FI[m]
+		// var type = accident.body.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].TRAFFIC_ITEM_TYPE_DESC;
+  
+		var TMC = json_tflow.RWS[0].RW[i].FIS[0].FI[m].TMC;
+		var CF = json_tflow.RWS[0].RW[i].FIS[0].FI[m].CF[0];
+		console.log("Shp length - " + json_tflow.RWS[0].RW[i].FIS[0].FI[m].SHP.length)
+		console.log("Shp length - " + shplength)
+		var locationshp = [];
+		for (var j = 0; j <= shplength - 1; j++ ){
+		  console.log("j - " +j)
+		  console.log("RWS  - " + json_tflow.RWS[0])
+		  console.log("RW  - " + json_tflow.RWS[0].RW[i])
+		  console.log("FIS  - " + json_tflow.RWS[0].RW[i].FIS[0])
+		  console.log("FIk  - " + fik)
+		  console.log("FI  - " + json_tflow.RWS[0].RW[i].FIS[0].FI[m])
+  
+		  console.log("shape j  - " + fik.SHP[j])
+		  var value = fik.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) {
+	  console.log(url)
+	  axios.get(url)
+		.then(function (response) {
+		  // handle success
+		  // console.log(response.data);
+		  resolve(response.data);
+		})
+		.catch(function (error) {
+		  // handle error
+		  // console.log(error);
+		  reject(error);
+		});
+	});
+  }
+  // - build geojson from response 
+  function CON_buildTFLOWJson(inputData,type){
+	return new Promise(function (resolve, reject) {
+	try {
+	  var JsonFeature = [];
+	  var json_acc = 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;
+		console.log(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 = 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 = 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/' + req.query.id + '/');
+  
+	console.log(APIout);
+  
+	
+	res.json((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   noisesensorstest  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);
+	}
+  });
+
+  app.post('/getSTANoiseHist', async (req, res) => {
+ 
+	console.log('command angekommen ////// STANoise/////!')
+	const pointData = req.query;
+	// console.log(pointData);
+	try {
+	  
+	  let origURL = 'http://193.196.138.56/frost-noise-api/v1.1/Datastreams(1)/Observations?$orderby=phenomenonTime%20asc'
+	  let STALAeq = await STA_getApiResponse(origURL);
+	  let STALAeqColl = [];
+  
+	  // let origURLmin = 'http://193.196.138.56/frost-noise-api/v1.1/Datastreams(2)/Observations?$orderby=phenomenonTime%20asc'
+	  // let STALAeqmin = await STA_getApiResponse(origURLmin);
+  
+	  // let origURLmax = 'http://193.196.138.56/frost-noise-api/v1.1/Datastreams(3)/Observations?$orderby=phenomenonTime%20asc'
+	  // let STALAeqmax = await STA_getApiResponse(origURLmax);
+	  //eq
+	  for (var i = 0; i<= STALAeq.value.length -1; i++){
+		var newNum = "noise";
+		var newVal = "LAeq";
+  
+		STALAeq.value[i][newNum] = newVal;
+		STALAeqColl.push(STALAeq.value[i]);
+		  
+	  }
+	  do {
+		STALAeq = await STA_getApiResponse(STALAeq["@iot.nextLink"]);
+		for (var j = 0; j<= STALAeq.value.length -1; j++){
+		  STALAeqColl.push(STALAeq.value[j]);
+		  
+		}
+	  } while ("@iot.nextLink" in STALAeq);
+  
+	  
+	  console.log(STALAeqColl.length)
+	  res.json(STALAeqColl);
+	}
+	catch (err) {
+		console.log('.../loadSetP failed!\n' + err);
+	}
+  });
+  
+  
+  function STA_getApiResponse(url) {
+	return new Promise(function (resolve, reject) {
+	  // console.log(url)
+	  axios.get(url)
+		.then(function (response) {
+		  // handle success
+		  // console.log(response.data);
+		  resolve(response.data);
+		})
+		.catch(function (error) {
+		  // handle error
+		  // console.log(error);
+		  reject(error);
+		});
+	});
+  }
+
+  const connectionFav = {
+  
+	user: 'postgres', 																		// name of the user account
+	database: 'FavoritPlaces', 																	// 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 dbFav = pgp(connectionFav);
+  console.log('successful connected to DB: FavoritPlaces!')
+
+    // ---- FavPlaces ----
+// - 3Parts -
+// - get request from the html page
+app.get('/FavPlacesDB', async (req, res) => {
+	console.log('FavPlacesDB angekommen!')
+  try{
+	let APIout = await getDBResult('');
+	console.log(APIout)
+	let json_con = await buildFavJson(APIout,"CONSTRUCTION");
+	// console.log(json_con)
+	var json_cons = {
+	  "name":"FavouritePlaces" + "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 getDBResult(url) {
+	return new Promise(function (resolve, reject) {
+	  
+	  let query_string = " SELECT id, lat, lon, contenttext, approved, timestamp FROM public.places WHERE approved = true;"
+	  // query_string += "from noisesensor;"; 
+	
+	  console.log(query_string)
+	  // request the data rsr
+	  dbFav.result(query_string)
+	  .then(result => {
+		// res.json(result.rows);
+		console.log((result.rows));
+		resolve((result.rows));
+	  })
+	  .catch(function (error) {
+		// handle error
+		// console.log(error);
+		reject(error);
+	  });
+	});
+  }
+  // - build geojson from response 
+  function buildFavJson(inputData,type){
+	return new Promise(function (resolve, reject) {
+	try {
+	  var JsonFeature = [];
+	  var json_acc = inputData
+	  var length = json_acc.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[i].lat;
+		var lon = json_acc[i].lon;
+		//  var type = json_acc.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].TRAFFIC_ITEM_TYPE_DESC;
+		var id = json_acc[i].id;
+		var contenttext = json_acc[i].contenttext;
+		var timestamp = json_acc[i].timestamp;
+  
+  
+		  // console.log(i)
+	
+	  
+  
+		   JsonFeature.push({
+			"type":"Feature",
+			"properties": { "id": id, "name": "datapoint" , "contenttext": contenttext, "timestamp": timestamp, "date": timestamp.getUTCDate(), "month": timestamp.getMonth(), "year": timestamp.getUTCFullYear(),  "lat":lat, "lon":lon},
+			"geometry":{
+				"type":"MultiPoint",
+				"coordinates": [ [parseFloat(lon), parseFloat(lat)]]
+			  }
+			}) 
+  
+		  
+	
+  
+	
+	  }
+	resolve(JsonFeature)
+	}catch(error){ reject(error)}
+  
+   
+  
+	});
+  
+  };
+  
+  app.post('/saveFavPoint', function (req, res) {
+   
+	try {
+	
+		const data = req.body;
+	// = "select sensor_id from public.noisesensor;"
+  
+	let query_string = " INSERT INTO public.places(    lat, lon, contenttext, approved, timestamp)     VALUES (" + data.lat + ", " + data.lon + ", '" + data.contentext + "',  'false' , NOW()); "
+	  // query_string += "from noisesensor;"; 
+  
+	console.log(query_string)
+	// request the data rsr
+	dbFav.result(query_string)
+	.then(result => {
+	  res.json(result.rows);
+	})
+	.catch(error => {
+	  console.log('ERROR:', error);
+	});			
+	console.log('.../saveFavPoint successful!');
+	}
+  
+	catch (err) {
+		console.log('.../saveFavPoint failed!\n' + err);
+	}
+  });
\ No newline at end of file
diff --git a/serveralternative.js b/serveralternative.js
deleted file mode 100644
index 13a4b4403ca15585797db286100e14d11b1c9321..0000000000000000000000000000000000000000
--- a/serveralternative.js
+++ /dev/null
@@ -1,1051 +0,0 @@
-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 got = require('got');
-const axios = require('axios');
-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");
-
-
-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);
-}
-
-
-
-//===========================================================================================================================
-//Final Version
-//===========================================================================================================================
-// ---- Traffic Flow ----
-// - 3Parts -  48.7823,9.1807,919
-// - 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.7544,9.1768,8745&responseattributes=sh%2Cfc&apiKey=9Grm-6B7VRvxAnbf2eKw29gR-9uuJP8VaXXYR8LK93Y');
-  console.log(APIout)
-  let json_tf = await flow_buildTFLOWJson(APIout);
-  console.log(json_tf)
-  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) {
-    axios.get(url)
-      .then(function (response) {
-        // handle success
-        console.log(response.data);
-        resolve(response.data);
-      })
-      .catch(function (error) {
-        // handle error
-        console.log(error);
-        reject(error);
-      });
-  });
-}
-// - build geojson from response 
-function flow_buildTFLOWJson(inputData){
-  return new Promise(function (resolve, reject) {
-  try {
-    var json_tflow = inputData
-  var JsonFeature = [];
-  console.log(json_tflow.RWS[0].RW.length + "---- in flow func")
-  var length = json_tflow.RWS[0].RW.length;
-  var fik
-  // console.log(length);
-
-  for (var i = 0; i<= length -1; i++){
-    var FIlength = json_tflow.RWS[0].RW[i].FIS[0].FI.length
-    console.log("i - " + i)
-      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;
-    for (var m = 0; m <= FIlength -1; m++){
-      console.log("k - " + m)
-      var shplength = json_tflow.RWS[0].RW[i].FIS[0].FI[m].SHP.length;
-      console.log("FI - " + json_tflow.RWS[0].RW[i].FIS[0].FI[m])
-      fik = json_tflow.RWS[0].RW[i].FIS[0].FI[m]
-      // var type = accident.body.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].TRAFFIC_ITEM_TYPE_DESC;
-
-      var TMC = json_tflow.RWS[0].RW[i].FIS[0].FI[m].TMC;
-      var CF = json_tflow.RWS[0].RW[i].FIS[0].FI[m].CF[0];
-      console.log("Shp length - " + json_tflow.RWS[0].RW[i].FIS[0].FI[m].SHP.length)
-      console.log("Shp length - " + shplength)
-      var locationshp = [];
-      for (var j = 0; j <= shplength - 1; j++ ){
-        console.log("j - " +j)
-        console.log("RWS  - " + json_tflow.RWS[0])
-        console.log("RW  - " + json_tflow.RWS[0].RW[i])
-        console.log("FIS  - " + json_tflow.RWS[0].RW[i].FIS[0])
-        console.log("FIk  - " + fik)
-        console.log("FI  - " + json_tflow.RWS[0].RW[i].FIS[0].FI[m])
-
-        console.log("shape j  - " + fik.SHP[j])
-        var value = fik.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) {
-    console.log(url)
-    axios.get(url)
-      .then(function (response) {
-        // handle success
-        // console.log(response.data);
-        resolve(response.data);
-      })
-      .catch(function (error) {
-        // handle error
-        // console.log(error);
-        reject(error);
-      });
-  });
-}
-// - build geojson from response 
-function CON_buildTFLOWJson(inputData,type){
-  return new Promise(function (resolve, reject) {
-  try {
-    var JsonFeature = [];
-    var json_acc = 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;
-      console.log(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;
-    console.log(data)
-    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 = 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 = 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{
-  console.log('https://data.sensor.community/airrohr/v1/sensor/' + req.query.id + '/')
-  let APIout = await flow_getApiResponse('https://data.sensor.community/airrohr/v1/sensor/' + req.query.id + '/');
-
-  console.log(APIout);
-
-  
-  res.json((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   -- NoiseSensorData
-  password: 'postgres', 																	// env var: PGPASSWORD  -- ahpk94meteor
-  host: 'localhost', 				// Server hosting the postgres database (host: '35.187.21.114') -- 193.196.38.112
-  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   noisesensorstest  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);
-  }
-});
-
-app.post('/getSTANoiseHist', async (req, res) => {
- 
-  console.log('command angekommen ////// STANoise/////!')
-  const pointData = req.query;
-  // console.log(pointData);
-  try {
-    
-    let origURL = 'http://193.196.138.56/frost-noise-api/v1.1/Datastreams(1)/Observations?$orderby=phenomenonTime%20asc'
-    let STALAeq = await STA_getApiResponse(origURL);
-    let STALAeqColl = [];
-
-    // let origURLmin = 'http://193.196.138.56/frost-noise-api/v1.1/Datastreams(2)/Observations?$orderby=phenomenonTime%20asc'
-    // let STALAeqmin = await STA_getApiResponse(origURLmin);
-
-    // let origURLmax = 'http://193.196.138.56/frost-noise-api/v1.1/Datastreams(3)/Observations?$orderby=phenomenonTime%20asc'
-    // let STALAeqmax = await STA_getApiResponse(origURLmax);
-    //eq
-    for (var i = 0; i<= STALAeq.value.length -1; i++){
-      var newNum = "noise";
-      var newVal = "LAeq";
-
-      STALAeq.value[i][newNum] = newVal;
-      STALAeqColl.push(STALAeq.value[i]);
-        
-    }
-    do {
-      STALAeq = await STA_getApiResponse(STALAeq["@iot.nextLink"]);
-      for (var j = 0; j<= STALAeq.value.length -1; j++){
-        STALAeqColl.push(STALAeq.value[j]);
-        
-      }
-    } while ("@iot.nextLink" in STALAeq);
-
-    
-    console.log(STALAeqColl.length)
-    res.json(STALAeqColl);
-  }
-  catch (err) {
-      console.log('.../loadSetP failed!\n' + err);
-  }
-});
-
-
-function STA_getApiResponse(url) {
-  return new Promise(function (resolve, reject) {
-    // console.log(url)
-    axios.get(url)
-      .then(function (response) {
-        // handle success
-        // console.log(response.data);
-        resolve(response.data);
-      })
-      .catch(function (error) {
-        // handle error
-        // console.log(error);
-        reject(error);
-      });
-  });
-}
-
-
-const connectionFav = {
-  
-	user: 'postgres', 																		// name of the user account
-	database: 'FavoritPlaces', 																	// 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 dbFav = pgp(connectionFav);
-  console.log('successful connected to DB: FavoritPlaces!')
-
-
-
-  // ---- FavPlaces ----
-// - 3Parts -
-// - get request from the html page
-app.get('/FavPlacesDB', async (req, res) => {
-  console.log('FavPlacesDB angekommen!')
-try{
-  let APIout = await getDBResult('');
-  console.log(APIout)
-  let json_con = await buildFavJson(APIout,"CONSTRUCTION");
-  // console.log(json_con)
-  var json_cons = {
-    "name":"FavouritePlaces" + "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 getDBResult(url) {
-  return new Promise(function (resolve, reject) {
-    
-    let query_string = " SELECT id, lat, lon, contenttext, approved, timestamp FROM public.places WHERE approved = true;"
-    // query_string += "from noisesensor;"; 
-  
-    console.log(query_string)
-    // request the data rsr
-    dbFav.result(query_string)
-    .then(result => {
-      // res.json(result.rows);
-      console.log((result.rows));
-      resolve((result.rows));
-    })
-    .catch(function (error) {
-      // handle error
-      // console.log(error);
-      reject(error);
-    });
-  });
-}
-// - build geojson from response 
-function buildFavJson(inputData,type){
-  return new Promise(function (resolve, reject) {
-  try {
-    var JsonFeature = [];
-    var json_acc = inputData
-    var length = json_acc.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[i].lat;
-      var lon = json_acc[i].lon;
-      //  var type = json_acc.TRAFFIC_ITEMS.TRAFFIC_ITEM[i].TRAFFIC_ITEM_TYPE_DESC;
-      var id = json_acc[i].id;
-      var contenttext = json_acc[i].contenttext;
-      var timestamp = json_acc[i].timestamp;
-
-
-        // console.log(i)
-  
-    
-
-         JsonFeature.push({
-          "type":"Feature",
-          "properties": { "id": id, "name": "datapoint" , "contenttext": contenttext, "timestamp": timestamp, "date": timestamp.getUTCDate(), "month": timestamp.getMonth(), "year": timestamp.getUTCFullYear(), "lat":lat, "lon":lon},
-          "geometry":{
-              "type":"MultiPoint",
-              "coordinates": [ [parseFloat(lon), parseFloat(lat)]]
-            }
-          }) 
-
-        
-  
-
-  
-    }
-  resolve(JsonFeature)
-  }catch(error){ reject(error)}
-
- 
-
-  });
-
-};
-
-app.post('/saveFavPoint', function (req, res) {
- 
-  try {
-  
-      const data = req.body;
-  // = "select sensor_id from public.noisesensor;"
-
-  let query_string = " INSERT INTO public.places(    lat, lon, contenttext, approved, timestamp)     VALUES (" + data.lat + ", " + data.lon + ", '" + data.contentext + "',  'false' , NOW()); "
-	// query_string += "from noisesensor;"; 
-
-  console.log(query_string)
-  // request the data rsr
-  dbFav.result(query_string)
-  .then(result => {
-    res.json(result.rows);
-  })
-  .catch(error => {
-    console.log('ERROR:', error);
-  });			
-  console.log('.../saveFavPoint successful!');
-  }
-
-  catch (err) {
-      console.log('.../saveFavPoint failed!\n' + err);
-  }
-});
\ No newline at end of file