Commit 852a3f58 authored by Pierre-Antoine Rouby's avatar Pierre-Antoine Rouby
Browse files

Checker: Mage: Add guidelines checker.

Showing with 58 additions and 5 deletions
+58 -5
......@@ -24,6 +24,7 @@ from tools import flatten, timer
from PyQt5.QtCore import QCoreApplication
from Checker.Checker import AbstractModelChecker, STATUS
from Checker.Study import StudyGeometryChecker
_translate = QCoreApplication.translate
......@@ -195,3 +196,51 @@ class MageNetworkGraphChecker(AbstractModelChecker):
self._summary = summary
self._status = status
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"
return False
edges = list(filter(lambda e: e.is_enable(), river.edges()))
edges = river.enable_edges()
if len(edges) == 0:
self._status = STATUS.ERROR
self._summary = "no_reach_defined"
return False
for edge in edges:
if edge.is_enable() and len(edge.reach.profiles) < 3:
summary = f"no_geometry_defined"
if len(edge.reach.profiles) < 3:
summary = "no_geometry_defined"
status = STATUS.ERROR
ok = False
self._reachs.append(edge)
......
......@@ -23,7 +23,9 @@ import numpy as np
from tools import timer, trace
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.River.River import River, Reach, Profile
......@@ -90,7 +92,9 @@ class Mage(CommandLineSolver):
def checkers(cls):
lst = [
MageNetworkGraphChecker(connectivity=True),
MageNetworkGraphChecker(connectivity=False)
MageNetworkGraphChecker(connectivity=False),
MageGeometryGuideLineChecker(),
]
return lst
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment