From 6164e0469eda8864bae8819d45e97f00503e0c60 Mon Sep 17 00:00:00 2001
From: Maj Smerkol <maj.smerkol@ijs.si>
Date: Wed, 21 Jun 2023 11:56:43 +0200
Subject: [PATCH] adds noise pollution KPI

---
 app/api/geojsons.py | 58 +++++++++++++++++++++++----------------------
 1 file changed, 30 insertions(+), 28 deletions(-)

diff --git a/app/api/geojsons.py b/app/api/geojsons.py
index 62582f2..428e330 100644
--- a/app/api/geojsons.py
+++ b/app/api/geojsons.py
@@ -41,13 +41,14 @@ def geojsontest(sim_id):
     app.logger.debug("done in %s s", delta_t)
     app.logger.debug("starting write geojson pedestrian trips")
     start_t = time.time()
-    pedestrianTravelTime = write_geojson_pedestrian_trips(pedestrianTravelTime, network, sim_id)
+    pedestrianTravelTime = write_geojson_pedestrian_trips(
+        pedestrianTravelTime, network, sim_id
+    )
     delta_t = time.time() - start_t
     app.logger.info("written pedestrianTravelTime in %s s", delta_t)
     return pedestrianTravelTime
 
 
-
 @app.route("/dss/geojson/<int:sim_id>/<kpi_name>")
 def get_kpi_geojson(sim_id, kpi_name):
     sim_dir = utils.get_sim_dir_names([sim_id])[0]
@@ -82,6 +83,10 @@ def get_kpi_vis_info():
                 "buttonLabel": "Pedestrian Travel Time",
             },
             {"buttonValue": "dailyInternalTravels", "buttonLabel": "Internal Trips"},
+            {
+                "buttonValue": "noisePollution",
+                "buttonLabel": "Noise Pollution",
+            },
         ]
     elif city == "amsterdam":
         kpi_info = [
@@ -94,10 +99,6 @@ def get_kpi_vis_info():
     elif city == "helsinki":
         kpi_info = [
             {"buttonValue": "pollution", "buttonLabel": "Pollution"},
-            {
-                "buttonValue": "accousticPollution",
-                "buttonLabel": "Acoustic Pollution - WIP",
-            },
             {
                 "buttonValue": "congestionsAndBottlenecks",
                 "buttonLabel": "Congestions and Bottlenecks",
@@ -126,7 +127,7 @@ def get_kpi_vis_info():
             {
                 "buttonValue": "dailyInternalTravels",
                 "buttonLabel": "Daily Internal Trips",
-            }
+            },
         ]
     else:
         raise ValueError("Invalid deploy parameters - city set to %s", city)
@@ -157,7 +158,9 @@ def get_kpi_data_and_write(network, events, sim_id):
 
         dailyInternalTravels = events.vehicles_count_per_link()
         app.logger.info("Vehicles count per link")
-        write_geojson_links(dailyInternalTravels, "dailyInternalTravels", network, sim_id)
+        write_geojson_links(
+            dailyInternalTravels, "dailyInternalTravels", network, sim_id
+        )
         app.logger.info("written dailyInternalTravels")
 
     elif network.city == "helsinki":
@@ -172,7 +175,9 @@ def get_kpi_data_and_write(network, events, sim_id):
         # write_geojson(pollution, "pollution", network, sim_id)
         # app.logger.info("written emission")
 
-        congestionsAndBottlenecks = events.get_congested_links(rush_hour)["congested_links"]
+        congestionsAndBottlenecks = events.get_congested_links(rush_hour)[
+            "congested_links"
+        ]
         app.logger.info("congestions and bottlenecks")
         write_geojson_links(
             congestionsAndBottlenecks, "congestionsAndBottlenecks", network, sim_id
@@ -183,20 +188,18 @@ def get_kpi_data_and_write(network, events, sim_id):
         app.logger.info("harbour area traffic flow - TODO")
 
     elif network.city == "messina":
-        
+
         if emisson_object is not None:
             pollution = emisson_object.total_emissions_by_link()
             app.logger.info("Emission by link")
             write_geojson_links(pollution, "pollution", network, sim_id)
             app.logger.info("written emission")
 
-
         publicTransportUse = events.public_transport_use_geojson()
         app.logger.info("public transport use")
         write_geojson_links(publicTransportUse, "publicTransportUse", network, sim_id)
         app.logger.info("written public transport use")
 
-
         averageSpeedOfPublicTransport = events.average_bus_speed_geojson()
         app.logger.info("average speed of public transport")
         write_geojson_links(
@@ -206,7 +209,6 @@ def get_kpi_data_and_write(network, events, sim_id):
             sim_id,
         )
         app.logger.info("written averageSpeedOfPublicTransport")
-        
 
         numberOfBikeTrips = events.vehicles_count_per_link(only="bike")
         app.logger.info("number of bike trips")
@@ -220,7 +222,9 @@ def get_kpi_data_and_write(network, events, sim_id):
 
         dailyInternalTravels = events.vehicles_count_per_link()
         app.logger.info("daily internal travels")
-        write_geojson_links(dailyInternalTravels, "dailyInternalTravels", network, sim_id)
+        write_geojson_links(
+            dailyInternalTravels, "dailyInternalTravels", network, sim_id
+        )
         app.logger.info("written dailyInternalTravels")
 
     elif network.city == "amsterdam":
@@ -245,7 +249,9 @@ def get_kpi_data_and_write(network, events, sim_id):
         write_geojson_links(bike_intensity, "bikeIntensity", network, sim_id)
         app.logger.info("written bikeIntensity")
 
-        bike_congestion = events.get_congested_links(rush_hour, vehicle_mode="bicycle")["congested_links"]
+        bike_congestion = events.get_congested_links(rush_hour, vehicle_mode="bicycle")[
+            "congested_links"
+        ]
         app.logger.info("bikeCongestion")
         write_geojson_links(bike_congestion, "bikeCongestion", network, sim_id)
         app.logger.info("written bikeCongestion")
@@ -285,32 +291,28 @@ def write_geojson_pedestrian_trips(kpi_data, network, sim_id):
     # crs_transformer = Transformer.from_crs("epsg:2062", "epsg:4326")
 
     for element in kpi_data:
-        if element["average_time"] < 3600.: continue
+        if element["average_time"] < 3600.0:
+            continue
 
         s_link = network.get_link(element["start_link"])
-        s_nodes = [network.get_node(s_link["from"]), network.get_node(s_link["to"]) ]
+        s_nodes = [network.get_node(s_link["from"]), network.get_node(s_link["to"])]
         s_point = (
-            (float(s_nodes[0]["x"]) + float(s_nodes[1]["x"])) / 2.,
-            (float(s_nodes[0]["y"]) + float(s_nodes[1]["y"])) / 2.
+            (float(s_nodes[0]["x"]) + float(s_nodes[1]["x"])) / 2.0,
+            (float(s_nodes[0]["y"]) + float(s_nodes[1]["y"])) / 2.0,
         )
         s_point = tuple(reversed(crs_transformer.transform(*s_point)))
         e_link = network.get_link(element["end_link"])
         e_nodes = [network.get_node(e_link["from"]), network.get_node(e_link["to"])]
         e_point = (
-            (float(e_nodes[0]["x"]) + float(e_nodes[1]["x"])) / 2.,
-            (float(e_nodes[0]["y"]) + float(e_nodes[1]["y"])) / 2.
+            (float(e_nodes[0]["x"]) + float(e_nodes[1]["x"])) / 2.0,
+            (float(e_nodes[0]["y"]) + float(e_nodes[1]["y"])) / 2.0,
         )
         e_point = tuple(reversed(crs_transformer.transform(*e_point)))
         data["features"].append(
             {
                 "type": "Feature",
-                "properties": {
-                    "long pedestrian trip": element["average_time"] / (60)
-                },
-                "geometry": {
-                    "type": "LineString",
-                    "coordinates": [s_point, e_point]
-                }
+                "properties": {"long pedestrian trip": element["average_time"] / (60)},
+                "geometry": {"type": "LineString", "coordinates": [s_point, e_point]},
             }
         )
 
-- 
GitLab