Skip to content

Commit

Permalink
.
Browse files Browse the repository at this point in the history
  • Loading branch information
r-akemii committed Feb 4, 2025
1 parent 6c88764 commit c3d0e86
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 21 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -724,9 +724,6 @@
</property>
</widget>
</item>
<item row="4" column="2" colspan="2">
<widget class="QComboBox" name="cob_direction"/>
</item>
<item row="7" column="0" colspan="4">
<widget class="QGroupBox" name="gridGroupBox">
<property name="title">
Expand Down Expand Up @@ -840,6 +837,9 @@
</property>
</widget>
</item>
<item row="4" column="3">
<widget class="QComboBox" name="cob_direction"/>
</item>
</layout>
</widget>
</item>
Expand Down
63 changes: 45 additions & 18 deletions qaequilibrae/modules/paths_procedures/traffic_assignment_dialog.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import logging
import os
import re
import sys
from tempfile import gettempdir

Expand Down Expand Up @@ -51,6 +52,7 @@ def __init__(self, qgis_project):
self.miter = 1000
self.select_links = {}
self.__current_links = []
self.__project_links = self.project.network.links.data.link_id

# Signals for the matrix_procedures tab
self.but_add_skim.clicked.connect(self._add_skimming)
Expand Down Expand Up @@ -321,7 +323,8 @@ def _add_skimming(self):
self.skimming = True

def add_query(self):
link_id = int(self.input_link_id.text())
link_id = self.validate_link_id()

direction = self.cob_direction.currentText()

if direction in ["AB", "Both"]:
Expand All @@ -330,22 +333,40 @@ def add_query(self):
if direction in ["BA", "Both"]:
self.__current_links.extend([(link_id, -1)])

def validate_link_id(self):
link_id = str(self.input_link_id.text())

# Check if we have only numbers
if not link_id.isdigit():
self.error = self.tr("Wrong value for link ID")
qgis.utils.iface.messageBar().pushMessage(self.tr("Input error"), self.error, level=1, duration=5)
return

# Check if link_id exists
link_id = int(link_id)
if link_id not in self.__project_links:
self.error = self.tr("Link ID doesn't exist in project")
qgis.utils.iface.messageBar().pushMessage(self.tr("Input error"), self.error, level=2, duration=5)
return

return link_id

def build_query(self):
query_name = self.input_qry_name.text()

if len(query_name) == 0 or not query_name:
self.error = self.tr("Missing query name")
qgis.utils.iface.messageBar().pushMessage(self.tr("Input error"), self.error, level=1)
qgis.utils.iface.messageBar().pushMessage(self.tr("Input error"), self.error, level=1, duration=5)
return

if query_name in self.select_links:
self.error = self.tr("Query name already used")
qgis.utils.iface.messageBar().pushMessage(self.tr("Input error"), self.error, level=1)
qgis.utils.iface.messageBar().pushMessage(self.tr("Input error"), self.error, level=1, duration=5)
return

if not self.__current_links:
self.error = self.tr("Please set a link selection")
qgis.utils.iface.messageBar().pushMessage(self.tr("Input error"), self.error, level=1)
qgis.utils.iface.messageBar().pushMessage(self.tr("Input error"), self.error, level=1, duration=5)
return
else:
self.select_links[query_name] = self.__current_links
Expand Down Expand Up @@ -386,7 +407,8 @@ def job_finished_from_thread(self):

def run(self):
if not self.check_data():
qgis.utils.iface.messageBar().pushMessage(self.tr("Input error"), self.error, level=3, duration=10)
qgis.utils.iface.messageBar().pushMessage(self.tr("Input error"), self.error, level=1, duration=5)
return

self.miter = int(self.max_iter.text())
for q in [self.progressbar, self.progress_label]:
Expand All @@ -403,10 +425,9 @@ def run(self):
self.assignment.set_algorithm(self.cb_choose_algorithm.currentText())
self.assignment.log_specification()

if self.chb_save_flow.isChecked():
self.assignment.save_select_link_results(self.output_name)
else:
self.assignment.save_select_link_matrices(self.output_name)
if self.do_select_link.isChecked():
for traffic_class in self.traffic_classes.values():
traffic_class.set_select_links(self.select_links)

self.worker_thread = self.assignment.assignment
self.run_thread()
Expand All @@ -429,14 +450,15 @@ def check_data(self):
self.error = self.tr("Result table name already exists. Choose a new name")
return False

self.output_name = self.sl_mat_name.text()
if not self.output_name:
self.error = self.tr("Missing select link matrix name.")
return False
if self.do_select_link.isChecked():
self.output_name = self.sl_mat_name.text()
if len(self.output_name) == 0:
self.error = self.tr("Missing select link matrix name.")
return False

if self.output_name in self.matrices:
self.error = self.tr("Result matrix name already exists. Choose a new name.")
return False
if self.output_name in self.matrices:
self.error = self.tr("Result matrix name already exists. Choose a new name.")
return False

self.temp_path = gettempdir()
tries_setup = self.set_assignment()
Expand All @@ -455,6 +477,11 @@ def signal_handler(self, val):

# Save link flows to disk
def produce_all_outputs(self):
if self.do_select_link.isChecked():
if self.chb_save_flow.isChecked():
self.assignment.save_select_link_results(self.output_name)
else:
self.assignment.save_select_link_matrices(self.output_name)
self.assignment.save_results(self.scenario_name)
if self.skimming:
self.assignment.save_skims(self.scenario_name, which_ones="all", format="omx")
Expand Down

0 comments on commit c3d0e86

Please sign in to comment.