Skip to content
Snippets Groups Projects
Commit 7addf435 authored by Smerkol, Maj's avatar Smerkol, Maj
Browse files

fixes map based kpi visualization for messina - only tested for messina!

parent ce8bd806
No related branches found
No related tags found
No related merge requests found
...@@ -96,7 +96,7 @@ def get_kpi_vis_info(): ...@@ -96,7 +96,7 @@ def get_kpi_vis_info():
{"buttonValue": "pollution", "buttonLabel": "Pollution"}, {"buttonValue": "pollution", "buttonLabel": "Pollution"},
{ {
"buttonValue": "accousticPollution", "buttonValue": "accousticPollution",
"buttonLabel": "Accoustic Pollution - WIP", "buttonLabel": "Acoustic Pollution - WIP",
}, },
{ {
"buttonValue": "congestionsAndBottlenecks", "buttonValue": "congestionsAndBottlenecks",
...@@ -118,7 +118,7 @@ def get_kpi_vis_info(): ...@@ -118,7 +118,7 @@ def get_kpi_vis_info():
"buttonValue": "averageSpeedOfPublicTransport", "buttonValue": "averageSpeedOfPublicTransport",
"buttonLabel": "Avg Public Transport Speed", "buttonLabel": "Avg Public Transport Speed",
}, },
{"buttonValue": "numberOfBikeTrips", "buttonLabel": "Number of Bike Trips"}, # {"buttonValue": "numberOfBikeTrips", "buttonLabel": "Number of Bike Trips"},
{ {
"buttonValue": "shareOfVehicles", "buttonValue": "shareOfVehicles",
"buttonLabel": "Share of Trips per Mode", "buttonLabel": "Share of Trips per Mode",
...@@ -126,7 +126,7 @@ def get_kpi_vis_info(): ...@@ -126,7 +126,7 @@ def get_kpi_vis_info():
{ {
"buttonValue": "dailyInternalTravels", "buttonValue": "dailyInternalTravels",
"buttonLabel": "Daily Internal Trips", "buttonLabel": "Daily Internal Trips",
}, }
] ]
else: else:
raise ValueError("Invalid deploy parameters - city set to %s", city) raise ValueError("Invalid deploy parameters - city set to %s", city)
...@@ -137,7 +137,7 @@ def get_kpi_data_and_write(network, events, sim_id): ...@@ -137,7 +137,7 @@ def get_kpi_data_and_write(network, events, sim_id):
""" """
get_kpi_data_final_geojson is a list of links with kpis calculated get_kpi_data_final_geojson is a list of links with kpis calculated
""" """
app.logger.info("getting kpi data to write") app.logger.info(f"getting kpi data to write, city {city}")
results = {} results = {}
emisson_object = kpis_module.get_emissions(sim_id, network) emisson_object = kpis_module.get_emissions(sim_id, network)
...@@ -183,18 +183,21 @@ def get_kpi_data_and_write(network, events, sim_id): ...@@ -183,18 +183,21 @@ def get_kpi_data_and_write(network, events, sim_id):
app.logger.info("harbour area traffic flow - TODO") app.logger.info("harbour area traffic flow - TODO")
elif network.city == "messina": elif network.city == "messina":
if emisson_object is not None: if emisson_object is not None:
pollution = emisson_object.total_emissions_by_link() pollution = emisson_object.total_emissions_by_link()
app.logger.info("Emission by link") app.logger.info("Emission by link")
write_geojson_links(pollution, "pollution", network, sim_id) write_geojson_links(pollution, "pollution", network, sim_id)
app.logger.info("written emission") app.logger.info("written emission")
publicTransportUse = events.public_transport_use_geojson() publicTransportUse = events.public_transport_use_geojson()
app.logger.info("public transport use") app.logger.info("public transport use")
write_geojson_links(publicTransportUse, "publicTransportUse", network, sim_id) write_geojson_links(publicTransportUse, "publicTransportUse", network, sim_id)
app.logger.info("written public transport use") app.logger.info("written public transport use")
averageSpeedOfPublicTransport = events.average_bus_speed_geojson() # TODO
averageSpeedOfPublicTransport = events.average_bus_speed_geojson()
app.logger.info("average speed of public transport") app.logger.info("average speed of public transport")
write_geojson_links( write_geojson_links(
averageSpeedOfPublicTransport, averageSpeedOfPublicTransport,
...@@ -203,6 +206,7 @@ def get_kpi_data_and_write(network, events, sim_id): ...@@ -203,6 +206,7 @@ def get_kpi_data_and_write(network, events, sim_id):
sim_id, sim_id,
) )
app.logger.info("written averageSpeedOfPublicTransport") app.logger.info("written averageSpeedOfPublicTransport")
numberOfBikeTrips = events.vehicles_count_per_link(only="bike") numberOfBikeTrips = events.vehicles_count_per_link(only="bike")
app.logger.info("number of bike trips") app.logger.info("number of bike trips")
...@@ -210,8 +214,6 @@ def get_kpi_data_and_write(network, events, sim_id): ...@@ -210,8 +214,6 @@ def get_kpi_data_and_write(network, events, sim_id):
app.logger.info("written numberOfBikeTrips") app.logger.info("written numberOfBikeTrips")
shareOfVehicles = vehicleCountToShareGeojson(events.vehicles_count_per_link()) shareOfVehicles = vehicleCountToShareGeojson(events.vehicles_count_per_link())
# shareOfPublicTransport = events.share_public_transport()
app.logger.info("share of vehicles") app.logger.info("share of vehicles")
write_geojson_links(shareOfVehicles, "shareOfVehicles", network, sim_id) write_geojson_links(shareOfVehicles, "shareOfVehicles", network, sim_id)
app.logger.info("written shareOfVehicles") app.logger.info("written shareOfVehicles")
...@@ -317,6 +319,7 @@ def write_geojson_pedestrian_trips(kpi_data, network, sim_id): ...@@ -317,6 +319,7 @@ def write_geojson_pedestrian_trips(kpi_data, network, sim_id):
json.dump(data, fp, indent=2) json.dump(data, fp, indent=2)
return data return data
def write_geojson_links(kpi_data, kpi_name, network, sim_id): def write_geojson_links(kpi_data, kpi_name, network, sim_id):
""" """
Write a per link kpi_data object to a file. Write a per link kpi_data object to a file.
......
...@@ -177,19 +177,23 @@ class VehicleEvents(Events): ...@@ -177,19 +177,23 @@ class VehicleEvents(Events):
"bikeability_safety": 0, "bikeability_safety": 0,
"capacity": capacity, "capacity": capacity,
} }
ev_vehicle = event["vehicle"].split("_") ev_vehicle = event["vehicle"]
if len(ev_vehicle) > 1: if ev_vehicle[1] == "bicycle":
if ev_vehicle[1] == "bicycle": links[event["link"]]["bike_count"] += 1
links[event["link"]]["bike_count"] += 1 elif ev_vehicle[1] == "bus":
elif ev_vehicle[1] == "bus": links[event["link"]]["bus_count"] += 1
links[event["link"]]["bus_count"] += 1 else:
elif event["vehicle"].isnumeric() or event["vehicle"].find(".1") >= 0:
links[event["link"]]["car_count"] += 1 links[event["link"]]["car_count"] += 1
for link_id, link_data in links.items(): for link_id, link_data in links.items():
if links.get(link_id, False) and link_data["bike_count"] > 0: if links.get(link_id, False) and link_data["bike_count"] > 0:
links[link_id]["bikeability_safety"] = 10 * ( links[link_id]["bikeability_safety"] = 10 * (
1 - link_data["car_count"] / link_data["capacity"] 1 - (link_data["car_count"] / link_data["capacity"])
) )
# links[link_id].pop("bike_count", None)
# links[link_id].pop("bus_count", None)
# links[link_id].pop("car_count", None)
# links[link_id].pop("capacity", None)
return links return links
# TODO fix after fixing bike_safety_index above # TODO fix after fixing bike_safety_index above
...@@ -297,12 +301,9 @@ class VehicleEvents(Events): ...@@ -297,12 +301,9 @@ class VehicleEvents(Events):
Calculates the daily vehicle counts for each link. Calculates the daily vehicle counts for each link.
""" """
if local_links is None: if local_links is None:
def filter_exp(event): def filter_exp(event):
return event["type"] == "entered link" return event["type"] == "entered link"
else: else:
def filter_exp(event): def filter_exp(event):
return event["type"] == "entered link" and event["link"] in local_links return event["type"] == "entered link" and event["link"] in local_links
...@@ -316,17 +317,12 @@ class VehicleEvents(Events): ...@@ -316,17 +317,12 @@ class VehicleEvents(Events):
"car_count": 0, "car_count": 0,
"bike_count": 0, "bike_count": 0,
} }
ev_vehicle = event["vehicle"].split("_") ev_vehicle = event["vehicle"]
if len(ev_vehicle) > 1: if "bicycle" in ev_vehicle:
if ev_vehicle[1] == "bicycle" and check_only("bike"):
links[event["link"]]["bike_count"] += 1 links[event["link"]]["bike_count"] += 1
elif ev_vehicle[1] == "bus" and check_only("bus"): elif "bus" in ev_vehicle and not check_only == "bike":
links[event["link"]]["bus_count"] += 1 links[event["link"]]["bus_count"] += 1
elif ( elif not check_only == "bike":
event["vehicle"].isnumeric()
or event["vehicle"].find(".1") >= 0
and check_only("car")
):
links[event["link"]]["car_count"] += 1 links[event["link"]]["car_count"] += 1
return links return links
...@@ -347,46 +343,24 @@ class VehicleEvents(Events): ...@@ -347,46 +343,24 @@ class VehicleEvents(Events):
filtered_events = self.timeslot_filter_events(timeslot) filtered_events = self.timeslot_filter_events(timeslot)
for event in filter(filter_exp, filtered_events): for event in filter(filter_exp, filtered_events):
ev_vehicle = event["vehicle"].split("_") ev_vehicle = event["vehicle"]
if len(ev_vehicle) > 1: if "bicycle" in ev_vehicle: bicycles.add(event["vehicle"])
if ev_vehicle[1] == "bicycle": elif "bus" in ev_vehicle: busses.add(event["vehicle"])
bicycles.add(event["vehicle"]) else: cars.add(event["vehicle"])
elif ev_vehicle[1] == "bus":
busses.add(event["vehicle"]) logger.error(f"BUSSES: {len(busses)}")
elif event["vehicle"].isnumeric() or event["vehicle"].find(".1") >= 0: logger.error(f"BIKES: {len(bicycles)}")
cars.add(event["vehicle"]) logger.error(f"CARS: {len(cars)}")
results = {
"bus_count": len(busses), results = {}
"car_count": len(cars), if len(busses) > 0: results["bus_count"] = len(busses)
"bike_count": len(bicycles), if len(cars) > 0: results["car_count"] = len(cars)
} if len(bicycles) > 0: results["bike_count"] = len(bicycles)
return results return results
# TODO moyua links
def capacity_to_moyua(self, moyua_square_links=None, timeslot=None): def capacity_to_moyua(self, moyua_square_links, timeslot=None):
if moyua_square_links is None:
moyua_square_links = [
"22691",
"22692",
"51616",
"51617",
"52446",
"52447",
"45116",
"45117",
"45118",
"37953",
"45140",
"33748",
"33749",
"2484",
"2485",
"26087",
"47250",
"26024",
"43904",
"20252",
]
links = {} links = {}
free_capacity = {} free_capacity = {}
filtered_events = self.timeslot_filter_events(timeslot) filtered_events = self.timeslot_filter_events(timeslot)
...@@ -836,7 +810,7 @@ class VehicleEvents(Events): ...@@ -836,7 +810,7 @@ class VehicleEvents(Events):
continue continue
data_by_link[item["link"]] = { data_by_link[item["link"]] = {
"pt_users": item["occ"], "pt_users": item["occ"],
"pt_vehicles": [veh_id], # "pt_vehicles": [veh_id],
} }
else: else:
data_by_link[item["link"]]["pt_users"] += item["occ"] data_by_link[item["link"]]["pt_users"] += item["occ"]
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment