Skip to content

Commit b6a73cb

Browse files
committed
Added calculation of @kaltevuus from @korkeus as a fallback
1 parent 0c909e2 commit b6a73cb

File tree

3 files changed

+19
-1
lines changed

3 files changed

+19
-1
lines changed

Scripts/assignment/emme_assignment.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,7 @@ def prepare_network(self,
109109
pass
110110
self.emme_project.modeller.emmebank.create_function(
111111
idx, param.volume_delay_funcs[idx])
112+
self._calculate_gradients()
112113
self.emme_project.create_extra_function_parameters(el1="@kaltevuus")
113114

114115
def init_assign(self,
@@ -319,6 +320,11 @@ def _add_bus_stops(self):
319320
modified_network: Network = mnw.add_bus_stops(network)
320321
self.mod_scenario.publish_network(modified_network)
321322

323+
def _calculate_gradients(self):
324+
network: Network = self.mod_scenario.get_network()
325+
modified_network: Network = mnw.calculate_gradients(network)
326+
self.mod_scenario.publish_network(modified_network)
327+
322328
def _create_matrices(self, time_period, id_hundred, id_ten):
323329
"""Create EMME matrices for storing demand and impedance.
324330

Scripts/utils/modify_network.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,18 @@ def warn(self, message):
1919

2020
# Utility functions that modify a network. Functions take a network as input and return the modified network
2121

22+
def calculate_gradients(network):
23+
for link in network.links():
24+
if link['@kaltevuus'] == 0 and not link.i_node.is_centroid and not link.j_node.is_centroid:
25+
try:
26+
if link.i_node['@korkeus'] != 0 and link.j_node['@korkeus'] != 0:
27+
gradient = ((link.i_node['@korkeus'] - link.j_node['@korkeus']) / link.length)*0.1
28+
link['@kaltevuus'] = gradient
29+
log.debug(f"Calculated @kaltevuus for link {link.id}: {gradient}")
30+
except KeyError:
31+
log.info("@korkeus extra_attribute has not been defined. Skipping adjustment of @kaltevuus values")
32+
return network
33+
2234
def add_bus_stops(network):
2335
# Initialize an empty dictionary to store line IDs and maximum stop distances
2436
data = {"line_id": [], "maximum_stop_distance": [], "is_motorway": [], "loops": []}

Scripts/utils/validate_loaded_network.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
def validate_loaded(network, fares=None):
44
for line in network.transit_lines():
5-
if str(line.vehicle.mode) in "mr":
5+
if str(line.vehicle.mode) in "mrj":
66
segments = list(line.segments())
77
for seg1,seg2 in zip(segments[:-1],segments[1:]):
88
if seg1.data1 == 0 and (seg2.allow_boardings == 1 or seg2.allow_alightings ==1):

0 commit comments

Comments
 (0)