mirror of https://gitlab.com/pamhyr/pamhyr2
Checker: Mage: Add guidelines checker.
parent
8b8aff7df1
commit
852a3f58ff
|
|
@ -24,6 +24,7 @@ from tools import flatten, timer
|
||||||
from PyQt5.QtCore import QCoreApplication
|
from PyQt5.QtCore import QCoreApplication
|
||||||
|
|
||||||
from Checker.Checker import AbstractModelChecker, STATUS
|
from Checker.Checker import AbstractModelChecker, STATUS
|
||||||
|
from Checker.Study import StudyGeometryChecker
|
||||||
|
|
||||||
_translate = QCoreApplication.translate
|
_translate = QCoreApplication.translate
|
||||||
|
|
||||||
|
|
@ -195,3 +196,51 @@ class MageNetworkGraphChecker(AbstractModelChecker):
|
||||||
self._summary = summary
|
self._summary = summary
|
||||||
self._status = status
|
self._status = status
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
class MageGeometryGuideLineChecker(StudyGeometryChecker):
|
||||||
|
def __init__(self):
|
||||||
|
super(MageGeometryGuideLineChecker, self).__init__()
|
||||||
|
|
||||||
|
self._name = _translate("Checker", "Mage geometry guide line checker")
|
||||||
|
self._description = _translate(
|
||||||
|
"Checker",
|
||||||
|
"Check if exists geometry guide line is correctly defined \
|
||||||
|
for each reaches of the study"
|
||||||
|
)
|
||||||
|
self._reachs = []
|
||||||
|
|
||||||
|
def run(self, study):
|
||||||
|
ok = super(MageGeometryGuideLineChecker, self).run(study)
|
||||||
|
|
||||||
|
if not ok:
|
||||||
|
return ok
|
||||||
|
|
||||||
|
river = study.river
|
||||||
|
edges = river.enable_edges()
|
||||||
|
|
||||||
|
gls = []
|
||||||
|
|
||||||
|
for edge in edges:
|
||||||
|
comp, incomp = edge.reach.compute_guidelines()
|
||||||
|
if len(incomp) != 0:
|
||||||
|
self._status = STATUS.WARNING
|
||||||
|
self._summary = "incomplete_guideline"
|
||||||
|
return False
|
||||||
|
|
||||||
|
gls.append(comp)
|
||||||
|
|
||||||
|
profiles = edge.reach.profiles
|
||||||
|
for profile in profiles:
|
||||||
|
if not profile.has_standard_named_points():
|
||||||
|
self._status = STATUS.WARNING
|
||||||
|
self._summary = "no_standard_guileline_defined"
|
||||||
|
return False
|
||||||
|
|
||||||
|
for gl in gls[1:]:
|
||||||
|
if len(gls[0].symmetric_difference(gl)) != 0:
|
||||||
|
self._status = STATUS.WARNING
|
||||||
|
self._summary = "no_all_reaches_do_not_have_same_defined"
|
||||||
|
return False
|
||||||
|
|
||||||
|
return ok
|
||||||
|
|
|
||||||
|
|
@ -82,15 +82,15 @@ class StudyGeometryChecker(AbstractModelChecker):
|
||||||
self._summary = "no_river_found"
|
self._summary = "no_river_found"
|
||||||
return False
|
return False
|
||||||
|
|
||||||
edges = list(filter(lambda e: e.is_enable(), river.edges()))
|
edges = river.enable_edges()
|
||||||
if len(edges) == 0:
|
if len(edges) == 0:
|
||||||
self._status = STATUS.ERROR
|
self._status = STATUS.ERROR
|
||||||
self._summary = "no_reach_defined"
|
self._summary = "no_reach_defined"
|
||||||
return False
|
return False
|
||||||
|
|
||||||
for edge in edges:
|
for edge in edges:
|
||||||
if edge.is_enable() and len(edge.reach.profiles) < 3:
|
if len(edge.reach.profiles) < 3:
|
||||||
summary = f"no_geometry_defined"
|
summary = "no_geometry_defined"
|
||||||
status = STATUS.ERROR
|
status = STATUS.ERROR
|
||||||
ok = False
|
ok = False
|
||||||
self._reachs.append(edge)
|
self._reachs.append(edge)
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,9 @@ import numpy as np
|
||||||
from tools import timer, trace
|
from tools import timer, trace
|
||||||
|
|
||||||
from Solver.CommandLine import CommandLineSolver
|
from Solver.CommandLine import CommandLineSolver
|
||||||
from Checker.Mage import MageNetworkGraphChecker
|
from Checker.Mage import (
|
||||||
|
MageNetworkGraphChecker, MageGeometryGuideLineChecker,
|
||||||
|
)
|
||||||
|
|
||||||
from Model.Results.Results import Results
|
from Model.Results.Results import Results
|
||||||
from Model.Results.River.River import River, Reach, Profile
|
from Model.Results.River.River import River, Reach, Profile
|
||||||
|
|
@ -90,7 +92,9 @@ class Mage(CommandLineSolver):
|
||||||
def checkers(cls):
|
def checkers(cls):
|
||||||
lst = [
|
lst = [
|
||||||
MageNetworkGraphChecker(connectivity=True),
|
MageNetworkGraphChecker(connectivity=True),
|
||||||
MageNetworkGraphChecker(connectivity=False)
|
MageNetworkGraphChecker(connectivity=False),
|
||||||
|
MageGeometryGuideLineChecker(),
|
||||||
|
|
||||||
]
|
]
|
||||||
|
|
||||||
return lst
|
return lst
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue