mirror of
https://gitlab.com/pamhyr/pamhyr2.git
synced 2026-10-29 19:10:42 +01:00
Compare commits
3
Commits
f43d108871
...
0.0.9
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
28c23ee580 | ||
|
|
71c5aec876 | ||
|
|
3ce9e094e7 |
No files matched your search
@@ -11,7 +11,8 @@
|
||||
\usepackage[absolute]{textpos}
|
||||
\usepackage{titlesec}
|
||||
\usepackage{amssymb}
|
||||
\usepackage{tcolorbox}
|
||||
\usepackage[minted,xparse,breakable]{tcolorbox}
|
||||
\usepackage{pmboxdraw}
|
||||
|
||||
\usepackage{enumitem}
|
||||
\setlist[enumerate]{itemsep=-0.5em}
|
||||
@@ -140,7 +141,7 @@
|
||||
\setminted[llvm]{breaklines,fontsize=\footnotesize,encoding=utf8}
|
||||
|
||||
%% Add box arrond of minted
|
||||
\BeforeBeginEnvironment{minted}{\begin{tcolorbox}[boxsep=0pt, left=0.1cm, right=0.1cm, arc=0pt, boxrule=0.5pt, colback=white]}%
|
||||
\BeforeBeginEnvironment{minted}{\begin{tcolorbox}[breakable, boxsep=0pt, left=0.1cm, right=0.1cm, arc=0pt, boxrule=0.5pt, colback=white]}%
|
||||
\AfterEndEnvironment{minted}{\end{tcolorbox}}%
|
||||
|
||||
\makeatletter
|
||||
|
||||
+3
-3
@@ -363,7 +363,7 @@ class MeshingWithMageMailleurTT(AMeshingTool):
|
||||
self.import_m_file(reach, m_file)
|
||||
return reach
|
||||
|
||||
def update_kp(self, reach,
|
||||
def update_rk(self, reach,
|
||||
step: float = 50,
|
||||
limites=[-1, -1],
|
||||
origin=0,
|
||||
@@ -397,7 +397,7 @@ class MeshingWithMageMailleurTT(AMeshingTool):
|
||||
logger.info(
|
||||
f"! {self._exe_path()} " +
|
||||
f"{st_file} {m_file} " +
|
||||
f"update_kp " +
|
||||
f"update_rk " +
|
||||
f"{str(step)} " +
|
||||
f"{limites[0]} {limites[1]} " +
|
||||
f"{directrices[0]} {directrices[1]} " +
|
||||
@@ -411,7 +411,7 @@ class MeshingWithMageMailleurTT(AMeshingTool):
|
||||
str,
|
||||
[
|
||||
st_file, m_file,
|
||||
"update_kp", step,
|
||||
"update_rk", step,
|
||||
limites[0], limites[1],
|
||||
directrices[0], directrices[1],
|
||||
orientation, lm, linear, origin, origin_value
|
||||
|
||||
@@ -43,8 +43,8 @@ class Friction(SQLSubModel):
|
||||
|
||||
self._name = name
|
||||
self._edge = None
|
||||
self._begin_kp = 0.0
|
||||
self._end_kp = 0.0
|
||||
self._begin_rk = 0.0
|
||||
self._end_rk = 0.0
|
||||
self._begin_strickler = None
|
||||
self._end_strickler = None
|
||||
|
||||
@@ -54,8 +54,8 @@ class Friction(SQLSubModel):
|
||||
CREATE TABLE friction(
|
||||
id INTEGER NOT NULL PRIMARY KEY,
|
||||
ind INTEGER NOT NULL,
|
||||
begin_kp REAL NOT NULL,
|
||||
end_kp REAL NOT NULL,
|
||||
begin_rk REAL NOT NULL,
|
||||
end_rk REAL NOT NULL,
|
||||
reach INTEGER NOT NULL,
|
||||
begin_strickler INTEGER NOT NULL,
|
||||
end_strickler INTEGER NOT NULL,
|
||||
@@ -69,6 +69,12 @@ class Friction(SQLSubModel):
|
||||
|
||||
@classmethod
|
||||
def _db_update(cls, execute, version):
|
||||
major, minor, release = version.strip().split(".")
|
||||
if major == minor == "0":
|
||||
if int(release) < 11:
|
||||
execute("ALTER TABLE friction RENAME COLUMN begin_kp TO begin_rk")
|
||||
execute("ALTER TABLE friction RENAME COLUMN end_kp TO end_rk")
|
||||
|
||||
return True
|
||||
|
||||
@classmethod
|
||||
@@ -80,7 +86,7 @@ class Friction(SQLSubModel):
|
||||
stricklers = data["stricklers"].stricklers
|
||||
|
||||
table = execute(
|
||||
"SELECT id, ind, begin_kp, end_kp, " +
|
||||
"SELECT id, ind, begin_rk, end_rk, " +
|
||||
"begin_strickler, end_strickler " +
|
||||
f"FROM friction WHERE reach = {reach.id}"
|
||||
)
|
||||
@@ -102,8 +108,8 @@ class Friction(SQLSubModel):
|
||||
# Create friction
|
||||
sec = cls(status=status)
|
||||
sec.edge = reach
|
||||
sec.begin_kp = row[2]
|
||||
sec.end_kp = row[3]
|
||||
sec.begin_rk = row[2]
|
||||
sec.end_rk = row[3]
|
||||
sec.begin_strickler = bs
|
||||
sec.end_strickler = es
|
||||
|
||||
@@ -124,11 +130,11 @@ class Friction(SQLSubModel):
|
||||
|
||||
execute(
|
||||
"INSERT INTO " +
|
||||
"friction(id, ind, begin_kp, end_kp, " +
|
||||
"friction(id, ind, begin_rk, end_rk, " +
|
||||
"reach, begin_strickler, end_strickler) " +
|
||||
"VALUES (" +
|
||||
f"{self.id}, {ind}, " +
|
||||
f"{self._begin_kp}, {self._end_kp}, " +
|
||||
f"{self._begin_rk}, {self._end_rk}, " +
|
||||
f"{self._edge.id}, " +
|
||||
f"{b_s_id}, {e_s_id}" +
|
||||
")"
|
||||
@@ -157,10 +163,10 @@ class Friction(SQLSubModel):
|
||||
def edge(self, edge):
|
||||
self._edge = edge
|
||||
if (edge is not None and
|
||||
self._begin_kp == 0.0 and
|
||||
self._end_kp == 0.0):
|
||||
self._begin_kp = self._edge.reach.get_kp_min()
|
||||
self._end_kp = self._edge.reach.get_kp_max()
|
||||
self._begin_rk == 0.0 and
|
||||
self._end_rk == 0.0):
|
||||
self._begin_rk = self._edge.reach.get_rk_min()
|
||||
self._end_rk = self._edge.reach.get_rk_max()
|
||||
self._status.modified()
|
||||
|
||||
def has_edge(self):
|
||||
@@ -176,45 +182,45 @@ class Friction(SQLSubModel):
|
||||
return self.has_edge() and self.has_coefficient()
|
||||
|
||||
@property
|
||||
def begin_kp(self):
|
||||
return self._begin_kp
|
||||
def begin_rk(self):
|
||||
return self._begin_rk
|
||||
|
||||
@begin_kp.setter
|
||||
def begin_kp(self, begin_kp):
|
||||
@begin_rk.setter
|
||||
def begin_rk(self, begin_rk):
|
||||
if self._edge is None:
|
||||
self._begin_kp = begin_kp
|
||||
self._begin_rk = begin_rk
|
||||
else:
|
||||
_min = self._edge.reach.get_kp_min()
|
||||
_max = self._edge.reach.get_kp_max()
|
||||
_min = self._edge.reach.get_rk_min()
|
||||
_max = self._edge.reach.get_rk_max()
|
||||
|
||||
if _min <= begin_kp <= _max:
|
||||
self._begin_kp = begin_kp
|
||||
if _min <= begin_rk <= _max:
|
||||
self._begin_rk = begin_rk
|
||||
|
||||
self._status.modified()
|
||||
|
||||
@property
|
||||
def end_kp(self):
|
||||
return self._end_kp
|
||||
def end_rk(self):
|
||||
return self._end_rk
|
||||
|
||||
@end_kp.setter
|
||||
def end_kp(self, end_kp):
|
||||
@end_rk.setter
|
||||
def end_rk(self, end_rk):
|
||||
if self._edge is None:
|
||||
self._end_kp = end_kp
|
||||
self._end_rk = end_rk
|
||||
else:
|
||||
_min = self._edge.reach.get_kp_min()
|
||||
_max = self._edge.reach.get_kp_max()
|
||||
_min = self._edge.reach.get_rk_min()
|
||||
_max = self._edge.reach.get_rk_max()
|
||||
|
||||
if _min <= end_kp <= _max:
|
||||
self._end_kp = end_kp
|
||||
if _min <= end_rk <= _max:
|
||||
self._end_rk = end_rk
|
||||
|
||||
self._status.modified()
|
||||
|
||||
def __contains__(self, kp):
|
||||
return self.contains_kp(kp)
|
||||
def __contains__(self, rk):
|
||||
return self.contains_rk(rk)
|
||||
|
||||
def contains_kp(self, kp):
|
||||
def contains_rk(self, rk):
|
||||
return (
|
||||
self._begin_kp <= kp <= self._end_kp
|
||||
self._begin_rk <= rk <= self._end_rk
|
||||
)
|
||||
|
||||
@property
|
||||
|
||||
@@ -44,7 +44,7 @@ class FrictionList(PamhyrModelList):
|
||||
logger.info(f"Update friction TABLE from {version}")
|
||||
cls._db_update_0_0_1(execute, version)
|
||||
|
||||
return True
|
||||
return cls._update_submodel(execute, version)
|
||||
|
||||
@classmethod
|
||||
def _db_load(cls, execute, data=None):
|
||||
|
||||
@@ -31,7 +31,7 @@ class Profile(object):
|
||||
_id_cnt = 0
|
||||
|
||||
def __init__(self, id: int = -1, num: int = 0,
|
||||
kp: float = 0.0, name: str = "",
|
||||
rk: float = 0.0, name: str = "",
|
||||
code1: int = 0, code2: int = 0,
|
||||
_type: str = "", reach=None,
|
||||
status=None):
|
||||
@@ -49,7 +49,7 @@ class Profile(object):
|
||||
self._num = int(num)
|
||||
self._code1 = int(code1)
|
||||
self._code2 = int(code2)
|
||||
self._kp = float(kp)
|
||||
self._rk = float(rk)
|
||||
self._name = str(name)
|
||||
self._reach = reach
|
||||
self._sl = None
|
||||
@@ -136,16 +136,16 @@ class Profile(object):
|
||||
return len(self.points)
|
||||
|
||||
@property
|
||||
def kp(self):
|
||||
def rk(self):
|
||||
"""
|
||||
Returns:
|
||||
Kilometer point.
|
||||
"""
|
||||
return self._kp
|
||||
return self._rk
|
||||
|
||||
@kp.setter
|
||||
def kp(self, value: float):
|
||||
self._kp = float(value)
|
||||
@rk.setter
|
||||
def rk(self, value: float):
|
||||
self._rk = float(value)
|
||||
self._status.modified()
|
||||
|
||||
@property
|
||||
|
||||
@@ -41,7 +41,7 @@ class ProfileXYZ(Profile, SQLSubModel):
|
||||
def __init__(self,
|
||||
id: int = -1,
|
||||
name: str = "",
|
||||
kp: float = 0.,
|
||||
rk: float = 0.,
|
||||
reach=None,
|
||||
num=0,
|
||||
nb_point: int = 0,
|
||||
@@ -53,7 +53,7 @@ class ProfileXYZ(Profile, SQLSubModel):
|
||||
num: The number of this profile
|
||||
code1: The interpolation code 1
|
||||
code2: The interpolation code 2
|
||||
kp: Kilometer point
|
||||
rk: Kilometer point
|
||||
name: The name of profile
|
||||
|
||||
Returns:
|
||||
@@ -63,7 +63,7 @@ class ProfileXYZ(Profile, SQLSubModel):
|
||||
id=id,
|
||||
num=num,
|
||||
name=name,
|
||||
kp=kp,
|
||||
rk=rk,
|
||||
code1=code1, code2=code2,
|
||||
_type="XYZ",
|
||||
reach=reach,
|
||||
@@ -78,7 +78,7 @@ class ProfileXYZ(Profile, SQLSubModel):
|
||||
ind INTEGER NOT NULL,
|
||||
name TEXT,
|
||||
reach INTEGER NOT NULL,
|
||||
kp REAL NOT NULL,
|
||||
rk REAL NOT NULL,
|
||||
num INTEGER NOT NULL,
|
||||
code1 INTEGER NOT NULL,
|
||||
code2 INTEGER NOT NULL,
|
||||
@@ -94,7 +94,8 @@ class ProfileXYZ(Profile, SQLSubModel):
|
||||
def _db_update(cls, execute, version):
|
||||
major, minor, release = version.strip().split(".")
|
||||
if major == minor == "0":
|
||||
if int(release) < 2:
|
||||
rl = int(release)
|
||||
if rl < 2:
|
||||
execute(
|
||||
"""
|
||||
ALTER TABLE geometry_profileXYZ
|
||||
@@ -103,6 +104,14 @@ class ProfileXYZ(Profile, SQLSubModel):
|
||||
"""
|
||||
)
|
||||
|
||||
if rl < 11:
|
||||
execute(
|
||||
"""
|
||||
ALTER TABLE geometry_profileXYZ
|
||||
RENAME COLUMN kp TO rk
|
||||
"""
|
||||
)
|
||||
|
||||
return cls._update_submodel(execute, version)
|
||||
|
||||
@classmethod
|
||||
@@ -112,7 +121,7 @@ class ProfileXYZ(Profile, SQLSubModel):
|
||||
reach = data["reach"]
|
||||
|
||||
table = execute(
|
||||
"SELECT id, ind, name, kp, num, code1, code2, sl " +
|
||||
"SELECT id, ind, name, rk, num, code1, code2, sl " +
|
||||
"FROM geometry_profileXYZ " +
|
||||
f"WHERE reach = {reach.id}"
|
||||
)
|
||||
@@ -121,7 +130,7 @@ class ProfileXYZ(Profile, SQLSubModel):
|
||||
id = row[0]
|
||||
ind = row[1]
|
||||
name = row[2]
|
||||
kp = row[3]
|
||||
rk = row[3]
|
||||
num = row[5]
|
||||
code1 = row[5]
|
||||
code2 = row[6]
|
||||
@@ -129,7 +138,7 @@ class ProfileXYZ(Profile, SQLSubModel):
|
||||
|
||||
new = cls(
|
||||
id=id, num=num,
|
||||
name=name, kp=kp,
|
||||
name=name, rk=rk,
|
||||
code1=code1, code2=code2,
|
||||
reach=reach,
|
||||
status=status
|
||||
@@ -159,10 +168,10 @@ class ProfileXYZ(Profile, SQLSubModel):
|
||||
sql = (
|
||||
"INSERT OR REPLACE INTO " +
|
||||
"geometry_profileXYZ(id, ind, name, reach, " +
|
||||
"kp, num, code1, code2, sl) " +
|
||||
"rk, num, code1, code2, sl) " +
|
||||
"VALUES (" +
|
||||
f"{self.id}, {ind}, '{self._db_format(self._name)}', " +
|
||||
f"{self.reach.id}, {self.kp}, {self.num}, " +
|
||||
f"{self.reach.id}, {self.rk}, {self.num}, " +
|
||||
f"{self.code1}, {self.code1}, {sl}" +
|
||||
")"
|
||||
)
|
||||
@@ -187,19 +196,19 @@ class ProfileXYZ(Profile, SQLSubModel):
|
||||
try:
|
||||
if len(header) == 0:
|
||||
name = data[0]
|
||||
kp = data[1]
|
||||
rk = data[1]
|
||||
reach = data[2]
|
||||
status = data[3]
|
||||
|
||||
profile = cls(
|
||||
id=-1,
|
||||
name=name,
|
||||
kp=kp,
|
||||
rk=rk,
|
||||
reach=reach,
|
||||
status=status
|
||||
)
|
||||
else:
|
||||
valid_header = {'name', 'reach', 'kp', 'status'}
|
||||
valid_header = {'name', 'reach', 'rk', 'status'}
|
||||
d = {}
|
||||
for i, v in enumerate(data):
|
||||
h = header[i].strip().lower().split(' ')[0]
|
||||
@@ -323,7 +332,7 @@ class ProfileXYZ(Profile, SQLSubModel):
|
||||
logger.debug(f"{e}")
|
||||
raise IndexError(
|
||||
f"Invalid point name: {name} " +
|
||||
f"for profile ({self.id}) kp = {self.kp}"
|
||||
f"for profile ({self.id}) rk = {self.rk}"
|
||||
)
|
||||
|
||||
def has_standard_named_points(self):
|
||||
|
||||
+46
-46
@@ -141,10 +141,10 @@ class Reach(SQLSubModel):
|
||||
def profiles(self, profiles):
|
||||
self._profiles = profiles
|
||||
|
||||
def get_profiles_from_kp(self, kp):
|
||||
def get_profiles_from_rk(self, rk):
|
||||
return list(
|
||||
filter(
|
||||
lambda p: p.kp == kp, self.profiles
|
||||
lambda p: p.rk == rk, self.profiles
|
||||
)
|
||||
)
|
||||
|
||||
@@ -335,18 +335,18 @@ class Reach(SQLSubModel):
|
||||
)
|
||||
)
|
||||
|
||||
def get_kp(self):
|
||||
"""List of profiles kp
|
||||
def get_rk(self):
|
||||
"""List of profiles rk
|
||||
|
||||
Returns:
|
||||
List of profiles kp
|
||||
List of profiles rk
|
||||
"""
|
||||
return [profile.kp for profile in self.profiles]
|
||||
return [profile.rk for profile in self.profiles]
|
||||
|
||||
def get_kp_complete_profiles(self):
|
||||
def get_rk_complete_profiles(self):
|
||||
return list(
|
||||
map(
|
||||
lambda profile: profile.kp,
|
||||
lambda profile: profile.rk,
|
||||
filter(
|
||||
lambda profile: len(profile) > 0,
|
||||
self.profiles
|
||||
@@ -354,41 +354,41 @@ class Reach(SQLSubModel):
|
||||
)
|
||||
)
|
||||
|
||||
def get_kp_min(self):
|
||||
if len(self.get_kp()) > 0:
|
||||
return min(self.get_kp())
|
||||
def get_rk_min(self):
|
||||
if len(self.get_rk()) > 0:
|
||||
return min(self.get_rk())
|
||||
else:
|
||||
return 0.0
|
||||
|
||||
def get_kp_max(self):
|
||||
if len(self.get_kp()) > 0:
|
||||
return max(self.get_kp())
|
||||
def get_rk_max(self):
|
||||
if len(self.get_rk()) > 0:
|
||||
return max(self.get_rk())
|
||||
else:
|
||||
return 0.0
|
||||
|
||||
def inter_profiles_kp(self):
|
||||
profiles = sorted(self.profiles, key=lambda p: p.kp)
|
||||
def inter_profiles_rk(self):
|
||||
profiles = sorted(self.profiles, key=lambda p: p.rk)
|
||||
first = profiles[0]
|
||||
last = profiles[-1]
|
||||
|
||||
res_kp = [first.kp]
|
||||
res_rk = [first.rk]
|
||||
|
||||
profiles = iter(profiles)
|
||||
previous = next(profiles)
|
||||
|
||||
for profile in profiles:
|
||||
prev = previous.kp
|
||||
curr = profile.kp
|
||||
prev = previous.rk
|
||||
curr = profile.rk
|
||||
|
||||
diff = abs(previous.kp - profile.kp)
|
||||
diff = abs(previous.rk - profile.rk)
|
||||
|
||||
new = previous.kp + (diff / 2.0)
|
||||
res_kp.append(new)
|
||||
new = previous.rk + (diff / 2.0)
|
||||
res_rk.append(new)
|
||||
|
||||
previous = profile
|
||||
|
||||
res_kp.append(last.kp)
|
||||
return res_kp
|
||||
res_rk.append(last.rk)
|
||||
return res_rk
|
||||
|
||||
# Sediment Layers
|
||||
|
||||
@@ -536,7 +536,7 @@ class Reach(SQLSubModel):
|
||||
def sort(self, is_reversed: bool = False):
|
||||
self.profiles = sorted(
|
||||
self.profiles,
|
||||
key=lambda profile: profile.kp,
|
||||
key=lambda profile: profile.rk,
|
||||
reverse=is_reversed
|
||||
)
|
||||
self._status.modified()
|
||||
@@ -613,7 +613,7 @@ class Reach(SQLSubModel):
|
||||
|
||||
self.profiles = profiles + self.profiles
|
||||
self._update_profile_numbers()
|
||||
self._recompute_kp()
|
||||
self._recompute_rk()
|
||||
|
||||
return profiles
|
||||
|
||||
@@ -633,7 +633,7 @@ class Reach(SQLSubModel):
|
||||
try:
|
||||
list_profile, list_header = self.read_file_st(str(file_path_name))
|
||||
profile_header = ["num", "code1",
|
||||
"code2", "nb_point", "kp", "name"]
|
||||
"code2", "nb_point", "rk", "name"]
|
||||
|
||||
if list_profile and list_header:
|
||||
for ind, profile in enumerate(list_profile):
|
||||
@@ -721,12 +721,12 @@ class Reach(SQLSubModel):
|
||||
c1 = f"{profile.code1:>6}"
|
||||
c2 = f"{profile.code2:>6}"
|
||||
t = f"{len(profile.points):>6}"
|
||||
kp = f"{profile.kp:>12f}"[0:12]
|
||||
rk = f"{profile.rk:>12f}"[0:12]
|
||||
pname = profile.name
|
||||
if profile.name == "":
|
||||
pname = f"p{profile.id:>3}".replace(" ", "0")
|
||||
|
||||
st.write(f"{num}{c1}{c2}{t} {kp} {pname}\n")
|
||||
st.write(f"{num}{c1}{c2}{t} {rk} {pname}\n")
|
||||
|
||||
for point in profile.points:
|
||||
x = f"{point.x:<12.4f}"[0:12]
|
||||
@@ -745,15 +745,15 @@ class Reach(SQLSubModel):
|
||||
last = self.profile(len(self) - 1)
|
||||
|
||||
z_first = first.z_min()
|
||||
kp_first = first.kp
|
||||
rk_first = first.rk
|
||||
|
||||
z_last = last.z_min()
|
||||
kp_last = last.kp
|
||||
rk_last = last.rk
|
||||
|
||||
return (
|
||||
(z_last - z_first)
|
||||
/
|
||||
(kp_last - kp_first)
|
||||
(rk_last - rk_first)
|
||||
)
|
||||
|
||||
def get_incline_mean(self):
|
||||
@@ -764,15 +764,15 @@ class Reach(SQLSubModel):
|
||||
|
||||
for profile in profiles[1:]:
|
||||
z_first = previous.z_min()
|
||||
kp_first = previous.kp
|
||||
rk_first = previous.rk
|
||||
|
||||
z_last = profile.z_min()
|
||||
kp_last = profile.kp
|
||||
rk_last = profile.rk
|
||||
|
||||
incline_acc += (
|
||||
(z_last - z_first)
|
||||
/
|
||||
(kp_last - kp_first)
|
||||
(rk_last - rk_first)
|
||||
)
|
||||
|
||||
previous = profile
|
||||
@@ -787,15 +787,15 @@ class Reach(SQLSubModel):
|
||||
|
||||
for profile in profiles[1:]:
|
||||
z_first = previous.z_min()
|
||||
kp_first = previous.kp
|
||||
rk_first = previous.rk
|
||||
|
||||
z_last = profile.z_min()
|
||||
kp_last = profile.kp
|
||||
rk_last = profile.rk
|
||||
|
||||
incline_acc += [
|
||||
(z_last - z_first)
|
||||
/
|
||||
(kp_last - kp_first)
|
||||
(rk_last - rk_first)
|
||||
]
|
||||
|
||||
previous = profile
|
||||
@@ -811,15 +811,15 @@ class Reach(SQLSubModel):
|
||||
|
||||
for profile in profiles[1:]:
|
||||
z_first = previous.z_min()
|
||||
kp_first = previous.kp
|
||||
rk_first = previous.rk
|
||||
|
||||
z_last = profile.z_min()
|
||||
kp_last = profile.kp
|
||||
rk_last = profile.rk
|
||||
|
||||
incline_acc += [
|
||||
(z_last - z_first)
|
||||
/
|
||||
(kp_last - kp_first)
|
||||
(rk_last - rk_first)
|
||||
]
|
||||
|
||||
previous = profile
|
||||
@@ -847,14 +847,14 @@ class Reach(SQLSubModel):
|
||||
logger_exception(e)
|
||||
return 0
|
||||
|
||||
def _recompute_kp(self, offset=0.0):
|
||||
self._recompute_kp_no_gl(offset=offset)
|
||||
def _recompute_rk(self, offset=0.0):
|
||||
self._recompute_rk_no_gl(offset=offset)
|
||||
|
||||
def _recompute_kp_no_gl(self, offset=0.0):
|
||||
def _recompute_rk_no_gl(self, offset=0.0):
|
||||
profiles = iter(self.profiles)
|
||||
|
||||
previous = next(profiles)
|
||||
previous.kp = offset
|
||||
previous.rk = offset
|
||||
|
||||
for profile in profiles:
|
||||
prev_points = previous.points
|
||||
@@ -865,5 +865,5 @@ class Reach(SQLSubModel):
|
||||
prev_points[-1].dist_2d(curr_points[-1])
|
||||
) / 2.0
|
||||
|
||||
profile.kp = previous.kp + dist
|
||||
profile.rk = previous.rk + dist
|
||||
previous = profile
|
||||
@@ -50,8 +50,8 @@ class HydraulicStructure(SQLSubModel):
|
||||
self.id = id
|
||||
|
||||
self._name = name
|
||||
self._input_kp = None
|
||||
self._output_kp = None
|
||||
self._input_rk = None
|
||||
self._output_rk = None
|
||||
self._input_reach = None
|
||||
self._output_reach = None
|
||||
self._enabled = True
|
||||
@@ -69,8 +69,8 @@ class HydraulicStructure(SQLSubModel):
|
||||
id INTEGER NOT NULL PRIMARY KEY,
|
||||
name TEXT NOT NULL,
|
||||
enabled BOOLEAN NOT NULL,
|
||||
input_kp REAL NOT NULL,
|
||||
output_kp REAL NOT NULL,
|
||||
input_rk REAL NOT NULL,
|
||||
output_rk REAL NOT NULL,
|
||||
input_reach INTEGER,
|
||||
output_reach INTEGER,
|
||||
FOREIGN KEY(input_reach) REFERENCES river_reach(id),
|
||||
@@ -84,9 +84,25 @@ class HydraulicStructure(SQLSubModel):
|
||||
def _db_update(cls, execute, version):
|
||||
major, minor, release = version.strip().split(".")
|
||||
if major == minor == "0":
|
||||
if int(release) < 6:
|
||||
rl = int(release)
|
||||
|
||||
if rl < 6:
|
||||
cls._db_create(execute)
|
||||
|
||||
if rl < 11:
|
||||
execute(
|
||||
"""
|
||||
ALTER TABLE hydraulic_structures
|
||||
RENAME COLUMN input_kp TO input_rk
|
||||
"""
|
||||
)
|
||||
execute(
|
||||
"""
|
||||
ALTER TABLE hydraulic_structures
|
||||
RENAME COLUMN output_kp TO output_rk
|
||||
"""
|
||||
)
|
||||
|
||||
return True
|
||||
|
||||
@classmethod
|
||||
@@ -95,7 +111,7 @@ class HydraulicStructure(SQLSubModel):
|
||||
|
||||
table = execute(
|
||||
"SELECT id, name, enabled, " +
|
||||
"input_kp, output_kp, " +
|
||||
"input_rk, output_rk, " +
|
||||
"input_reach, output_reach " +
|
||||
"FROM hydraulic_structures "
|
||||
)
|
||||
@@ -106,8 +122,8 @@ class HydraulicStructure(SQLSubModel):
|
||||
hs_id = next(it)
|
||||
name = next(it)
|
||||
enabled = (next(it) == 1)
|
||||
input_kp = next(it)
|
||||
output_kp = next(it)
|
||||
input_rk = next(it)
|
||||
output_rk = next(it)
|
||||
input_reach_id = next(it)
|
||||
output_reach_id = next(it)
|
||||
|
||||
@@ -118,8 +134,8 @@ class HydraulicStructure(SQLSubModel):
|
||||
)
|
||||
|
||||
hs.enabled = enabled
|
||||
hs.input_kp = input_kp if input_kp != -1 else None
|
||||
hs.output_kp = output_kp if output_kp != -1 else None
|
||||
hs.input_rk = input_rk if input_rk != -1 else None
|
||||
hs.output_rk = output_rk if output_rk != -1 else None
|
||||
|
||||
hs.input_reach, hs.output_reach = reduce(
|
||||
lambda acc, n: (
|
||||
@@ -148,24 +164,24 @@ class HydraulicStructure(SQLSubModel):
|
||||
if self._output_reach is not None:
|
||||
output_reach_id = self._output_reach.id
|
||||
|
||||
input_kp = -1
|
||||
if self.input_kp is not None:
|
||||
input_kp = self.input_kp
|
||||
input_rk = -1
|
||||
if self.input_rk is not None:
|
||||
input_rk = self.input_rk
|
||||
|
||||
output_kp = -1
|
||||
if self.output_kp is not None:
|
||||
output_kp = self.output_kp
|
||||
output_rk = -1
|
||||
if self.output_rk is not None:
|
||||
output_rk = self.output_rk
|
||||
|
||||
sql = (
|
||||
"INSERT INTO " +
|
||||
"hydraulic_structures(" +
|
||||
" id, name, enabled, input_kp, output_kp, " +
|
||||
" id, name, enabled, input_rk, output_rk, " +
|
||||
" input_reach, output_reach" +
|
||||
") " +
|
||||
"VALUES (" +
|
||||
f"{self.id}, '{self._db_format(self._name)}', " +
|
||||
f"{self._db_format(self.enabled)}, " +
|
||||
f"{input_kp}, {output_kp}, " +
|
||||
f"{input_rk}, {output_rk}, " +
|
||||
f"{input_reach_id}, {output_reach_id}" +
|
||||
")"
|
||||
)
|
||||
@@ -198,24 +214,24 @@ class HydraulicStructure(SQLSubModel):
|
||||
self._status.modified()
|
||||
|
||||
@property
|
||||
def input_kp(self):
|
||||
return self._input_kp
|
||||
def input_rk(self):
|
||||
return self._input_rk
|
||||
|
||||
@input_kp.setter
|
||||
def input_kp(self, input_kp):
|
||||
if input_kp is not None:
|
||||
input_kp = float(input_kp)
|
||||
@input_rk.setter
|
||||
def input_rk(self, input_rk):
|
||||
if input_rk is not None:
|
||||
input_rk = float(input_rk)
|
||||
|
||||
self._input_kp = input_kp
|
||||
self._input_rk = input_rk
|
||||
self._status.modified()
|
||||
|
||||
@property
|
||||
def output_kp(self):
|
||||
return self._output_kp
|
||||
def output_rk(self):
|
||||
return self._output_rk
|
||||
|
||||
@output_kp.setter
|
||||
def output_kp(self, output_kp):
|
||||
self._output_kp = output_kp
|
||||
@output_rk.setter
|
||||
def output_rk(self, output_rk):
|
||||
self._output_rk = output_rk
|
||||
self._status.modified()
|
||||
|
||||
@property
|
||||
|
||||
@@ -30,7 +30,7 @@ logger = logging.getLogger()
|
||||
class Data(SQLSubModel):
|
||||
def __init__(self, name: str = "",
|
||||
comment: str = "", reach=None,
|
||||
kp: float = 0.0, discharge: float = 0.0,
|
||||
rk: float = 0.0, discharge: float = 0.0,
|
||||
height: float = 0.0,
|
||||
status=None):
|
||||
super(Data, self).__init__()
|
||||
@@ -42,14 +42,14 @@ class Data(SQLSubModel):
|
||||
self._name = name
|
||||
self._comment = comment
|
||||
|
||||
self._kp = kp
|
||||
self._rk = rk
|
||||
self._discharge = discharge
|
||||
self._speed = 0.0
|
||||
self._elevation = 0.0
|
||||
self._height = height
|
||||
|
||||
if self._kp != 0.0:
|
||||
self._update_from_kp()
|
||||
if self._rk != 0.0:
|
||||
self._update_from_rk()
|
||||
if self._height != 0.0:
|
||||
self._update_from_height()
|
||||
if self._discharge != 0.0:
|
||||
@@ -64,7 +64,7 @@ class Data(SQLSubModel):
|
||||
name TEXT NOT NULL,
|
||||
comment TEXT NOT NULL,
|
||||
reach INTEGER,
|
||||
kp REAL NOT NULL,
|
||||
rk REAL NOT NULL,
|
||||
discharge REAL NOT NULL,
|
||||
height REAL NOT NULL,
|
||||
FOREIGN KEY(reach) REFERENCES river_reach(id)
|
||||
@@ -75,13 +75,20 @@ class Data(SQLSubModel):
|
||||
|
||||
@classmethod
|
||||
def _db_update(cls, execute, version):
|
||||
major, minor, release = version.strip().split(".")
|
||||
if major == minor == "0":
|
||||
if int(release) < 11:
|
||||
execute(
|
||||
"ALTER TABLE initial_conditions RENAME COLUMN kp TO rk"
|
||||
)
|
||||
|
||||
return cls._update_submodel(execute, version)
|
||||
|
||||
@classmethod
|
||||
def _db_load(cls, execute, data=None):
|
||||
id = data["reach"].id
|
||||
table = execute(
|
||||
"SELECT ind, name, comment, kp, discharge, height " +
|
||||
"SELECT ind, name, comment, rk, discharge, height " +
|
||||
"FROM initial_conditions " +
|
||||
f"WHERE reach = {id}"
|
||||
)
|
||||
@@ -95,7 +102,7 @@ class Data(SQLSubModel):
|
||||
ind = row[0]
|
||||
name = row[1]
|
||||
comment = row[2]
|
||||
kp = row[3]
|
||||
rk = row[3]
|
||||
discharge = row[4]
|
||||
height = row[5]
|
||||
|
||||
@@ -104,7 +111,7 @@ class Data(SQLSubModel):
|
||||
status=data["status"],
|
||||
name=name,
|
||||
comment=comment,
|
||||
kp=kp,
|
||||
rk=rk,
|
||||
discharge=discharge,
|
||||
height=height,
|
||||
)
|
||||
@@ -118,12 +125,12 @@ class Data(SQLSubModel):
|
||||
|
||||
execute(
|
||||
"INSERT INTO " +
|
||||
"initial_conditions(ind, name, comment, kp, " +
|
||||
"initial_conditions(ind, name, comment, rk, " +
|
||||
"discharge, height, reach) " +
|
||||
"VALUES (" +
|
||||
f"{ind}, '{self._db_format(self.name)}', " +
|
||||
f"'{self._db_format(self._comment)}', " +
|
||||
f"{self._kp}, {self._discharge}, {self._height}, " +
|
||||
f"{self._rk}, {self._discharge}, {self._height}, " +
|
||||
f"{self._reach.id}" +
|
||||
")"
|
||||
)
|
||||
@@ -134,7 +141,7 @@ class Data(SQLSubModel):
|
||||
new = Data(
|
||||
name=self.name,
|
||||
comment=self._comment,
|
||||
kp=self._kp,
|
||||
rk=self._rk,
|
||||
discharge=self._discharge,
|
||||
height=self._height,
|
||||
reach=self._reach,
|
||||
@@ -154,8 +161,8 @@ class Data(SQLSubModel):
|
||||
val = self._name
|
||||
elif key == "comment":
|
||||
val = self._comment
|
||||
elif key == "kp":
|
||||
val = self._kp
|
||||
elif key == "rk":
|
||||
val = self._rk
|
||||
elif key == "speed":
|
||||
val = self._speed
|
||||
elif key == "discharge":
|
||||
@@ -168,7 +175,7 @@ class Data(SQLSubModel):
|
||||
return val
|
||||
|
||||
def _update_get_min(self):
|
||||
profile = self._reach.reach.get_profiles_from_kp(self._kp)
|
||||
profile = self._reach.reach.get_profiles_from_rk(self._rk)
|
||||
if len(profile) > 0:
|
||||
min = profile[0].z_min()
|
||||
else:
|
||||
@@ -176,7 +183,7 @@ class Data(SQLSubModel):
|
||||
|
||||
return min
|
||||
|
||||
def _update_from_kp(self):
|
||||
def _update_from_rk(self):
|
||||
min = self._update_get_min()
|
||||
self._elevation = min + self._height
|
||||
|
||||
@@ -197,9 +204,9 @@ class Data(SQLSubModel):
|
||||
self._name = str(value)
|
||||
elif key == "comment":
|
||||
self._comment = str(value)
|
||||
elif key == "kp":
|
||||
self._kp = float(value)
|
||||
self._update_from_kp()
|
||||
elif key == "rk":
|
||||
self._rk = float(value)
|
||||
self._update_from_rk()
|
||||
elif key == "speed":
|
||||
# Not supposed to be modified
|
||||
self._speed = float(value)
|
||||
@@ -298,10 +305,10 @@ class InitialConditions(SQLSubModel):
|
||||
self._data.insert(index, n)
|
||||
self._status.modified()
|
||||
|
||||
def new_from_data(self, kp, discharge, elevation):
|
||||
def new_from_data(self, rk, discharge, elevation):
|
||||
n = Data(reach=self._reach, status=self._status)
|
||||
|
||||
n['kp'] = kp
|
||||
n['rk'] = rk
|
||||
n['discharge'] = discharge
|
||||
n['elevation'] = elevation
|
||||
|
||||
@@ -344,8 +351,8 @@ class InitialConditions(SQLSubModel):
|
||||
)
|
||||
)
|
||||
|
||||
def get_kp(self):
|
||||
return self._data_get("kp")
|
||||
def get_rk(self):
|
||||
return self._data_get("rk")
|
||||
|
||||
def get_elevation(self):
|
||||
return self._data_get("elevation")
|
||||
@@ -353,10 +360,10 @@ class InitialConditions(SQLSubModel):
|
||||
def get_discharge(self):
|
||||
return self._data_get("discharge")
|
||||
|
||||
def _sort_by_z_and_kp(self, profiles):
|
||||
def _sort_by_z_and_rk(self, profiles):
|
||||
profiles.sort(
|
||||
reverse=False,
|
||||
key=lambda p: p.kp
|
||||
key=lambda p: p.rk
|
||||
)
|
||||
|
||||
first_z = profiles[0].z()
|
||||
@@ -365,14 +372,14 @@ class InitialConditions(SQLSubModel):
|
||||
if first_z > last_z:
|
||||
profiles.sort(
|
||||
reverse=True,
|
||||
key=lambda p: p.kp
|
||||
key=lambda p: p.rk
|
||||
)
|
||||
|
||||
def generate_growing_constante_height(self, height: float):
|
||||
self._data = []
|
||||
|
||||
profiles = self._reach.reach.profiles.copy()
|
||||
self._sort_by_z_and_kp(profiles)
|
||||
self._sort_by_z_and_rk(profiles)
|
||||
|
||||
incline = self._reach.reach.get_incline_median_mean()
|
||||
logger.debug(f"incline = {incline}")
|
||||
@@ -393,13 +400,13 @@ class InitialConditions(SQLSubModel):
|
||||
previous_elevation
|
||||
)
|
||||
|
||||
logger.debug(f"({profile.kp}):")
|
||||
logger.debug(f"({profile.rk}):")
|
||||
logger.debug(f" width = {width}")
|
||||
logger.debug(f" strickler = {strickler}")
|
||||
logger.debug(f" discharge = {discharge}")
|
||||
|
||||
new = Data(reach=self._reach, status=self._status)
|
||||
new["kp"] = profile.kp
|
||||
new["rk"] = profile.rk
|
||||
new["discharge"] = discharge
|
||||
|
||||
new["elevation"] = elevation
|
||||
@@ -418,7 +425,7 @@ class InitialConditions(SQLSubModel):
|
||||
|
||||
def _generate_height_estimation_from_discharge(self, discharge: float):
|
||||
profiles = self._reach.reach.profiles.copy()
|
||||
self._sort_by_z_and_kp(profiles)
|
||||
self._sort_by_z_and_rk(profiles)
|
||||
|
||||
previous_elevation = -99999.99
|
||||
|
||||
@@ -439,13 +446,13 @@ class InitialConditions(SQLSubModel):
|
||||
previous_elevation
|
||||
)
|
||||
|
||||
logger.debug(f"({profile.kp}):")
|
||||
logger.debug(f"({profile.rk}):")
|
||||
logger.debug(f" width = {width}")
|
||||
logger.debug(f" strickler = {strickler}")
|
||||
logger.debug(f" height = {height}")
|
||||
|
||||
new = Data(reach=self._reach, status=self._status)
|
||||
new["kp"] = profile.kp
|
||||
new["rk"] = profile.rk
|
||||
new["discharge"] = discharge
|
||||
new["elevation"] = elevation
|
||||
|
||||
@@ -456,10 +463,10 @@ class InitialConditions(SQLSubModel):
|
||||
|
||||
def _generate_resort_data(self, profiles):
|
||||
is_reverse = False
|
||||
if profiles[0].kp > profiles[-1].kp:
|
||||
if profiles[0].rk > profiles[-1].rk:
|
||||
is_reverse = True
|
||||
|
||||
self._data.sort(
|
||||
reverse=not is_reverse,
|
||||
key=lambda d: d['kp']
|
||||
key=lambda d: d['rk']
|
||||
)
|
||||
@@ -48,8 +48,8 @@ class LateralContribution(SQLSubModel):
|
||||
self._name = name
|
||||
self._type = ""
|
||||
self._edge = None
|
||||
self._begin_kp = 0.0
|
||||
self._end_kp = 0.0
|
||||
self._begin_rk = 0.0
|
||||
self._end_rk = 0.0
|
||||
self._data = []
|
||||
self._header = []
|
||||
self._types = [float, float]
|
||||
@@ -66,8 +66,8 @@ class LateralContribution(SQLSubModel):
|
||||
type TEXT NOT NULL,
|
||||
tab TEXT NOT NULL,
|
||||
edge INTEGER,
|
||||
begin_kp REAL NOT NULL,
|
||||
end_kp REAL NOT NULL,
|
||||
begin_rk REAL NOT NULL,
|
||||
end_rk REAL NOT NULL,
|
||||
FOREIGN KEY(edge) REFERENCES river_reach(id)
|
||||
)
|
||||
""")
|
||||
@@ -87,6 +87,22 @@ class LateralContribution(SQLSubModel):
|
||||
|
||||
@classmethod
|
||||
def _db_update(cls, execute, version):
|
||||
major, minor, release = version.strip().split(".")
|
||||
if major == minor == "0":
|
||||
if int(release) < 11:
|
||||
execute(
|
||||
"""
|
||||
ALTER TABLE lateral_contribution
|
||||
RENAME COLUMN begin_kp TO begin_rk
|
||||
"""
|
||||
)
|
||||
execute(
|
||||
"""
|
||||
ALTER TABLE lateral_contribution
|
||||
RENAME COLUMN end_kp TO end_rk
|
||||
"""
|
||||
)
|
||||
|
||||
return True
|
||||
|
||||
@classmethod
|
||||
@@ -110,7 +126,7 @@ class LateralContribution(SQLSubModel):
|
||||
tab = data["tab"]
|
||||
|
||||
table = execute(
|
||||
"SELECT id, name, type, edge, begin_kp, end_kp " +
|
||||
"SELECT id, name, type, edge, begin_rk, end_rk " +
|
||||
f"FROM lateral_contribution WHERE tab = '{tab}'"
|
||||
)
|
||||
|
||||
@@ -125,8 +141,8 @@ class LateralContribution(SQLSubModel):
|
||||
lc.edge = None
|
||||
if row[3] != -1:
|
||||
lc.edge = next(filter(lambda e: e.id == row[3], data["edges"]))
|
||||
lc._begin_kp = row[4]
|
||||
lc._end_kp = row[5]
|
||||
lc._begin_rk = row[4]
|
||||
lc._end_rk = row[5]
|
||||
|
||||
values = execute(
|
||||
"SELECT ind, data0, data1 FROM lateral_contribution_data " +
|
||||
@@ -160,11 +176,11 @@ class LateralContribution(SQLSubModel):
|
||||
sql = (
|
||||
"INSERT INTO " +
|
||||
"lateral_contribution(id, name, type, tab, " +
|
||||
"edge, begin_kp, end_kp) " +
|
||||
"edge, begin_rk, end_rk) " +
|
||||
"VALUES (" +
|
||||
f"{self.id}, '{self._db_format(self._name)}', " +
|
||||
f"'{self._db_format(self._type)}', '{tab}', {edge}, " +
|
||||
f"{self._begin_kp}, {self._end_kp}" +
|
||||
f"{self._begin_rk}, {self._end_rk}" +
|
||||
")"
|
||||
)
|
||||
execute(sql)
|
||||
@@ -231,44 +247,44 @@ class LateralContribution(SQLSubModel):
|
||||
def edge(self, edge):
|
||||
self._edge = edge
|
||||
if edge is not None:
|
||||
self._begin_kp = self._edge.reach.get_kp_min()
|
||||
self._end_kp = self._edge.reach.get_kp_max()
|
||||
self._begin_rk = self._edge.reach.get_rk_min()
|
||||
self._end_rk = self._edge.reach.get_rk_max()
|
||||
self._status.modified()
|
||||
|
||||
def has_edge(self):
|
||||
return self._edge is not None
|
||||
|
||||
@property
|
||||
def begin_kp(self):
|
||||
return self._begin_kp
|
||||
def begin_rk(self):
|
||||
return self._begin_rk
|
||||
|
||||
@begin_kp.setter
|
||||
def begin_kp(self, begin_kp):
|
||||
@begin_rk.setter
|
||||
def begin_rk(self, begin_rk):
|
||||
if self._edge is None:
|
||||
self._begin_kp = begin_kp
|
||||
self._begin_rk = begin_rk
|
||||
else:
|
||||
_min = self._edge.reach.get_kp_min()
|
||||
_max = self._edge.reach.get_kp_max()
|
||||
_min = self._edge.reach.get_rk_min()
|
||||
_max = self._edge.reach.get_rk_max()
|
||||
|
||||
if _min <= begin_kp <= _max:
|
||||
self._begin_kp = begin_kp
|
||||
if _min <= begin_rk <= _max:
|
||||
self._begin_rk = begin_rk
|
||||
|
||||
self._status.modified()
|
||||
|
||||
@property
|
||||
def end_kp(self):
|
||||
return self._end_kp
|
||||
def end_rk(self):
|
||||
return self._end_rk
|
||||
|
||||
@end_kp.setter
|
||||
def end_kp(self, end_kp):
|
||||
@end_rk.setter
|
||||
def end_rk(self, end_rk):
|
||||
if self._edge is None:
|
||||
self._end_kp = end_kp
|
||||
self._end_rk = end_rk
|
||||
else:
|
||||
_min = self._edge.reach.get_kp_min()
|
||||
_max = self._edge.reach.get_kp_max()
|
||||
_min = self._edge.reach.get_rk_min()
|
||||
_max = self._edge.reach.get_rk_max()
|
||||
|
||||
if _min <= end_kp <= _max:
|
||||
self._end_kp = end_kp
|
||||
if _min <= end_rk <= _max:
|
||||
self._end_rk = end_rk
|
||||
|
||||
self._status.modified()
|
||||
|
||||
@@ -377,8 +393,8 @@ class LateralContribution(SQLSubModel):
|
||||
def convert(self, cls):
|
||||
new = cls(name=self.name, status=self._status)
|
||||
new.edge = self.edge
|
||||
new.begin_kp = self.begin_kp
|
||||
new.end_kp = self.end_kp
|
||||
new.begin_rk = self.begin_rk
|
||||
new.end_rk = self.end_rk
|
||||
|
||||
for i, _ in enumerate(self.data):
|
||||
new.add(i)
|
||||
|
||||
@@ -35,8 +35,8 @@ class Profile(object):
|
||||
return self._profile.name
|
||||
|
||||
@property
|
||||
def kp(self):
|
||||
return self._profile.kp
|
||||
def rk(self):
|
||||
return self._profile.rk
|
||||
|
||||
@property
|
||||
def geometry(self):
|
||||
|
||||
+1
-1
@@ -41,7 +41,7 @@ class Study(SQLModel):
|
||||
|
||||
def __init__(self, filename=None, init_new=True):
|
||||
# Metadata
|
||||
self._version = "0.0.10"
|
||||
self._version = "0.0.11"
|
||||
self.creation_date = datetime.now()
|
||||
self.last_modification_date = datetime.now()
|
||||
self.last_save_date = datetime.now()
|
||||
|
||||
+13
-13
@@ -180,7 +180,7 @@ class Mage(CommandLineSolver):
|
||||
c1 = f"{profile.code1:>6}"
|
||||
c2 = f"{profile.code2:>6}"
|
||||
t = f"{len(profile.points):>6}"
|
||||
kp = f"{profile.kp:>12f}"[0:12]
|
||||
rk = f"{profile.rk:>12f}"[0:12]
|
||||
pname = profile.name
|
||||
if profile.name == "":
|
||||
# Generate name from profile id prefixed with
|
||||
@@ -207,7 +207,7 @@ class Mage(CommandLineSolver):
|
||||
)
|
||||
|
||||
# Profile header line
|
||||
wfile.write(f"{num}{c1}{c2}{t} {kp} {pname} {sediment}\n")
|
||||
wfile.write(f"{num}{c1}{c2}{t} {rk} {pname} {sediment}\n")
|
||||
|
||||
def _export_ST_point_line(self, wfile, files, point):
|
||||
x = f"{point.x:<12.4f}"[0:12]
|
||||
@@ -339,7 +339,7 @@ class Mage(CommandLineSolver):
|
||||
f.write(f"* {lateral.edge.name} ({name}) {lateral.lctype}\n")
|
||||
f.write(
|
||||
f"${name} " +
|
||||
f"{lateral.begin_kp:>10.4f} {lateral.end_kp:>10.4f}\n"
|
||||
f"{lateral.begin_rk:>10.4f} {lateral.end_rk:>10.4f}\n"
|
||||
)
|
||||
header = lateral.header
|
||||
f.write(f"*{header[0]:>9}|{header[1]:>10}\n")
|
||||
@@ -371,17 +371,17 @@ class Mage(CommandLineSolver):
|
||||
continue
|
||||
|
||||
num = f"{id:>3}"
|
||||
bkp = f"{friction.begin_kp:>10.3f}"
|
||||
ekp = f"{friction.end_kp:>10.3f}"
|
||||
brk = f"{friction.begin_rk:>10.3f}"
|
||||
erk = f"{friction.end_rk:>10.3f}"
|
||||
|
||||
# if friction.begin_kp != friction.end_kp:
|
||||
# if friction.begin_rk != friction.end_rk:
|
||||
# print("TODO")
|
||||
|
||||
strickler = friction.begin_strickler
|
||||
coef_1 = f"{strickler.minor:>10.3f}"
|
||||
coef_2 = f"{strickler.medium:>10.3f}"
|
||||
|
||||
f.write(f"K{num} {bkp}{ekp}{coef_1}{coef_2}\n")
|
||||
f.write(f"K{num} {brk}{erk}{coef_1}{coef_2}\n")
|
||||
|
||||
id += 1
|
||||
|
||||
@@ -401,7 +401,7 @@ class Mage(CommandLineSolver):
|
||||
|
||||
# TODO put real date...
|
||||
f.write(f"$ date en minutes : 0.00\n")
|
||||
f.write(f"* IB IS discharge elevation kp\n")
|
||||
f.write(f"* IB IS discharge elevation rk\n")
|
||||
|
||||
id = 1
|
||||
for reach in reachs:
|
||||
@@ -418,9 +418,9 @@ class Mage(CommandLineSolver):
|
||||
IS = f"{id_sec}"
|
||||
discharge = f"{d['discharge']:>10.5f}"
|
||||
elevation = f"{d['elevation']:>11.6f}"
|
||||
kp = f"{d['kp']:>9.2f}"
|
||||
rk = f"{d['rk']:>9.2f}"
|
||||
|
||||
f.write(f"{IR} {IS} {discharge} {elevation} {kp}\n")
|
||||
f.write(f"{IR} {IS} {discharge} {elevation} {rk}\n")
|
||||
id_sec += 1
|
||||
|
||||
id += 1
|
||||
@@ -495,12 +495,12 @@ class Mage(CommandLineSolver):
|
||||
if not hs.enabled:
|
||||
continue
|
||||
|
||||
if hs.input_kp is None:
|
||||
if hs.input_rk is None:
|
||||
continue
|
||||
|
||||
f.write(
|
||||
'* ouvrage au pk ' +
|
||||
f"{float(hs.input_kp):>12.1f}" + ' ' +
|
||||
f"{float(hs.input_rk):>12.1f}" + ' ' +
|
||||
hs.name + '\n'
|
||||
)
|
||||
|
||||
@@ -527,7 +527,7 @@ class Mage(CommandLineSolver):
|
||||
|
||||
f.write(
|
||||
f"{sin_dict[bhs._type]} " +
|
||||
f"{reach_id} {float(hs.input_kp):>12.3f} " +
|
||||
f"{reach_id} {float(hs.input_rk):>12.3f} " +
|
||||
f"{param_str} {name}\n"
|
||||
)
|
||||
|
||||
|
||||
+13
-13
@@ -265,10 +265,10 @@ class RubarBE(CommandLineSolver):
|
||||
|
||||
ind = 1
|
||||
for profile in reach.profiles:
|
||||
kp = profile.kp
|
||||
rk = profile.rk
|
||||
n_points = len(profile)
|
||||
|
||||
f.write(f"{ind:>4} {kp:>11.3f} {n_points:>4}\n")
|
||||
f.write(f"{ind:>4} {rk:>11.3f} {n_points:>4}\n")
|
||||
|
||||
for point in profile.points:
|
||||
label = point.name.lower()
|
||||
@@ -307,8 +307,8 @@ class RubarBE(CommandLineSolver):
|
||||
lm = len(reach) + 1
|
||||
f.write(f"{lm:>13}\n")
|
||||
|
||||
for mails in [reach.inter_profiles_kp(),
|
||||
reach.get_kp()]:
|
||||
for mails in [reach.inter_profiles_rk(),
|
||||
reach.get_rk()]:
|
||||
ind = 0
|
||||
for mail in mails:
|
||||
f.write(f"{mail:15.3f}")
|
||||
@@ -338,7 +338,7 @@ class RubarBE(CommandLineSolver):
|
||||
lm = len(reach) + 1
|
||||
f.write(f"{lm:>6}\n")
|
||||
|
||||
def get_stricklers_from_kp(kp):
|
||||
def get_stricklers_from_rk(rk):
|
||||
return next(
|
||||
map(
|
||||
lambda s: (
|
||||
@@ -346,15 +346,15 @@ class RubarBE(CommandLineSolver):
|
||||
else s.begin_strickler.minor
|
||||
),
|
||||
filter(
|
||||
lambda f: kp in f,
|
||||
lambda f: rk in f,
|
||||
edge.frictions.lst
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
ind = 1
|
||||
for mail in edge.reach.inter_profiles_kp():
|
||||
coef = get_stricklers_from_kp(mail)
|
||||
for mail in edge.reach.inter_profiles_rk():
|
||||
coef = get_stricklers_from_rk(mail)
|
||||
|
||||
f.write(f"{ind:>6} {coef:>12.5f}")
|
||||
|
||||
@@ -382,7 +382,7 @@ class RubarBE(CommandLineSolver):
|
||||
first = profiles[0]
|
||||
last = profiles[-1]
|
||||
|
||||
if first.kp not in data or last.kp not in data:
|
||||
if first.rk not in data or last.rk not in data:
|
||||
logger.error(
|
||||
"Study initial condition is not fully defined"
|
||||
)
|
||||
@@ -400,7 +400,7 @@ class RubarBE(CommandLineSolver):
|
||||
|
||||
prev_h, prev_s = f_h_s
|
||||
for profile in it:
|
||||
if profile.kp not in data:
|
||||
if profile.rk not in data:
|
||||
ind += 1
|
||||
continue
|
||||
|
||||
@@ -424,7 +424,7 @@ class RubarBE(CommandLineSolver):
|
||||
data = {}
|
||||
|
||||
for d in ics.data:
|
||||
data[d['kp']] = (
|
||||
data[d['rk']] = (
|
||||
d['elevation'],
|
||||
d['discharge'],
|
||||
)
|
||||
@@ -432,8 +432,8 @@ class RubarBE(CommandLineSolver):
|
||||
return data
|
||||
|
||||
def _export_tps_profile_height_speed(self, profile, data):
|
||||
z = data[profile.kp][0]
|
||||
q = data[profile.kp][1]
|
||||
z = data[profile.rk][0]
|
||||
q = data[profile.rk][1]
|
||||
|
||||
height = z - profile.z_min()
|
||||
speed = profile.speed(q, z)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# PlotKPC.py -- Pamhyr
|
||||
# PlotRKC.py -- Pamhyr
|
||||
# Copyright (C) 2023-2024 INRAE
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
@@ -17,16 +17,16 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
from PyQt5.QtCore import QCoreApplication
|
||||
from View.HydraulicStructures.PlotKPC import PlotKPC
|
||||
from View.HydraulicStructures.PlotRKC import PlotRKC
|
||||
|
||||
_translate = QCoreApplication.translate
|
||||
|
||||
|
||||
class PlotKPZ(PlotKPC):
|
||||
class PlotRKZ(PlotRKC):
|
||||
def __init__(self, canvas=None, trad=None, toolbar=None,
|
||||
river=None, reach=None, profile=None,
|
||||
parent=None):
|
||||
super(PlotKPC, self).__init__(
|
||||
super(PlotRKC, self).__init__(
|
||||
canvas=canvas,
|
||||
trad=trad,
|
||||
data=river,
|
||||
@@ -37,7 +37,7 @@ class PlotKPZ(PlotKPC):
|
||||
self._current_reach = reach
|
||||
self._current_profile = profile
|
||||
|
||||
self.label_x = self._trad["unit_kp"]
|
||||
self.label_x = self._trad["unit_rk"]
|
||||
self.label_y = self._trad["unit_elevation"]
|
||||
|
||||
self._isometric_axis = False
|
||||
@@ -41,10 +41,10 @@ class PlotStricklers(PamhyrPlot):
|
||||
parent=parent
|
||||
)
|
||||
|
||||
self.label_x = self._trad["kp"]
|
||||
self.label_x = self._trad["rk"]
|
||||
self.label_y = self._trad["strickler_plot"]
|
||||
|
||||
self.line_kp_elevation = [None, None]
|
||||
self.line_rk_elevation = [None, None]
|
||||
|
||||
self._isometric_axis = False
|
||||
|
||||
@@ -65,9 +65,9 @@ class PlotStricklers(PamhyrPlot):
|
||||
self._init = True
|
||||
|
||||
def draw_data(self):
|
||||
kp = self.data.reach.get_kp()
|
||||
rk = self.data.reach.get_rk()
|
||||
self.canvas.axes.set_xlim(
|
||||
left=min(kp), right=max(kp)
|
||||
left=min(rk), right=max(rk)
|
||||
)
|
||||
|
||||
frictions = self.data.frictions
|
||||
@@ -76,14 +76,14 @@ class PlotStricklers(PamhyrPlot):
|
||||
self.draw_frictions(lst, self.color_plot)
|
||||
|
||||
# HightLight
|
||||
kp_min, kp_max = (-1, -1)
|
||||
rk_min, rk_max = (-1, -1)
|
||||
if self._highlight_data is not None:
|
||||
kp_min, kp_max = self._highlight_data
|
||||
rk_min, rk_max = self._highlight_data
|
||||
|
||||
lst = list(
|
||||
filter(
|
||||
lambda s: (s.begin_kp == kp_min and
|
||||
s.end_kp == kp_max),
|
||||
lambda s: (s.begin_rk == rk_min and
|
||||
s.end_rk == rk_max),
|
||||
frictions.frictions
|
||||
)
|
||||
)
|
||||
@@ -96,7 +96,7 @@ class PlotStricklers(PamhyrPlot):
|
||||
lambda f: f.is_full_defined(),
|
||||
frictions
|
||||
),
|
||||
key=lambda s: s.begin_kp
|
||||
key=lambda s: s.begin_rk
|
||||
)
|
||||
|
||||
coef = flatten(
|
||||
@@ -106,9 +106,9 @@ class PlotStricklers(PamhyrPlot):
|
||||
)
|
||||
)
|
||||
|
||||
kp = flatten(
|
||||
rk = flatten(
|
||||
map(
|
||||
lambda s: [s.begin_kp, s.end_kp],
|
||||
lambda s: [s.begin_rk, s.end_rk],
|
||||
lst
|
||||
)
|
||||
)
|
||||
@@ -116,13 +116,13 @@ class PlotStricklers(PamhyrPlot):
|
||||
coef_minor = list(map(lambda s: s.minor, coef))
|
||||
coef_medium = list(map(lambda s: s.medium, coef))
|
||||
|
||||
self.line_kp_elevation[0] = self.canvas.axes.plot(
|
||||
kp, coef_minor,
|
||||
self.line_rk_elevation[0] = self.canvas.axes.plot(
|
||||
rk, coef_minor,
|
||||
color=color, lw=1.
|
||||
)
|
||||
|
||||
self.line_kp_elevation[1] = self.canvas.axes.plot(
|
||||
kp, coef_medium,
|
||||
self.line_rk_elevation[1] = self.canvas.axes.plot(
|
||||
rk, coef_medium,
|
||||
color=color, lw=1.
|
||||
)
|
||||
|
||||
|
||||
@@ -113,10 +113,10 @@ class TableModel(PamhyrTableModel):
|
||||
|
||||
if self._headers[column] == "name":
|
||||
return self._lst.get(row).name
|
||||
elif self._headers[column] == "begin_kp":
|
||||
return self._lst.get(row).begin_kp
|
||||
elif self._headers[column] == "end_kp":
|
||||
return self._lst.get(row).end_kp
|
||||
elif self._headers[column] == "begin_rk":
|
||||
return self._lst.get(row).begin_rk
|
||||
elif self._headers[column] == "end_rk":
|
||||
return self._lst.get(row).end_rk
|
||||
elif self._headers[column] == "begin_strickler":
|
||||
value = self._lst.get(row).begin_strickler
|
||||
if value is None:
|
||||
@@ -144,13 +144,13 @@ class TableModel(PamhyrTableModel):
|
||||
self._lst, row, value
|
||||
)
|
||||
)
|
||||
elif self._headers[column] == "begin_kp":
|
||||
elif self._headers[column] == "begin_rk":
|
||||
self._undo.push(
|
||||
SetBeginCommand(
|
||||
self._lst, row, value
|
||||
)
|
||||
)
|
||||
elif self._headers[column] == "end_kp":
|
||||
elif self._headers[column] == "end_rk":
|
||||
self._undo.push(
|
||||
SetEndCommand(
|
||||
self._lst, row, value
|
||||
|
||||
@@ -49,14 +49,14 @@ class SetBeginCommand(QUndoCommand):
|
||||
|
||||
self._frictions = frictions
|
||||
self._index = index
|
||||
self._old = self._frictions.get(self._index).begin_kp
|
||||
self._old = self._frictions.get(self._index).begin_rk
|
||||
self._new = float(new_value)
|
||||
|
||||
def undo(self):
|
||||
self._frictions.get(self._index).begin_kp = float(self._old)
|
||||
self._frictions.get(self._index).begin_rk = float(self._old)
|
||||
|
||||
def redo(self):
|
||||
self._frictions.get(self._index).begin_kp = float(self._new)
|
||||
self._frictions.get(self._index).begin_rk = float(self._new)
|
||||
|
||||
|
||||
class SetEndCommand(QUndoCommand):
|
||||
@@ -65,14 +65,14 @@ class SetEndCommand(QUndoCommand):
|
||||
|
||||
self._frictions = frictions
|
||||
self._index = index
|
||||
self._old = self._frictions.get(self._index).end_kp
|
||||
self._old = self._frictions.get(self._index).end_rk
|
||||
self._new = float(new_value)
|
||||
|
||||
def undo(self):
|
||||
self._frictions.get(self._index).end_kp = float(self._old)
|
||||
self._frictions.get(self._index).end_rk = float(self._old)
|
||||
|
||||
def redo(self):
|
||||
self._frictions.get(self._index).end_kp = float(self._new)
|
||||
self._frictions.get(self._index).end_rk = float(self._new)
|
||||
|
||||
|
||||
class SetBeginStricklerCommand(QUndoCommand):
|
||||
|
||||
@@ -50,7 +50,7 @@ from View.Frictions.Table import (
|
||||
)
|
||||
|
||||
from View.Tools.Plot.PamhyrCanvas import MplCanvas
|
||||
from View.Frictions.PlotKPZ import PlotKPZ
|
||||
from View.Frictions.PlotRKZ import PlotRKZ
|
||||
from View.Frictions.PlotStricklers import PlotStricklers
|
||||
from View.Frictions.translate import FrictionsTranslate
|
||||
|
||||
@@ -110,7 +110,7 @@ class FrictionsWindow(PamhyrWindow):
|
||||
table_view=table,
|
||||
table_headers=self._trad.get_dict("table_headers"),
|
||||
editable_headers=[
|
||||
"name", "begin_kp", "end_kp",
|
||||
"name", "begin_rk", "end_rk",
|
||||
"begin_strickler", "end_strickler"
|
||||
],
|
||||
delegates={
|
||||
@@ -133,7 +133,7 @@ class FrictionsWindow(PamhyrWindow):
|
||||
self.plot_layout = self.find(QVBoxLayout, "verticalLayout")
|
||||
self.plot_layout.addWidget(self.canvas)
|
||||
|
||||
self.plot = PlotKPZ(
|
||||
self.plot = PlotRKZ(
|
||||
canvas=self.canvas,
|
||||
reach=self._reach,
|
||||
river=self._study.river,
|
||||
@@ -204,7 +204,7 @@ class FrictionsWindow(PamhyrWindow):
|
||||
data = self._reach
|
||||
reach = self._reach.reach
|
||||
sec = self._frictions.get(rows[0])
|
||||
highlight = (sec.begin_kp, sec.end_kp)
|
||||
highlight = (sec.begin_rk, sec.end_rk)
|
||||
|
||||
self.update_plot(highlight)
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ class FrictionsTranslate(MainTranslate):
|
||||
def __init__(self):
|
||||
super(FrictionsTranslate, self).__init__()
|
||||
|
||||
self._dict["kp"] = self._dict["unit_kp"]
|
||||
self._dict["rk"] = self._dict["unit_rk"]
|
||||
self._dict["strickler_plot"] = _translate(
|
||||
"Frictions", "Strickler ($m^{1/3}/s$)"
|
||||
)
|
||||
@@ -42,8 +42,8 @@ class FrictionsTranslate(MainTranslate):
|
||||
self._sub_dict["table_headers"] = {
|
||||
# "name": self._dict["name"],
|
||||
# "edge": self._dict["reach"],
|
||||
"begin_kp": _translate("Frictions", "Start (m)"),
|
||||
"end_kp": _translate("Frictions", "End (m)"),
|
||||
"begin_rk": _translate("Frictions", "Start (m)"),
|
||||
"end_rk": _translate("Frictions", "End (m)"),
|
||||
"begin_strickler": _translate("Frictions", "Start coefficient"),
|
||||
"end_strickler": _translate("Frictions", "End coefficient"),
|
||||
}
|
||||
@@ -76,11 +76,11 @@ class MeshingDialog(PamhyrDialog):
|
||||
def _init_default_values_profiles(self):
|
||||
profiles = self.profiles
|
||||
|
||||
self.combobox_add_items("comboBox_begin_kp", profiles)
|
||||
self.combobox_add_items("comboBox_end_kp", profiles)
|
||||
self.combobox_add_items("comboBox_begin_rk", profiles)
|
||||
self.combobox_add_items("comboBox_end_rk", profiles)
|
||||
|
||||
self.set_combobox_text("comboBox_begin_kp", profiles[0])
|
||||
self.set_combobox_text("comboBox_end_kp", profiles[-1])
|
||||
self.set_combobox_text("comboBox_begin_rk", profiles[0])
|
||||
self.set_combobox_text("comboBox_end_rk", profiles[-1])
|
||||
|
||||
@property
|
||||
def profiles(self):
|
||||
@@ -98,9 +98,9 @@ class MeshingDialog(PamhyrDialog):
|
||||
name = profile.name
|
||||
|
||||
if name == "":
|
||||
name = f"{profile.kp}"
|
||||
name = f"{profile.rk}"
|
||||
else:
|
||||
name += f" ({profile.kp})"
|
||||
name += f" ({profile.rk})"
|
||||
|
||||
return name
|
||||
|
||||
@@ -151,8 +151,8 @@ class MeshingDialog(PamhyrDialog):
|
||||
)
|
||||
self._linear = self.get_radio_button("radioButton_linear")
|
||||
|
||||
p1 = self.get_combobox_text("comboBox_begin_kp")
|
||||
p2 = self.get_combobox_text("comboBox_end_kp")
|
||||
p1 = self.get_combobox_text("comboBox_begin_rk")
|
||||
p2 = self.get_combobox_text("comboBox_end_rk")
|
||||
|
||||
self._begin_cs = self.profiles.index(p1)
|
||||
self._end_cs = self.profiles.index(p2)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# PlotKPC.py -- Pamhyr
|
||||
# PlotRKC.py -- Pamhyr
|
||||
# Copyright (C) 2023-2024 INRAE
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
@@ -29,13 +29,13 @@ from PyQt5.QtCore import (
|
||||
logger = logging.getLogger()
|
||||
|
||||
|
||||
class PlotKPZ(PamhyrPlot):
|
||||
class PlotRKZ(PamhyrPlot):
|
||||
def __init__(self, canvas=None, trad=None,
|
||||
study=None, data=None, toolbar=None,
|
||||
table=None, parent=None):
|
||||
self._study = study
|
||||
|
||||
super(PlotKPZ, self).__init__(
|
||||
super(PlotRKZ, self).__init__(
|
||||
canvas=canvas,
|
||||
trad=trad,
|
||||
data=data,
|
||||
@@ -46,12 +46,12 @@ class PlotKPZ(PamhyrPlot):
|
||||
|
||||
self._isometric_axis = False
|
||||
|
||||
self.line_kp_zgl = []
|
||||
self.line_kp_zmin = None
|
||||
self.line_kp_zmin_zmax = None
|
||||
self.line_kp_zmin_zmax_highlight = None
|
||||
self.line_rk_zgl = []
|
||||
self.line_rk_zmin = None
|
||||
self.line_rk_zmin_zmax = None
|
||||
self.line_rk_zmin_zmax_highlight = None
|
||||
|
||||
self.label_x = self._trad["unit_kp"]
|
||||
self.label_x = self._trad["unit_rk"]
|
||||
self.label_y = self._trad["unit_height"]
|
||||
|
||||
self.before_plot_selected = None
|
||||
@@ -73,7 +73,7 @@ class PlotKPZ(PamhyrPlot):
|
||||
Qt.ShiftModifier]:
|
||||
return
|
||||
|
||||
ind, point = self._closest_kp(event)
|
||||
ind, point = self._closest_rk(event)
|
||||
if self.parent._table is None:
|
||||
return
|
||||
self.parent._table.blockSignals(True)
|
||||
@@ -107,7 +107,7 @@ class PlotKPZ(PamhyrPlot):
|
||||
|
||||
return
|
||||
|
||||
def _closest_kp(self, event):
|
||||
def _closest_rk(self, event):
|
||||
|
||||
s = event.artist.get_segments()
|
||||
x = [i[0, 0] for i in s]
|
||||
@@ -194,14 +194,14 @@ class PlotKPZ(PamhyrPlot):
|
||||
self._init = True
|
||||
|
||||
def draw_z_line(self):
|
||||
kp = self.data.get_kp_complete_profiles()
|
||||
rk = self.data.get_rk_complete_profiles()
|
||||
z_min = self.data.get_z_min()
|
||||
z_max = self.data.get_z_max()
|
||||
|
||||
self._colors, self._style = self.color_hightlight()
|
||||
|
||||
self.line_kp_zmin_zmax = self.canvas.axes.vlines(
|
||||
x=kp, ymin=z_min, ymax=z_max,
|
||||
self.line_rk_zmin_zmax = self.canvas.axes.vlines(
|
||||
x=rk, ymin=z_min, ymax=z_max,
|
||||
color=self._colors,
|
||||
linestyle=self._style,
|
||||
lw=1.,
|
||||
@@ -228,7 +228,7 @@ class PlotKPZ(PamhyrPlot):
|
||||
return colors, style
|
||||
|
||||
def draw_lr(self):
|
||||
kp = self.data.get_kp_complete_profiles()
|
||||
rk = self.data.get_rk_complete_profiles()
|
||||
lz = []
|
||||
rz = []
|
||||
|
||||
@@ -238,7 +238,7 @@ class PlotKPZ(PamhyrPlot):
|
||||
rz.append(z[-1])
|
||||
|
||||
line = self.canvas.axes.plot(
|
||||
kp, lz,
|
||||
rk, lz,
|
||||
color=self.color_plot_river_bottom,
|
||||
linestyle="dotted",
|
||||
lw=1.,
|
||||
@@ -246,7 +246,7 @@ class PlotKPZ(PamhyrPlot):
|
||||
self.line_lr.append(line)
|
||||
|
||||
line = self.canvas.axes.plot(
|
||||
kp, rz,
|
||||
rk, rz,
|
||||
color=self.color_plot_river_bottom,
|
||||
linestyle="dotted",
|
||||
lw=1.,
|
||||
@@ -254,18 +254,18 @@ class PlotKPZ(PamhyrPlot):
|
||||
self.line_lr.append(line)
|
||||
|
||||
def draw_gl(self):
|
||||
kp = self.data.get_kp_complete_profiles()
|
||||
rk = self.data.get_rk_complete_profiles()
|
||||
|
||||
ind = 0
|
||||
self.line_kp_zgl = []
|
||||
self.line_rk_zgl = []
|
||||
for z in self.data.get_guidelines_z():
|
||||
# Is incomplete guideline?
|
||||
if len(z) != len(kp):
|
||||
if len(z) != len(rk):
|
||||
continue
|
||||
|
||||
self.line_kp_zgl.append(
|
||||
self.line_rk_zgl.append(
|
||||
self.canvas.axes.plot(
|
||||
kp, z, lw=1.,
|
||||
rk, z, lw=1.,
|
||||
color=self.colors[ind % len(self.colors)],
|
||||
linestyle=self.linestyle[ind // len(self.colors)]
|
||||
)
|
||||
@@ -273,11 +273,11 @@ class PlotKPZ(PamhyrPlot):
|
||||
ind += 1
|
||||
|
||||
def draw_bottom(self):
|
||||
kp = self.data.get_kp_complete_profiles()
|
||||
rk = self.data.get_rk_complete_profiles()
|
||||
z_min = self.data.get_z_min()
|
||||
|
||||
self.line_kp_zmin, = self.canvas.axes.plot(
|
||||
kp, z_min,
|
||||
self.line_rk_zmin, = self.canvas.axes.plot(
|
||||
rk, z_min,
|
||||
linestyle=":", lw=1.5,
|
||||
color='lightgrey'
|
||||
)
|
||||
@@ -292,7 +292,7 @@ class PlotKPZ(PamhyrPlot):
|
||||
)
|
||||
|
||||
for hs in lhs:
|
||||
x = hs.input_kp
|
||||
x = hs.input_rk
|
||||
if x is not None:
|
||||
z_min = reach.get_z_min()
|
||||
z_max = reach.get_z_max()
|
||||
@@ -329,25 +329,25 @@ class PlotKPZ(PamhyrPlot):
|
||||
def update_current(self):
|
||||
if self._current_data_update:
|
||||
self._colors, self._style = self.color_hightlight()
|
||||
self.line_kp_zmin_zmax.set_colors(self._colors)
|
||||
self.line_kp_zmin_zmax.set_linestyle(self._style)
|
||||
self.line_rk_zmin_zmax.set_colors(self._colors)
|
||||
self.line_rk_zmin_zmax.set_linestyle(self._style)
|
||||
|
||||
def update_gl(self):
|
||||
if self._current_data_update:
|
||||
return
|
||||
|
||||
kp = self.data.get_kp_complete_profiles()
|
||||
rk = self.data.get_rk_complete_profiles()
|
||||
z_min = self.data.get_z_min()
|
||||
z_max = self.data.get_z_max()
|
||||
|
||||
self.line_kp_zmin.set_data(kp, z_min)
|
||||
self.line_rk_zmin.set_data(rk, z_min)
|
||||
|
||||
# TODO comprendre à quoi sert ce bout de code
|
||||
# ========>
|
||||
# self.line_kp_zmin_zmax.remove()
|
||||
# self.line_rk_zmin_zmax.remove()
|
||||
# self._colors, self._style = self.color_hightlight()
|
||||
# self.line_kp_zmin_zmax = self.canvas.axes.vlines(
|
||||
# x=kp,
|
||||
# self.line_rk_zmin_zmax = self.canvas.axes.vlines(
|
||||
# x=rk,
|
||||
# ymin=z_min,
|
||||
# ymax=z_max,
|
||||
# color=self._colors,
|
||||
@@ -358,12 +358,12 @@ class PlotKPZ(PamhyrPlot):
|
||||
|
||||
z_complete = self.data.get_guidelines_z()
|
||||
try:
|
||||
for i in range(len(self.line_kp_zgl)):
|
||||
self.line_kp_zgl[i][0].set_data(
|
||||
kp, z_complete[i]
|
||||
for i in range(len(self.line_rk_zgl)):
|
||||
self.line_rk_zgl[i][0].set_data(
|
||||
rk, z_complete[i]
|
||||
)
|
||||
except Exception as e:
|
||||
logger.warning(f"Failed to update graphic KPZ: {e}")
|
||||
logger.warning(f"Failed to update graphic RKZ: {e}")
|
||||
|
||||
def update_lr(self):
|
||||
for line in self.line_lr:
|
||||
@@ -56,7 +56,7 @@ class Plot(PamhyrPlot):
|
||||
self.line_xy = []
|
||||
self.line_gl = []
|
||||
|
||||
self.label_x = self._trad["unit_kp"]
|
||||
self.label_x = self._trad["unit_rk"]
|
||||
self.label_y = self._trad["unit_height"]
|
||||
|
||||
self.before_plot_selected = None
|
||||
|
||||
@@ -64,7 +64,7 @@ class ProfileWindow(PamhyrWindow):
|
||||
trad = GeometryProfileTranslate()
|
||||
name = (
|
||||
trad[self._pamhyr_name] +
|
||||
f" - {self._profile.name} {self._profile.kp}"
|
||||
f" - {self._profile.name} {self._profile.rk}"
|
||||
)
|
||||
|
||||
super(ProfileWindow, self).__init__(
|
||||
|
||||
@@ -55,8 +55,8 @@ class GeometryReachTableModel(PamhyrTableModel):
|
||||
return self._data.profile(index.row()).name
|
||||
|
||||
if role == Qt.DisplayRole and index.column() == 1:
|
||||
kp = self._data.profile(index.row()).kp
|
||||
return f"{kp:.4f}"
|
||||
rk = self._data.profile(index.row()).rk
|
||||
return f"{rk:.4f}"
|
||||
|
||||
if role == Qt.DisplayRole and index.column() == 2:
|
||||
return str(self._data.profile(index.row()).nb_points)
|
||||
@@ -94,9 +94,9 @@ class GeometryReachTableModel(PamhyrTableModel):
|
||||
|
||||
if index.column() == 1:
|
||||
self._undo.push(
|
||||
SetKPCommand(
|
||||
SetRKCommand(
|
||||
self._data, index.row(),
|
||||
self._data.profile(index.row()).kp,
|
||||
self._data.profile(index.row()).rk,
|
||||
value
|
||||
)
|
||||
)
|
||||
@@ -247,12 +247,12 @@ class GeometryReachTableModel(PamhyrTableModel):
|
||||
self.layoutAboutToBeChanged.emit()
|
||||
self.layoutChanged.emit()
|
||||
|
||||
def update_kp(self, mesher, data):
|
||||
def update_rk(self, mesher, data):
|
||||
self.layoutAboutToBeChanged.emit()
|
||||
|
||||
self._undo.push(
|
||||
MeshingCommand(
|
||||
self._data, mesher, data, "update_kp"
|
||||
self._data, mesher, data, "update_rk"
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -61,7 +61,7 @@ class GeometryTranslate(MainTranslate):
|
||||
|
||||
self._sub_dict["table_headers"] = {
|
||||
"name": self._dict["name"],
|
||||
"kp": self._dict["unit_kp"],
|
||||
"rk": self._dict["unit_rk_short"],
|
||||
"poins": _translate("Geometry", "Points"),
|
||||
}
|
||||
|
||||
|
||||
@@ -56,16 +56,16 @@ class SetNameCommand(SetDataCommand):
|
||||
self._reach.profile(self._index).name = self._new
|
||||
|
||||
|
||||
class SetKPCommand(SetDataCommand):
|
||||
class SetRKCommand(SetDataCommand):
|
||||
def __init__(self, reach, index, old_value, new_value):
|
||||
self.type = float
|
||||
super(SetKPCommand, self).__init__(reach, index, old_value, new_value)
|
||||
super(SetRKCommand, self).__init__(reach, index, old_value, new_value)
|
||||
|
||||
def undo(self):
|
||||
self._reach.profile(self._index).kp = self._old
|
||||
self._reach.profile(self._index).rk = self._old
|
||||
|
||||
def redo(self):
|
||||
self._reach.profile(self._index).kp = self._new
|
||||
self._reach.profile(self._index).rk = self._new
|
||||
|
||||
|
||||
class AddCommand(QUndoCommand):
|
||||
@@ -243,8 +243,8 @@ class MeshingCommand(QUndoCommand):
|
||||
|
||||
def redo(self):
|
||||
if self._new_profiles is None:
|
||||
if self._command == "update_kp":
|
||||
self._mesher.update_kp(
|
||||
if self._command == "update_rk":
|
||||
self._mesher.update_rk(
|
||||
self._reach,
|
||||
**self._data
|
||||
)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# UpdateKPDialog.py -- Pamhyr
|
||||
# UpdateRKDialog.py -- Pamhyr
|
||||
# Copyright (C) 2023-2024 INRAE
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
@@ -32,12 +32,12 @@ from PyQt5.QtWidgets import (
|
||||
)
|
||||
|
||||
|
||||
class UpdateKPDialog(PamhyrDialog):
|
||||
_pamhyr_ui = "UpdateKPOptions"
|
||||
_pamhyr_name = "UpdateKP"
|
||||
class UpdateRKDialog(PamhyrDialog):
|
||||
_pamhyr_ui = "UpdateRKOptions"
|
||||
_pamhyr_name = "UpdateRK"
|
||||
|
||||
def __init__(self, reach, trad=None, parent=None):
|
||||
super(UpdateKPDialog, self).__init__(
|
||||
super(UpdateRKDialog, self).__init__(
|
||||
title=trad[self._pamhyr_name],
|
||||
trad=trad,
|
||||
options=[],
|
||||
@@ -65,7 +65,7 @@ class UpdateKPDialog(PamhyrDialog):
|
||||
|
||||
self._orientation = 0
|
||||
self._origin = self._reach.profile(0)
|
||||
self._origin_value = self._reach.profile(0).kp
|
||||
self._origin_value = self._reach.profile(0).rk
|
||||
|
||||
self._init_default_values_profiles()
|
||||
self._init_default_values_guidelines()
|
||||
@@ -93,7 +93,7 @@ class UpdateKPDialog(PamhyrDialog):
|
||||
origin = self.get_combobox_text("comboBox_origin")
|
||||
self.set_double_spin_box(
|
||||
"doubleSpinBox_origin",
|
||||
self._reach.profile(self.profiles.index(origin)).kp
|
||||
self._reach.profile(self.profiles.index(origin)).rk
|
||||
)
|
||||
|
||||
@property
|
||||
@@ -112,9 +112,9 @@ class UpdateKPDialog(PamhyrDialog):
|
||||
name = profile.name
|
||||
|
||||
if name == "":
|
||||
name = f"{profile.kp}"
|
||||
name = f"{profile.rk}"
|
||||
else:
|
||||
name += f" ({profile.kp})"
|
||||
name += f" ({profile.rk})"
|
||||
|
||||
return name
|
||||
|
||||
+39
-39
@@ -54,9 +54,9 @@ from Meshing.Mage import (
|
||||
from View.Geometry.Table import GeometryReachTableModel
|
||||
from View.Geometry.PlotXY import PlotXY
|
||||
from View.Geometry.PlotAC import PlotAC
|
||||
from View.Geometry.PlotKPZ import PlotKPZ
|
||||
from View.Geometry.PlotRKZ import PlotRKZ
|
||||
from View.Geometry.MeshingDialog import MeshingDialog
|
||||
from View.Geometry.UpdateKPDialog import UpdateKPDialog
|
||||
from View.Geometry.UpdateRKDialog import UpdateRKDialog
|
||||
from View.Geometry.PurgeDialog import PurgeDialog
|
||||
from View.Geometry.Translate import GeometryTranslate
|
||||
from View.Geometry.Profile.Window import ProfileWindow
|
||||
@@ -105,7 +105,7 @@ class GeometryWindow(PamhyrWindow):
|
||||
self._table = GeometryReachTableModel(
|
||||
table_view=table,
|
||||
table_headers=table_headers,
|
||||
editable_headers=["name", "kp"],
|
||||
editable_headers=["name", "rk"],
|
||||
data=self._reach,
|
||||
undo=self._undo_stack
|
||||
)
|
||||
@@ -116,7 +116,7 @@ class GeometryWindow(PamhyrWindow):
|
||||
|
||||
def setup_plots(self):
|
||||
self.setup_plots_xy()
|
||||
self.setup_plots_kpc()
|
||||
self.setup_plots_rkc()
|
||||
self.setup_plots_ac()
|
||||
|
||||
def setup_plots_xy(self):
|
||||
@@ -131,17 +131,17 @@ class GeometryWindow(PamhyrWindow):
|
||||
self._plot_layout_xy.addWidget(self._canvas_xy)
|
||||
self.plot_xy()
|
||||
|
||||
def setup_plots_kpc(self):
|
||||
self._canvas_kpc = MplCanvas(width=6, height=4, dpi=100)
|
||||
self._canvas_kpc.setObjectName("canvas_kpc")
|
||||
self._toolbar_kpc = PamhyrPlotToolbar(
|
||||
self._canvas_kpc, self,
|
||||
def setup_plots_rkc(self):
|
||||
self._canvas_rkc = MplCanvas(width=6, height=4, dpi=100)
|
||||
self._canvas_rkc.setObjectName("canvas_rkc")
|
||||
self._toolbar_rkc = PamhyrPlotToolbar(
|
||||
self._canvas_rkc, self,
|
||||
items=["home", "zoom", "save", "iso", "back/forward", "move"]
|
||||
)
|
||||
self._plot_layout_kpc = self.find(QVBoxLayout, "verticalLayout_2")
|
||||
self._plot_layout_kpc.addWidget(self._toolbar_kpc)
|
||||
self._plot_layout_kpc.addWidget(self._canvas_kpc)
|
||||
self.plot_kpc()
|
||||
self._plot_layout_rkc = self.find(QVBoxLayout, "verticalLayout_2")
|
||||
self._plot_layout_rkc.addWidget(self._toolbar_rkc)
|
||||
self._plot_layout_rkc.addWidget(self._canvas_rkc)
|
||||
self.plot_rkc()
|
||||
|
||||
def setup_plots_ac(self):
|
||||
self._canvas_ac = MplCanvas(width=9, height=4, dpi=100)
|
||||
@@ -162,7 +162,7 @@ class GeometryWindow(PamhyrWindow):
|
||||
|
||||
profile = self._reach.profile(row)
|
||||
|
||||
name = profile.name + " " + str(profile.kp)
|
||||
name = profile.name + " " + str(profile.rk)
|
||||
|
||||
return (
|
||||
"<font color=\"Grey\">" +
|
||||
@@ -192,7 +192,7 @@ class GeometryWindow(PamhyrWindow):
|
||||
"action_delete": self.delete,
|
||||
"action_edit": self.edit_profile,
|
||||
"action_meshing": self.edit_meshing,
|
||||
"action_update_kp": self.update_kp,
|
||||
"action_update_rk": self.update_rk,
|
||||
"action_purge": self.purge,
|
||||
}
|
||||
|
||||
@@ -216,7 +216,7 @@ class GeometryWindow(PamhyrWindow):
|
||||
def _update(self, redraw=False, propagate=True):
|
||||
if redraw:
|
||||
self._plot_xy.draw()
|
||||
self._plot_kpc.draw()
|
||||
self._plot_rkc.draw()
|
||||
self._plot_ac.draw()
|
||||
|
||||
self.select_current_profile()
|
||||
@@ -315,9 +315,9 @@ class GeometryWindow(PamhyrWindow):
|
||||
src_except=e
|
||||
)
|
||||
|
||||
def update_kp(self):
|
||||
def update_rk(self):
|
||||
try:
|
||||
dlg = UpdateKPDialog(
|
||||
dlg = UpdateRKDialog(
|
||||
reach=self._reach,
|
||||
trad=self._trad,
|
||||
parent=self
|
||||
@@ -329,15 +329,15 @@ class GeometryWindow(PamhyrWindow):
|
||||
"origin_value": dlg.origin_value,
|
||||
"orientation": dlg.orientation,
|
||||
}
|
||||
self._update_kp(data)
|
||||
self._update_rk(data)
|
||||
except Exception as e:
|
||||
logger_exception(e)
|
||||
return
|
||||
|
||||
def _update_kp(self, data):
|
||||
def _update_rk(self, data):
|
||||
try:
|
||||
mesher = MeshingWithMageMailleurTT()
|
||||
self._table.update_kp(mesher, data)
|
||||
self._table.update_rk(mesher, data)
|
||||
except Exception as e:
|
||||
logger_exception(e)
|
||||
raise ExternFileMissingError(
|
||||
@@ -367,25 +367,25 @@ class GeometryWindow(PamhyrWindow):
|
||||
self._plot_xy.update()
|
||||
self.tableView.model().blockSignals(False)
|
||||
|
||||
def plot_kpc(self):
|
||||
def plot_rkc(self):
|
||||
self.tableView.model().blockSignals(True)
|
||||
|
||||
self._plot_kpc = PlotKPZ(
|
||||
canvas=self._canvas_kpc,
|
||||
self._plot_rkc = PlotRKZ(
|
||||
canvas=self._canvas_rkc,
|
||||
study=self._study,
|
||||
data=self._reach,
|
||||
trad=self._trad,
|
||||
toolbar=self._toolbar_kpc,
|
||||
toolbar=self._toolbar_rkc,
|
||||
table=self.find(QTableView, "tableView"),
|
||||
parent=self
|
||||
)
|
||||
self._plot_kpc.draw()
|
||||
self._plot_rkc.draw()
|
||||
|
||||
self.tableView.model().blockSignals(False)
|
||||
|
||||
def update_plot_kpc(self):
|
||||
def update_plot_rkc(self):
|
||||
self.tableView.model().blockSignals(True)
|
||||
self._plot_kpc.update()
|
||||
self._plot_rkc.update()
|
||||
self.tableView.model().blockSignals(False)
|
||||
|
||||
def plot_ac(self):
|
||||
@@ -418,10 +418,10 @@ class GeometryWindow(PamhyrWindow):
|
||||
self._plot_xy.update()
|
||||
self.tableView.model().blockSignals(False)
|
||||
|
||||
def select_plot_kpc(self, ind: int):
|
||||
def select_plot_rkc(self, ind: int):
|
||||
self.tableView.model().blockSignals(True)
|
||||
self._plot_kpc.current = ind
|
||||
self._plot_kpc.update()
|
||||
self._plot_rkc.current = ind
|
||||
self._plot_rkc.update()
|
||||
self.tableView.model().blockSignals(False)
|
||||
|
||||
def select_plot_ac(self, ind: int):
|
||||
@@ -436,11 +436,11 @@ class GeometryWindow(PamhyrWindow):
|
||||
|
||||
if row is not None:
|
||||
self.select_plot_xy(row)
|
||||
self.select_plot_kpc(row)
|
||||
self.select_plot_rkc(row)
|
||||
self.select_plot_ac(row)
|
||||
else:
|
||||
self._plot_xy.draw()
|
||||
self._plot_kpc.draw()
|
||||
self._plot_rkc.draw()
|
||||
self._plot_ac.draw()
|
||||
|
||||
self.tableView.model().blockSignals(False)
|
||||
@@ -539,12 +539,12 @@ class GeometryWindow(PamhyrWindow):
|
||||
.selectedRows()
|
||||
|
||||
table = []
|
||||
# table.append(["name", "kp"])
|
||||
# table.append(["name", "rk"])
|
||||
|
||||
for row in rows:
|
||||
profile = self._reach.profile(row.row())
|
||||
table.append(
|
||||
[profile.name, profile.kp]
|
||||
[profile.name, profile.rk]
|
||||
)
|
||||
|
||||
self.copyTableIntoClipboard(table)
|
||||
@@ -588,14 +588,14 @@ class GeometryWindow(PamhyrWindow):
|
||||
self.select_current_profile()
|
||||
# self.update_plot_ac()
|
||||
# self.update_plot_xy()
|
||||
# self.update_plot_kpc()
|
||||
# self.update_plot_rkc()
|
||||
|
||||
def _redo(self):
|
||||
self._table.redo()
|
||||
self.select_current_profile()
|
||||
# self.update_plot_ac()
|
||||
# self.update_plot_xy()
|
||||
# self.update_plot_kpc()
|
||||
# self.update_plot_rkc()
|
||||
|
||||
def export_to_file(self):
|
||||
settings = QSettings(
|
||||
@@ -642,13 +642,13 @@ class GeometryWindow(PamhyrWindow):
|
||||
c1 = f"{profile.code1:>6}"
|
||||
c2 = f"{profile.code2:>6}"
|
||||
t = f"{len(profile.points):>6}"
|
||||
kp = f"{profile.kp:>12f}"[0:12]
|
||||
rk = f"{profile.rk:>12f}"[0:12]
|
||||
pname = profile.name
|
||||
if profile.name == "":
|
||||
pname = f"p{profile.id:>3}".replace(" ", "0")
|
||||
name = f"{pname:<19}"
|
||||
|
||||
wfile.write(f"{num}{c1}{c2}{t} {kp} {pname}\n")
|
||||
wfile.write(f"{num}{c1}{c2}{t} {rk} {pname}\n")
|
||||
|
||||
for point in profile.points:
|
||||
self._export_to_file_st_point(wfile, point)
|
||||
|
||||
@@ -150,9 +150,9 @@ class BasicHydraulicStructuresWindow(PamhyrWindow):
|
||||
self.plot_layout.addWidget(self.canvas)
|
||||
|
||||
reach = self._hs.input_reach
|
||||
profile_kp = self._hs.input_kp
|
||||
if profile_kp is not None:
|
||||
profiles = reach.reach.get_profiles_from_kp(float(profile_kp))
|
||||
profile_rk = self._hs.input_rk
|
||||
if profile_rk is not None:
|
||||
profiles = reach.reach.get_profiles_from_rk(float(profile_rk))
|
||||
else:
|
||||
profiles = None
|
||||
if profiles is not None:
|
||||
|
||||
@@ -57,11 +57,11 @@ class PlotAC(PamhyrPlot):
|
||||
self.init_axes()
|
||||
|
||||
if self.data is None:
|
||||
self.line_kp = None
|
||||
self.line_rk = None
|
||||
return
|
||||
|
||||
if self._current_reach is None:
|
||||
self.line_kp = None
|
||||
self.line_rk = None
|
||||
return
|
||||
|
||||
self.draw_data()
|
||||
@@ -73,13 +73,13 @@ class PlotAC(PamhyrPlot):
|
||||
reach = self._current_reach
|
||||
|
||||
if self._current_profile is None:
|
||||
self.line_kp = None
|
||||
self.line_rk = None
|
||||
else:
|
||||
profile = self._current_profile
|
||||
x = profile.get_station()
|
||||
z = profile.z()
|
||||
|
||||
self.line_kp, = self.canvas.axes.plot(
|
||||
self.line_rk, = self.canvas.axes.plot(
|
||||
x, z,
|
||||
color=self.color_plot_river_bottom,
|
||||
**self.plot_default_kargs
|
||||
@@ -94,7 +94,7 @@ class PlotAC(PamhyrPlot):
|
||||
self.update()
|
||||
|
||||
def update(self):
|
||||
if self.line_kp is None:
|
||||
if self.line_rk is None:
|
||||
self.draw()
|
||||
return
|
||||
|
||||
@@ -110,11 +110,11 @@ class PlotAC(PamhyrPlot):
|
||||
x = profile.get_station()
|
||||
z = profile.z()
|
||||
|
||||
self.line_kp.set_data(x, z)
|
||||
self.line_rk.set_data(x, z)
|
||||
|
||||
def clear(self):
|
||||
self.update_clear()
|
||||
|
||||
def update_clear(self):
|
||||
if self.line_kp is not None:
|
||||
self.line_kp.set_data([], [])
|
||||
if self.line_rk is not None:
|
||||
self.line_rk.set_data([], [])
|
||||
@@ -1,4 +1,4 @@
|
||||
# PlotKPC.py -- Pamhyr
|
||||
# PlotRKC.py -- Pamhyr
|
||||
# Copyright (C) 2023-2024 INRAE
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
@@ -29,11 +29,11 @@ from matplotlib.collections import LineCollection
|
||||
_translate = QCoreApplication.translate
|
||||
|
||||
|
||||
class PlotKPC(PamhyrPlot):
|
||||
class PlotRKC(PamhyrPlot):
|
||||
def __init__(self, canvas=None, trad=None, toolbar=None,
|
||||
river=None, reach=None, profile=None,
|
||||
parent=None):
|
||||
super(PlotKPC, self).__init__(
|
||||
super(PlotRKC, self).__init__(
|
||||
canvas=canvas,
|
||||
trad=trad,
|
||||
data=river,
|
||||
@@ -44,7 +44,7 @@ class PlotKPC(PamhyrPlot):
|
||||
self._current_reach = reach
|
||||
self._current_profile = profile
|
||||
|
||||
self.label_x = self._trad["unit_kp"]
|
||||
self.label_x = self._trad["unit_rk"]
|
||||
self.label_y = self._trad["unit_elevation"]
|
||||
|
||||
self._isometric_axis = False
|
||||
@@ -67,14 +67,14 @@ class PlotKPC(PamhyrPlot):
|
||||
|
||||
if self.data is None:
|
||||
self.profile = None
|
||||
self.line_kp_zmin_zmax = None
|
||||
self.line_kp_zmin = None
|
||||
self.line_rk_zmin_zmax = None
|
||||
self.line_rk_zmin = None
|
||||
return
|
||||
|
||||
if self._current_reach is None:
|
||||
self.profile = None
|
||||
self.line_kp_zmin_zmax = None
|
||||
self.line_kp_zmin = None
|
||||
self.line_rk_zmin_zmax = None
|
||||
self.line_rk_zmin = None
|
||||
return
|
||||
|
||||
self.draw_data()
|
||||
@@ -86,26 +86,26 @@ class PlotKPC(PamhyrPlot):
|
||||
def draw_data(self):
|
||||
reach = self._current_reach
|
||||
|
||||
kp = reach.reach.get_kp()
|
||||
rk = reach.reach.get_rk()
|
||||
z_min = reach.reach.get_z_min()
|
||||
z_max = reach.reach.get_z_max()
|
||||
|
||||
self.line_kp_zmin, = self.canvas.axes.plot(
|
||||
kp, z_min,
|
||||
self.line_rk_zmin, = self.canvas.axes.plot(
|
||||
rk, z_min,
|
||||
color=self.color_plot_river_bottom,
|
||||
lw=1.,
|
||||
)
|
||||
|
||||
self.line_kp_zmax, = self.canvas.axes.plot(
|
||||
kp, z_max,
|
||||
self.line_rk_zmax, = self.canvas.axes.plot(
|
||||
rk, z_max,
|
||||
color=self.color_plot_river_bottom,
|
||||
lw=1.,
|
||||
alpha=0.0
|
||||
)
|
||||
|
||||
if len(kp) != 0:
|
||||
self.line_kp_zmin_zmax = self.canvas.axes.vlines(
|
||||
x=kp,
|
||||
if len(rk) != 0:
|
||||
self.line_rk_zmin_zmax = self.canvas.axes.vlines(
|
||||
x=rk,
|
||||
ymin=z_min, ymax=z_max,
|
||||
color=self.color_plot,
|
||||
lw=1.,
|
||||
@@ -116,13 +116,13 @@ class PlotKPC(PamhyrPlot):
|
||||
if self._current_profile is None:
|
||||
self.profile = None
|
||||
else:
|
||||
kp = [self._current_profile.kp,
|
||||
self._current_profile.kp]
|
||||
rk = [self._current_profile.rk,
|
||||
self._current_profile.rk]
|
||||
min_max = [self._current_profile.z_min(),
|
||||
self._current_profile.z_max()]
|
||||
|
||||
self.profile = self.canvas.axes.plot(
|
||||
kp, min_max,
|
||||
rk, min_max,
|
||||
color=self.color_plot_current,
|
||||
lw=1.
|
||||
)
|
||||
@@ -141,7 +141,7 @@ class PlotKPC(PamhyrPlot):
|
||||
|
||||
def update_current_profile(self):
|
||||
reach = self._current_reach
|
||||
kp = reach.reach.get_kp()
|
||||
rk = reach.reach.get_rk()
|
||||
z_min = reach.reach.get_z_min()
|
||||
z_max = reach.reach.get_z_max()
|
||||
|
||||
@@ -149,7 +149,7 @@ class PlotKPC(PamhyrPlot):
|
||||
self.draw()
|
||||
else:
|
||||
self.profile.set_data(
|
||||
[self._current_profile.kp, self._current_profile.kp],
|
||||
[self._current_profile.rk, self._current_profile.rk],
|
||||
[self._current_profile.z_min(), self._current_profile.z_max()],
|
||||
)
|
||||
|
||||
@@ -159,12 +159,12 @@ class PlotKPC(PamhyrPlot):
|
||||
if self.profile is not None:
|
||||
self.profile[0].set_data([], [])
|
||||
|
||||
if self.line_kp_zmin_zmax is not None:
|
||||
self.line_kp_zmin_zmax.remove()
|
||||
self.line_kp_zmin_zmax = None
|
||||
if self.line_rk_zmin_zmax is not None:
|
||||
self.line_rk_zmin_zmax.remove()
|
||||
self.line_rk_zmin_zmax = None
|
||||
|
||||
if self.line_kp_zmin is not None:
|
||||
self.line_kp_zmin.set_data([], [])
|
||||
if self.line_rk_zmin is not None:
|
||||
self.line_rk_zmin.set_data([], [])
|
||||
|
||||
self.canvas.figure.canvas.draw_idle()
|
||||
|
||||
@@ -37,7 +37,7 @@ from PyQt5.QtWidgets import (
|
||||
from View.Tools.PamhyrTable import PamhyrTableModel
|
||||
|
||||
from View.HydraulicStructures.UndoCommand import (
|
||||
SetNameCommand, SetReachCommand, SetKpCommand,
|
||||
SetNameCommand, SetReachCommand, SetRkCommand,
|
||||
SetEnabledCommand, AddCommand, DelCommand,
|
||||
)
|
||||
|
||||
@@ -58,14 +58,14 @@ class ComboBoxDelegate(QItemDelegate):
|
||||
self.editor = QComboBox(parent)
|
||||
|
||||
val = []
|
||||
if self._mode == "kp":
|
||||
if self._mode == "rk":
|
||||
reach = self._data.hydraulic_structures\
|
||||
.get(index.row())\
|
||||
.input_reach
|
||||
if reach is not None:
|
||||
val = list(
|
||||
map(
|
||||
lambda kp: str(kp), reach.reach.get_kp()
|
||||
lambda rk: str(rk), reach.reach.get_rk()
|
||||
)
|
||||
)
|
||||
else:
|
||||
@@ -126,8 +126,8 @@ class TableModel(PamhyrTableModel):
|
||||
if n is None:
|
||||
return self._trad['not_associated']
|
||||
return n.name
|
||||
elif self._headers[column] == "kp":
|
||||
n = self._lst.get(row).input_kp
|
||||
elif self._headers[column] == "rk":
|
||||
n = self._lst.get(row).input_rk
|
||||
if n is None:
|
||||
return self._trad['not_associated']
|
||||
return n
|
||||
@@ -158,12 +158,12 @@ class TableModel(PamhyrTableModel):
|
||||
self._lst, row, self._data.edge(value)
|
||||
)
|
||||
)
|
||||
elif self._headers[column] == "kp":
|
||||
elif self._headers[column] == "rk":
|
||||
if value == na:
|
||||
value = None
|
||||
|
||||
self._undo.push(
|
||||
SetKpCommand(
|
||||
SetRkCommand(
|
||||
self._lst, row, value
|
||||
)
|
||||
)
|
||||
|
||||
@@ -36,5 +36,5 @@ class HydraulicStructuresTranslate(MainTranslate):
|
||||
self._sub_dict["table_headers"] = {
|
||||
"name": self._dict["name"],
|
||||
"reach": self._dict["reach"],
|
||||
"kp": self._dict["unit_kp"],
|
||||
"rk": self._dict["unit_rk"],
|
||||
}
|
||||
@@ -52,34 +52,34 @@ class SetReachCommand(QUndoCommand):
|
||||
self._index = index
|
||||
self._old = self._h_s_lst.get(self._index).input_reach
|
||||
self._new = reach
|
||||
self._old_kp = self._h_s_lst.get(self._index).input_kp
|
||||
self._new_kp = None
|
||||
self._old_rk = self._h_s_lst.get(self._index).input_rk
|
||||
self._new_rk = None
|
||||
|
||||
def undo(self):
|
||||
i = self._h_s_lst.get(self._index)
|
||||
i.input_reach = self._old
|
||||
i.input_kp = self._old_kp
|
||||
i.input_rk = self._old_rk
|
||||
|
||||
def redo(self):
|
||||
i = self._h_s_lst.get(self._index)
|
||||
i.input_reach = self._new
|
||||
i.input_kp = self._new_kp
|
||||
i.input_rk = self._new_rk
|
||||
|
||||
|
||||
class SetKpCommand(QUndoCommand):
|
||||
def __init__(self, h_s_lst, index, kp):
|
||||
class SetRkCommand(QUndoCommand):
|
||||
def __init__(self, h_s_lst, index, rk):
|
||||
QUndoCommand.__init__(self)
|
||||
|
||||
self._h_s_lst = h_s_lst
|
||||
self._index = index
|
||||
self._old = self._h_s_lst.get(self._index).input_kp
|
||||
self._new = kp
|
||||
self._old = self._h_s_lst.get(self._index).input_rk
|
||||
self._new = rk
|
||||
|
||||
def undo(self):
|
||||
self._h_s_lst.get(self._index).input_kp = self._old
|
||||
self._h_s_lst.get(self._index).input_rk = self._old
|
||||
|
||||
def redo(self):
|
||||
self._h_s_lst.get(self._index).input_kp = self._new
|
||||
self._h_s_lst.get(self._index).input_rk = self._new
|
||||
|
||||
|
||||
class SetEnabledCommand(QUndoCommand):
|
||||
|
||||
@@ -39,7 +39,7 @@ from View.Tools.Plot.PamhyrCanvas import MplCanvas
|
||||
from View.Tools.Plot.PamhyrToolbar import PamhyrPlotToolbar
|
||||
|
||||
from View.HydraulicStructures.PlotAC import PlotAC
|
||||
from View.HydraulicStructures.PlotKPC import PlotKPC
|
||||
from View.HydraulicStructures.PlotRKC import PlotRKC
|
||||
|
||||
from View.HydraulicStructures.Table import (
|
||||
TableModel, ComboBoxDelegate
|
||||
@@ -89,21 +89,21 @@ class HydraulicStructuresWindow(PamhyrWindow):
|
||||
parent=self,
|
||||
mode="reaches"
|
||||
)
|
||||
self._delegate_kp = ComboBoxDelegate(
|
||||
self._delegate_rk = ComboBoxDelegate(
|
||||
trad=self._trad,
|
||||
data=self._study.river,
|
||||
parent=self,
|
||||
mode="kp"
|
||||
mode="rk"
|
||||
)
|
||||
|
||||
table = self.find(QTableView, f"tableView")
|
||||
self._table = TableModel(
|
||||
table_view=table,
|
||||
table_headers=self._trad.get_dict("table_headers"),
|
||||
editable_headers=["name", "reach", "kp"],
|
||||
editable_headers=["name", "reach", "rk"],
|
||||
delegates={
|
||||
"reach": self._delegate_reach,
|
||||
"kp": self._delegate_kp,
|
||||
"rk": self._delegate_rk,
|
||||
},
|
||||
trad=self._trad,
|
||||
data=self._study.river,
|
||||
@@ -135,7 +135,7 @@ class HydraulicStructuresWindow(PamhyrWindow):
|
||||
self.plot_layout.addWidget(self.toolbar)
|
||||
self.plot_layout.addWidget(self.canvas)
|
||||
|
||||
self.plot_kpc = PlotKPC(
|
||||
self.plot_rkc = PlotRKC(
|
||||
canvas=self.canvas,
|
||||
river=self._study.river,
|
||||
reach=None,
|
||||
@@ -144,7 +144,7 @@ class HydraulicStructuresWindow(PamhyrWindow):
|
||||
toolbar=self.toolbar,
|
||||
parent=self
|
||||
)
|
||||
self.plot_kpc.draw()
|
||||
self.plot_rkc.draw()
|
||||
|
||||
self.canvas_2 = MplCanvas(width=5, height=4, dpi=100)
|
||||
self.canvas_2.setObjectName("canvas_2")
|
||||
@@ -285,20 +285,20 @@ class HydraulicStructuresWindow(PamhyrWindow):
|
||||
|
||||
reach = self._hs_lst.get(rows[0]).input_reach
|
||||
if reach is not None:
|
||||
self.plot_kpc.set_reach(reach)
|
||||
self.plot_rkc.set_reach(reach)
|
||||
self.plot_ac.set_reach(reach)
|
||||
|
||||
profile_kp = self._hs_lst.get(rows[0]).input_kp
|
||||
if profile_kp is not None:
|
||||
profile_rk = self._hs_lst.get(rows[0]).input_rk
|
||||
if profile_rk is not None:
|
||||
profiles = reach.reach\
|
||||
.get_profiles_from_kp(
|
||||
float(profile_kp)
|
||||
.get_profiles_from_rk(
|
||||
float(profile_rk)
|
||||
)
|
||||
|
||||
if len(profiles) != 0 and profiles is not None:
|
||||
profile = profiles[0]
|
||||
|
||||
self.plot_kpc.set_profile(profile)
|
||||
self.plot_rkc.set_profile(profile)
|
||||
self.plot_ac.set_profile(profile)
|
||||
else:
|
||||
self._update_clear_profile()
|
||||
@@ -308,9 +308,9 @@ class HydraulicStructuresWindow(PamhyrWindow):
|
||||
self._update_clear_all()
|
||||
|
||||
def _update_clear_all(self):
|
||||
self.plot_kpc.clear()
|
||||
self.plot_rkc.clear()
|
||||
self.plot_ac.clear()
|
||||
|
||||
def _update_clear_profile(self):
|
||||
self.plot_ac.clear()
|
||||
self.plot_kpc.clear_profile()
|
||||
self.plot_rkc.clear_profile()
|
||||
@@ -1,4 +1,4 @@
|
||||
# PlotDKP.py -- Pamhyr
|
||||
# PlotDRK.py -- Pamhyr
|
||||
# Copyright (C) 2023-2024 INRAE
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
@@ -30,10 +30,10 @@ logger = logging.getLogger()
|
||||
_translate = QCoreApplication.translate
|
||||
|
||||
|
||||
class PlotDKP(PamhyrPlot):
|
||||
class PlotDRK(PamhyrPlot):
|
||||
def __init__(self, canvas=None, trad=None, toolbar=None,
|
||||
data=None, parent=None):
|
||||
super(PlotDKP, self).__init__(
|
||||
super(PlotDRK, self).__init__(
|
||||
canvas=canvas,
|
||||
trad=trad,
|
||||
data=data,
|
||||
@@ -41,7 +41,7 @@ class PlotDKP(PamhyrPlot):
|
||||
parent=parent
|
||||
)
|
||||
|
||||
self.label_x = self._trad["kp"]
|
||||
self.label_x = self._trad["rk"]
|
||||
self.label_y = self._trad["elevation"]
|
||||
|
||||
self._isometric_axis = False
|
||||
@@ -63,41 +63,41 @@ class PlotDKP(PamhyrPlot):
|
||||
self._init = True
|
||||
|
||||
def draw_river_bottom(self):
|
||||
kp = self.data.reach.reach.get_kp()
|
||||
rk = self.data.reach.reach.get_rk()
|
||||
z_min = self.data.reach.reach.get_z_min()
|
||||
|
||||
self.line_kp_zmin = self.canvas.axes.plot(
|
||||
kp, z_min,
|
||||
self.line_rk_zmin = self.canvas.axes.plot(
|
||||
rk, z_min,
|
||||
color=self.color_plot_river_bottom,
|
||||
lw=1.
|
||||
)
|
||||
|
||||
def draw_water(self):
|
||||
if len(self.data) != 0:
|
||||
kp = self.data.get_kp()
|
||||
rk = self.data.get_rk()
|
||||
elevation = self.data.get_elevation()
|
||||
|
||||
self.line_kp_elevation = self.canvas.axes.plot(
|
||||
kp, elevation,
|
||||
self.line_rk_elevation = self.canvas.axes.plot(
|
||||
rk, elevation,
|
||||
color=self.color_plot_river_water,
|
||||
**self.plot_default_kargs
|
||||
)
|
||||
|
||||
z_min = self.data.reach.reach.get_z_min()
|
||||
geometry_kp = self.data.reach.reach.get_kp()
|
||||
geometry_rk = self.data.reach.reach.get_rk()
|
||||
|
||||
filtred_elevation = list(
|
||||
map(
|
||||
lambda x: elevation[x[0]],
|
||||
filter(
|
||||
lambda x: x[1] in geometry_kp,
|
||||
enumerate(kp)
|
||||
lambda x: x[1] in geometry_rk,
|
||||
enumerate(rk)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
self.collection = self.canvas.axes.fill_between(
|
||||
geometry_kp, z_min, filtred_elevation,
|
||||
geometry_rk, z_min, filtred_elevation,
|
||||
color=self.color_plot_river_water_zone,
|
||||
alpha=0.7, interpolate=True
|
||||
)
|
||||
@@ -31,7 +31,7 @@ class PlotDischarge(PamhyrPlot):
|
||||
parent=parent
|
||||
)
|
||||
|
||||
self.label_x = self._trad["kp"]
|
||||
self.label_x = self._trad["rk"]
|
||||
self.label_y = self._trad["discharge"]
|
||||
|
||||
self._isometric_axis = False
|
||||
@@ -55,11 +55,11 @@ class PlotDischarge(PamhyrPlot):
|
||||
self.line_discharge = []
|
||||
|
||||
if len(self.data) != 0:
|
||||
kp = self.data.get_kp()
|
||||
rk = self.data.get_rk()
|
||||
discharge = self.data.get_discharge()
|
||||
|
||||
line, = self.canvas.axes.plot(
|
||||
kp, discharge,
|
||||
rk, discharge,
|
||||
color=self.color_plot,
|
||||
**self.plot_default_kargs
|
||||
)
|
||||
@@ -76,11 +76,11 @@ class PlotDischarge(PamhyrPlot):
|
||||
|
||||
def update_data(self):
|
||||
if len(self.data) == len(self.line_discharge):
|
||||
kp = self.data.get_kp()
|
||||
rk = self.data.get_rk()
|
||||
discharge = self.data.get_discharge()
|
||||
|
||||
line, = self.canvas.axes.plot(
|
||||
kp, discharge,
|
||||
rk, discharge,
|
||||
color=self.color_plot,
|
||||
**self.plot_default_kargs
|
||||
)
|
||||
|
||||
@@ -59,7 +59,7 @@ class ComboBoxDelegate(QItemDelegate):
|
||||
list(
|
||||
map(
|
||||
str,
|
||||
self._reach.get_kp()
|
||||
self._reach.get_rk()
|
||||
)
|
||||
)
|
||||
)
|
||||
@@ -107,8 +107,8 @@ class InitialConditionTableModel(PamhyrTableModel):
|
||||
if self._headers[column] is "speed":
|
||||
z = self._lst.get(row)["elevation"]
|
||||
q = self._lst.get(row)["discharge"]
|
||||
profile = self._reach.reach.get_profiles_from_kp(
|
||||
self._lst.get(row)["kp"]
|
||||
profile = self._reach.reach.get_profiles_from_rk(
|
||||
self._lst.get(row)["rk"]
|
||||
)
|
||||
if len(profile) >= 1:
|
||||
speed = profile[0].speed(q, z)
|
||||
@@ -258,7 +258,7 @@ class InitialConditionTableModel(PamhyrTableModel):
|
||||
data = list(
|
||||
map(
|
||||
lambda p: [
|
||||
p.geometry.kp,
|
||||
p.geometry.rk,
|
||||
p.get_ts_key(ts, "Q"),
|
||||
p.get_ts_key(ts, "Z"),
|
||||
],
|
||||
|
||||
@@ -106,7 +106,7 @@ class SortCommand(QUndoCommand):
|
||||
def redo(self):
|
||||
self._ics.sort(
|
||||
reverse=self._reverse,
|
||||
key=lambda x: x["kp"]
|
||||
key=lambda x: x["rk"]
|
||||
)
|
||||
if self._indexes is None:
|
||||
self._indexes = list(
|
||||
|
||||
@@ -55,7 +55,7 @@ from View.InitialConditions.Table import (
|
||||
from View.Tools.Plot.PamhyrCanvas import MplCanvas
|
||||
from View.Tools.Plot.PamhyrToolbar import PamhyrPlotToolbar
|
||||
|
||||
from View.InitialConditions.PlotDKP import PlotDKP
|
||||
from View.InitialConditions.PlotDRK import PlotDRK
|
||||
from View.InitialConditions.PlotDischarge import PlotDischarge
|
||||
from View.InitialConditions.translate import ICTranslate
|
||||
from View.InitialConditions.DialogHeight import HeightDialog
|
||||
@@ -108,7 +108,7 @@ class InitialConditionsWindow(PamhyrWindow):
|
||||
|
||||
def setup_table(self):
|
||||
table = self.find(QTableView, f"tableView")
|
||||
self._delegate_kp = ComboBoxDelegate(
|
||||
self._delegate_rk = ComboBoxDelegate(
|
||||
reach=self._reach,
|
||||
parent=self
|
||||
)
|
||||
@@ -117,8 +117,8 @@ class InitialConditionsWindow(PamhyrWindow):
|
||||
reach=self._reach,
|
||||
table_view=table,
|
||||
table_headers=self._trad.get_dict("table_headers"),
|
||||
editable_headers=["kp", "discharge", "elevation", "height"],
|
||||
delegates={"kp": self._delegate_kp},
|
||||
editable_headers=["rk", "discharge", "elevation", "height"],
|
||||
delegates={"rk": self._delegate_rk},
|
||||
data=self._study,
|
||||
undo=self._undo_stack,
|
||||
trad=self._trad
|
||||
@@ -139,7 +139,7 @@ class InitialConditionsWindow(PamhyrWindow):
|
||||
self.plot_layout_1.addWidget(self.toolbar_1)
|
||||
self.plot_layout_1.addWidget(self.canvas_1)
|
||||
|
||||
self.plot_1 = PlotDKP(
|
||||
self.plot_1 = PlotDRK(
|
||||
canvas=self.canvas_1,
|
||||
data=self._ics,
|
||||
trad=self._trad,
|
||||
@@ -304,7 +304,7 @@ class InitialConditionsWindow(PamhyrWindow):
|
||||
lambda eic: list(
|
||||
map(
|
||||
lambda k: eic[1][k],
|
||||
["kp", "discharge", "elevation"]
|
||||
["rk", "discharge", "elevation"]
|
||||
)
|
||||
),
|
||||
filter(
|
||||
|
||||
@@ -36,11 +36,11 @@ class ICTranslate(MainTranslate):
|
||||
|
||||
self._dict["elevation"] = self._dict["unit_elevation"]
|
||||
self._dict["discharge"] = self._dict["unit_discharge"]
|
||||
self._dict["kp"] = self._dict["unit_kp"]
|
||||
self._dict["rk"] = self._dict["unit_rk"]
|
||||
|
||||
self._sub_dict["table_headers"] = {
|
||||
# "name": _translate("InitialCondition", "Name"),
|
||||
"kp": self._dict["unit_kp"],
|
||||
"rk": self._dict["unit_rk"],
|
||||
"discharge": self._dict["unit_discharge"],
|
||||
"elevation": self._dict["unit_elevation"],
|
||||
"height": self._dict["unit_height"],
|
||||
|
||||
@@ -68,12 +68,12 @@ class PlotXY(PamhyrPlot):
|
||||
tableView = self.parent.find(QTableView, f"tableView_{t}")
|
||||
table = self.parent._table[t]
|
||||
index = tableView.selectedIndexes()
|
||||
kp = self.data.get_kp()
|
||||
rk = self.data.get_rk()
|
||||
if self.parent._table is not None:
|
||||
if event.mouseevent.button.value == 1:
|
||||
table.setData(index[3], kp[closest[0]])
|
||||
table.setData(index[3], rk[closest[0]])
|
||||
if event.mouseevent.button.value == 3:
|
||||
table.setData(index[4], kp[closest[0]])
|
||||
table.setData(index[4], rk[closest[0]])
|
||||
|
||||
return
|
||||
|
||||
@@ -137,13 +137,13 @@ class PlotXY(PamhyrPlot):
|
||||
self.canvas.axes.add_collection(self.line_xy_collection)
|
||||
|
||||
def color_hightlight(self):
|
||||
kp_min, kp_max = (-1, -1)
|
||||
rk_min, rk_max = (-1, -1)
|
||||
if self._highlight_data is not None:
|
||||
kp_min, kp_max = self._highlight_data
|
||||
rk_min, rk_max = self._highlight_data
|
||||
|
||||
colors = [self.color_plot for row in range(len(self._data))]
|
||||
for i, kp in enumerate(self.data.get_kp_complete_profiles()):
|
||||
if kp_min <= kp <= kp_max:
|
||||
for i, rk in enumerate(self.data.get_rk_complete_profiles()):
|
||||
if rk_min <= rk <= rk_max:
|
||||
colors[i] = self.color_plot_current
|
||||
style = ["-" for row in range(len(self._data))]
|
||||
|
||||
|
||||
@@ -86,7 +86,7 @@ class ComboBoxDelegate(QItemDelegate):
|
||||
)
|
||||
)
|
||||
self.editor.addItems(lst)
|
||||
elif self._mode == "kp":
|
||||
elif self._mode == "rk":
|
||||
if self._data is None:
|
||||
self.editor.addItems(
|
||||
["0"]
|
||||
@@ -94,7 +94,7 @@ class ComboBoxDelegate(QItemDelegate):
|
||||
else:
|
||||
self.editor.addItems(
|
||||
list(
|
||||
map(str, self._data.reach.get_kp())
|
||||
map(str, self._data.reach.get_rk())
|
||||
)
|
||||
)
|
||||
else:
|
||||
@@ -154,10 +154,10 @@ class TableModel(PamhyrTableModel):
|
||||
if n is None:
|
||||
return self._trad['not_associated']
|
||||
return n.name
|
||||
elif self._headers[column] == "begin_kp":
|
||||
return str(self._lst.get(self._tab, row).begin_kp)
|
||||
elif self._headers[column] == "end_kp":
|
||||
return str(self._lst.get(self._tab, row).end_kp)
|
||||
elif self._headers[column] == "begin_rk":
|
||||
return str(self._lst.get(self._tab, row).begin_rk)
|
||||
elif self._headers[column] == "end_rk":
|
||||
return str(self._lst.get(self._tab, row).end_rk)
|
||||
|
||||
return QVariant()
|
||||
|
||||
@@ -189,13 +189,13 @@ class TableModel(PamhyrTableModel):
|
||||
self._lst, self._tab, row, self._data.edge(value)
|
||||
)
|
||||
)
|
||||
elif self._headers[column] == "begin_kp":
|
||||
elif self._headers[column] == "begin_rk":
|
||||
self._undo.push(
|
||||
SetBeginCommand(
|
||||
self._lst, self._tab, row, value
|
||||
)
|
||||
)
|
||||
elif self._headers[column] == "end_kp":
|
||||
elif self._headers[column] == "end_rk":
|
||||
self._undo.push(
|
||||
SetEndCommand(
|
||||
self._lst, self._tab, row, value
|
||||
|
||||
@@ -53,14 +53,14 @@ class SetBeginCommand(QUndoCommand):
|
||||
self._lcs = lcs
|
||||
self._tab = tab
|
||||
self._index = index
|
||||
self._old = self._lcs.get(self._tab, self._index).begin_kp
|
||||
self._old = self._lcs.get(self._tab, self._index).begin_rk
|
||||
self._new = float(new_value)
|
||||
|
||||
def undo(self):
|
||||
self._lcs.get(self._tab, self._index).begin_kp = float(self._old)
|
||||
self._lcs.get(self._tab, self._index).begin_rk = float(self._old)
|
||||
|
||||
def redo(self):
|
||||
self._lcs.get(self._tab, self._index).begin_kp = float(self._new)
|
||||
self._lcs.get(self._tab, self._index).begin_rk = float(self._new)
|
||||
|
||||
|
||||
class SetEndCommand(QUndoCommand):
|
||||
@@ -70,14 +70,14 @@ class SetEndCommand(QUndoCommand):
|
||||
self._lcs = lcs
|
||||
self._tab = tab
|
||||
self._index = index
|
||||
self._old = self._lcs.get(self._tab, self._index).end_kp
|
||||
self._old = self._lcs.get(self._tab, self._index).end_rk
|
||||
self._new = float(new_value)
|
||||
|
||||
def undo(self):
|
||||
self._lcs.get(self._tab, self._index).end_kp = float(self._old)
|
||||
self._lcs.get(self._tab, self._index).end_rk = float(self._old)
|
||||
|
||||
def redo(self):
|
||||
self._lcs.get(self._tab, self._index).end_kp = float(self._new)
|
||||
self._lcs.get(self._tab, self._index).end_rk = float(self._new)
|
||||
|
||||
|
||||
class SetEdgeCommand(QUndoCommand):
|
||||
|
||||
@@ -89,7 +89,7 @@ class LateralContributionWindow(PamhyrWindow):
|
||||
def setup_table(self):
|
||||
self._table = {}
|
||||
|
||||
self._delegate_kp = []
|
||||
self._delegate_rk = []
|
||||
|
||||
for t in ["liquid", "solid", "suspenssion"]:
|
||||
self._delegate_type = ComboBoxDelegate(
|
||||
@@ -100,14 +100,14 @@ class LateralContributionWindow(PamhyrWindow):
|
||||
parent=self
|
||||
)
|
||||
|
||||
delegate_kp = ComboBoxDelegate(
|
||||
delegate_rk = ComboBoxDelegate(
|
||||
data=None,
|
||||
mode="kp",
|
||||
mode="rk",
|
||||
tab=t,
|
||||
trad=self._trad,
|
||||
parent=self
|
||||
)
|
||||
self._delegate_kp.append(delegate_kp)
|
||||
self._delegate_rk.append(delegate_rk)
|
||||
|
||||
self._delegate_edge = ComboBoxDelegate(
|
||||
data=self._study.river,
|
||||
@@ -125,8 +125,8 @@ class LateralContributionWindow(PamhyrWindow):
|
||||
delegates={
|
||||
"type": self._delegate_type,
|
||||
"edge": self._delegate_edge,
|
||||
"begin_kp": delegate_kp,
|
||||
"end_kp": delegate_kp,
|
||||
"begin_rk": delegate_rk,
|
||||
"end_rk": delegate_rk,
|
||||
},
|
||||
data=self._study.river,
|
||||
undo=self._undo_stack,
|
||||
@@ -210,9 +210,9 @@ class LateralContributionWindow(PamhyrWindow):
|
||||
if edge:
|
||||
data = edge.reach
|
||||
lc = self._lcs.get(tab, rows[0])
|
||||
highlight = (lc.begin_kp, lc.end_kp)
|
||||
highlight = (lc.begin_rk, lc.end_rk)
|
||||
|
||||
for delegate in self._delegate_kp:
|
||||
for delegate in self._delegate_rk:
|
||||
delegate.data = edge
|
||||
|
||||
self.plot = PlotXY(
|
||||
|
||||
@@ -57,6 +57,6 @@ class LCTranslate(MainTranslate):
|
||||
"name": self._dict["name"],
|
||||
"type": self._dict["type"],
|
||||
"edge": self._dict["reach"],
|
||||
"begin_kp": _translate("LateralContribution", "Start (m)"),
|
||||
"end_kp": _translate("LateralContribution", "End (m)")
|
||||
"begin_rk": _translate("LateralContribution", "Start (m)"),
|
||||
"end_rk": _translate("LateralContribution", "End (m)")
|
||||
}
|
||||
@@ -191,7 +191,7 @@ class WidgetInfo(PamhyrWidget):
|
||||
n_na_hs = 0
|
||||
|
||||
for h in hs.lst:
|
||||
if h.input_reach is not None and h.input_kp is not None:
|
||||
if h.input_reach is not None and h.input_rk is not None:
|
||||
n_hs += 1
|
||||
else:
|
||||
n_na_hs += 1
|
||||
|
||||
@@ -71,14 +71,14 @@ class CustomPlot(PamhyrPlot):
|
||||
|
||||
self._axes = {}
|
||||
|
||||
def _draw_kp(self):
|
||||
def _draw_rk(self):
|
||||
results = self.data
|
||||
reach = results.river.reach(self._reach)
|
||||
kp = reach.geometry.get_kp()
|
||||
rk = reach.geometry.get_rk()
|
||||
z_min = reach.geometry.get_z_min()
|
||||
|
||||
# self.canvas.axes.set_xlim(
|
||||
# left=min(kp), right=max(kp)
|
||||
# left=min(rk), right=max(rk)
|
||||
# )
|
||||
|
||||
meter_axes = self.canvas.axes
|
||||
@@ -94,7 +94,7 @@ class CustomPlot(PamhyrPlot):
|
||||
# )
|
||||
|
||||
line = meter_axes.plot(
|
||||
kp, z_min,
|
||||
rk, z_min,
|
||||
color='grey', lw=1.,
|
||||
)
|
||||
lines["elevation"] = line
|
||||
@@ -114,14 +114,14 @@ class CustomPlot(PamhyrPlot):
|
||||
# )
|
||||
|
||||
line = meter_axes.plot(
|
||||
kp, water_z, lw=1.,
|
||||
rk, water_z, lw=1.,
|
||||
color='blue',
|
||||
)
|
||||
lines["water_elevation"] = line
|
||||
|
||||
if "elevation" in self._y:
|
||||
meter_axes.fill_between(
|
||||
kp, z_min, water_z,
|
||||
rk, z_min, water_z,
|
||||
color='blue', alpha=0.5, interpolate=True
|
||||
)
|
||||
|
||||
@@ -139,7 +139,7 @@ class CustomPlot(PamhyrPlot):
|
||||
# )
|
||||
|
||||
line = m3s_axes.plot(
|
||||
kp, q, lw=1.,
|
||||
rk, q, lw=1.,
|
||||
color='r',
|
||||
)
|
||||
lines["discharge"] = line
|
||||
@@ -312,8 +312,8 @@ class CustomPlot(PamhyrPlot):
|
||||
)
|
||||
self._axes[axes] = ax_new
|
||||
|
||||
if self._x == "kp":
|
||||
self._draw_kp()
|
||||
if self._x == "rk":
|
||||
self._draw_rk()
|
||||
elif self._x == "time":
|
||||
self._draw_time()
|
||||
|
||||
@@ -337,7 +337,7 @@ class CustomPlot(PamhyrPlot):
|
||||
def set_profile(self, profile_id):
|
||||
self._profile = profile_id
|
||||
|
||||
if self._x != "kp":
|
||||
if self._x != "rk":
|
||||
self.update()
|
||||
|
||||
def set_timestamp(self, timestamp):
|
||||
|
||||
@@ -34,7 +34,7 @@ class CustomPlotTranslate(ResultsTranslate):
|
||||
# Value type
|
||||
|
||||
self._dict['time'] = self._dict["unit_time_s"]
|
||||
self._dict['kp'] = self._dict["unit_kp"]
|
||||
self._dict['rk'] = self._dict["unit_rk"]
|
||||
self._dict['water_elevation'] = self._dict["unit_water_elevation"]
|
||||
self._dict['discharge'] = self._dict["unit_discharge"]
|
||||
self._dict['elevation'] = _translate(
|
||||
@@ -51,7 +51,7 @@ class CustomPlotTranslate(ResultsTranslate):
|
||||
# SubDict
|
||||
|
||||
self._sub_dict["values_x"] = {
|
||||
"kp": self._dict["kp"],
|
||||
"rk": self._dict["rk"],
|
||||
"time": self._dict["time"],
|
||||
}
|
||||
self._sub_dict["values_y"] = {
|
||||
|
||||
@@ -87,7 +87,7 @@ class PlotAC(PamhyrPlot):
|
||||
x = profile.geometry.get_station()
|
||||
z = profile.geometry.z()
|
||||
|
||||
self.line_kp, = self.canvas.axes.plot(
|
||||
self.line_rk, = self.canvas.axes.plot(
|
||||
x, z,
|
||||
linestyle="solid",
|
||||
lw=1.5,
|
||||
@@ -98,7 +98,7 @@ class PlotAC(PamhyrPlot):
|
||||
def draw_water_elevation(self, reach, profile):
|
||||
x = profile.geometry.get_station()
|
||||
z = profile.geometry.z()
|
||||
kp = reach.geometry.get_kp()
|
||||
rk = reach.geometry.get_rk()
|
||||
water_z = profile.get_ts_key(self._current_timestamp, "Z")
|
||||
|
||||
self.water, = self.canvas.axes.plot(
|
||||
@@ -118,7 +118,7 @@ class PlotAC(PamhyrPlot):
|
||||
def draw_water_elevation_max(self, reach, profile):
|
||||
x = profile.geometry.get_station()
|
||||
z = profile.geometry.z()
|
||||
kp = reach.geometry.get_kp()
|
||||
rk = reach.geometry.get_rk()
|
||||
water_z = max(profile.get_key("Z"))
|
||||
|
||||
self.water_max, = self.canvas.axes.plot(
|
||||
@@ -164,7 +164,7 @@ class PlotAC(PamhyrPlot):
|
||||
self.update_idle()
|
||||
|
||||
def update_river_bottom(self, reach, profile, x, z):
|
||||
self.line_kp.set_data(x, z)
|
||||
self.line_rk.set_data(x, z)
|
||||
|
||||
def update_water(self, reach, profile, x, z):
|
||||
water_z = profile.get_ts_key(self._current_timestamp, "Z")
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# PlotKPC.py -- Pamhyr
|
||||
# PlotRKC.py -- Pamhyr
|
||||
# Copyright (C) 2023-2024 INRAE
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
@@ -30,11 +30,11 @@ from PyQt5.QtCore import (
|
||||
logger = logging.getLogger()
|
||||
|
||||
|
||||
class PlotKPC(PamhyrPlot):
|
||||
class PlotRKC(PamhyrPlot):
|
||||
def __init__(self, canvas=None, trad=None, toolbar=None,
|
||||
results=None, reach_id=0, profile_id=0,
|
||||
parent=None):
|
||||
super(PlotKPC, self).__init__(
|
||||
super(PlotRKC, self).__init__(
|
||||
canvas=canvas,
|
||||
trad=trad,
|
||||
data=results,
|
||||
@@ -47,7 +47,7 @@ class PlotKPC(PamhyrPlot):
|
||||
self._current_reach_id = reach_id
|
||||
self._current_profile_id = profile_id
|
||||
|
||||
self.label_x = self._trad["unit_kp"]
|
||||
self.label_x = self._trad["unit_rk"]
|
||||
self.label_y = self._trad["unit_elevation"]
|
||||
|
||||
self.label_bottom = self._trad["label_bottom"]
|
||||
@@ -95,11 +95,11 @@ class PlotKPC(PamhyrPlot):
|
||||
def draw_bottom_with_bedload(self, reach):
|
||||
self._bedrock = self.sl_compute_bedrock(reach)
|
||||
|
||||
kp = reach.geometry.get_kp()
|
||||
rk = reach.geometry.get_rk()
|
||||
z = self.sl_compute_current_z(reach)
|
||||
|
||||
self.line_bottom, = self.canvas.axes.plot(
|
||||
kp, z,
|
||||
rk, z,
|
||||
linestyle="solid", lw=1.,
|
||||
color=self.color_plot_river_bottom,
|
||||
)
|
||||
@@ -116,7 +116,7 @@ class PlotKPC(PamhyrPlot):
|
||||
)
|
||||
|
||||
for hs in lhs:
|
||||
x = hs.input_kp
|
||||
x = hs.input_rk
|
||||
z_min = reach.geometry.get_z_min()
|
||||
z_max = reach.geometry.get_z_max()
|
||||
|
||||
@@ -190,12 +190,12 @@ class PlotKPC(PamhyrPlot):
|
||||
)
|
||||
|
||||
def draw_bottom_geometry(self, reach):
|
||||
kp = reach.geometry.get_kp()
|
||||
rk = reach.geometry.get_rk()
|
||||
z_min = reach.geometry.get_z_min()
|
||||
z_max = reach.geometry.get_z_max()
|
||||
|
||||
self.line_kp_zmin = self.canvas.axes.plot(
|
||||
kp, z_min,
|
||||
self.line_rk_zmin = self.canvas.axes.plot(
|
||||
rk, z_min,
|
||||
color=self.color_plot_river_bottom,
|
||||
lw=1.
|
||||
)
|
||||
@@ -204,7 +204,7 @@ class PlotKPC(PamhyrPlot):
|
||||
|
||||
def draw_water_elevation(self, reach):
|
||||
if len(reach.geometry.profiles) != 0:
|
||||
kp = reach.geometry.get_kp()
|
||||
rk = reach.geometry.get_rk()
|
||||
z_min = reach.geometry.get_z_min()
|
||||
|
||||
water_z = list(
|
||||
@@ -217,12 +217,12 @@ class PlotKPC(PamhyrPlot):
|
||||
)
|
||||
|
||||
self.water = self.canvas.axes.plot(
|
||||
kp, water_z,
|
||||
rk, water_z,
|
||||
lw=1., color=self.color_plot_river_water,
|
||||
)
|
||||
|
||||
self.water_fill = self.canvas.axes.fill_between(
|
||||
kp, self._river_bottom, water_z,
|
||||
rk, self._river_bottom, water_z,
|
||||
color=self.color_plot_river_water_zone,
|
||||
alpha=0.7,
|
||||
interpolate=True
|
||||
@@ -230,7 +230,7 @@ class PlotKPC(PamhyrPlot):
|
||||
|
||||
def draw_water_elevation_max(self, reach):
|
||||
if len(reach.geometry.profiles) != 0:
|
||||
kp = reach.geometry.get_kp()
|
||||
rk = reach.geometry.get_rk()
|
||||
z_min = reach.geometry.get_z_min()
|
||||
|
||||
water_z = list(
|
||||
@@ -241,20 +241,20 @@ class PlotKPC(PamhyrPlot):
|
||||
)
|
||||
|
||||
self.canvas.axes.plot(
|
||||
kp, water_z, lw=1.,
|
||||
rk, water_z, lw=1.,
|
||||
color=self.color_plot_river_water,
|
||||
linestyle='dotted',
|
||||
)
|
||||
|
||||
def draw_current(self, reach):
|
||||
kp = reach.geometry.get_kp()
|
||||
rk = reach.geometry.get_rk()
|
||||
z_min = reach.geometry.get_z_min()
|
||||
z_max = reach.geometry.get_z_max()
|
||||
|
||||
self.profile, = self.canvas.axes.plot(
|
||||
[
|
||||
kp[self._current_profile_id],
|
||||
kp[self._current_profile_id]
|
||||
rk[self._current_profile_id],
|
||||
rk[self._current_profile_id]
|
||||
],
|
||||
[
|
||||
z_max[self._current_profile_id],
|
||||
@@ -285,7 +285,7 @@ class PlotKPC(PamhyrPlot):
|
||||
|
||||
for profile, z in overflow:
|
||||
self.canvas.axes.plot(
|
||||
profile.kp, z,
|
||||
profile.rk, z,
|
||||
lw=1.,
|
||||
color=self.color_plot,
|
||||
markersize=3,
|
||||
@@ -330,7 +330,7 @@ class PlotKPC(PamhyrPlot):
|
||||
|
||||
def update_water_elevation(self):
|
||||
reach = self.results.river.reach(self._current_reach_id)
|
||||
kp = reach.geometry.get_kp()
|
||||
rk = reach.geometry.get_rk()
|
||||
z_min = reach.geometry.get_z_min()
|
||||
|
||||
water_z = list(
|
||||
@@ -343,38 +343,38 @@ class PlotKPC(PamhyrPlot):
|
||||
)
|
||||
|
||||
self.water[0].set_data(
|
||||
kp, water_z
|
||||
rk, water_z
|
||||
)
|
||||
|
||||
self.water_fill.remove()
|
||||
self.water_fill = self.canvas.axes.fill_between(
|
||||
kp, self._river_bottom, water_z,
|
||||
rk, self._river_bottom, water_z,
|
||||
color=self.color_plot_river_water_zone,
|
||||
alpha=0.7, interpolate=True
|
||||
)
|
||||
|
||||
def update_current(self):
|
||||
reach = self.results.river.reach(self._current_reach_id)
|
||||
kp = reach.geometry.get_kp()
|
||||
rk = reach.geometry.get_rk()
|
||||
z_min = reach.geometry.get_z_min()
|
||||
z_max = reach.geometry.get_z_max()
|
||||
cid = self._current_profile_id
|
||||
|
||||
self.profile.set_data(
|
||||
[kp[cid], kp[cid]],
|
||||
[rk[cid], rk[cid]],
|
||||
[z_max[cid], z_min[cid]]
|
||||
)
|
||||
self.canvas.figure.canvas.draw_idle()
|
||||
|
||||
def update_bottom_with_bedload(self):
|
||||
reach = self.results.river.reach(self._current_reach_id)
|
||||
kp = reach.geometry.get_kp()
|
||||
rk = reach.geometry.get_rk()
|
||||
z = self.sl_compute_current_z(reach)
|
||||
|
||||
self.line_bottom.remove()
|
||||
|
||||
self.line_bottom, = self.canvas.axes.plot(
|
||||
kp, z,
|
||||
rk, z,
|
||||
linestyle="solid", lw=1.,
|
||||
color=self.color_plot_river_bottom,
|
||||
)
|
||||
@@ -164,10 +164,10 @@ class PlotSedProfile(PamhyrPlot):
|
||||
|
||||
z_sl = self.get_zsl(profile)
|
||||
|
||||
self.line_kp_sl = []
|
||||
self.line_rk_sl = []
|
||||
for i, zsl in enumerate(z_sl):
|
||||
self.line_kp_sl.append(None)
|
||||
self.line_kp_sl[i], = self.canvas.axes.plot(
|
||||
self.line_rk_sl.append(None)
|
||||
self.line_rk_sl[i], = self.canvas.axes.plot(
|
||||
x, zsl,
|
||||
linestyle="solid" if i == len(z_sl) - 1 else "--",
|
||||
lw=1.8,
|
||||
|
||||
@@ -62,7 +62,7 @@ class PlotSedReach(PamhyrPlot):
|
||||
|
||||
# DEPRECATED version of sediment layser display
|
||||
# def _get_zsl(self, reach):
|
||||
# kp = reach.geometry.get_kp()
|
||||
# rk = reach.geometry.get_rk()
|
||||
# z_min = reach.geometry.get_z_min()
|
||||
# z_max = reach.geometry.get_z_max()
|
||||
|
||||
@@ -91,7 +91,7 @@ class PlotSedReach(PamhyrPlot):
|
||||
# sl.append(cur)
|
||||
|
||||
# self.canvas.axes.set_xlim(
|
||||
# left = min(kp) - 10, right = max(kp) + 10
|
||||
# left = min(rk) - 10, right = max(rk) + 10
|
||||
# )
|
||||
|
||||
# # Dummy layer with height = 0
|
||||
@@ -133,7 +133,7 @@ class PlotSedReach(PamhyrPlot):
|
||||
# return z_sl
|
||||
|
||||
def get_zsl(self, reach):
|
||||
kp = reach.geometry.get_kp()
|
||||
rk = reach.geometry.get_rk()
|
||||
z_min = reach.geometry.get_z_min()
|
||||
z_max = reach.geometry.get_z_max()
|
||||
|
||||
@@ -239,18 +239,18 @@ class PlotSedReach(PamhyrPlot):
|
||||
color='black', fontsize=10
|
||||
)
|
||||
|
||||
kp = reach.geometry.get_kp()
|
||||
rk = reach.geometry.get_rk()
|
||||
z_min = reach.geometry.get_z_min()
|
||||
z_max = reach.geometry.get_z_max()
|
||||
|
||||
z_sl = self.get_zsl(reach)
|
||||
|
||||
# Draw
|
||||
self.line_kp_sl = []
|
||||
self.line_rk_sl = []
|
||||
for i, z in enumerate(z_sl):
|
||||
self.line_kp_sl.append(None)
|
||||
self.line_kp_sl[i], = self.canvas.axes.plot(
|
||||
kp, z,
|
||||
self.line_rk_sl.append(None)
|
||||
self.line_rk_sl[i], = self.canvas.axes.plot(
|
||||
rk, z,
|
||||
linestyle="solid" if i == len(z_sl) - 1 else "--",
|
||||
lw=1.8,
|
||||
color='grey' if i == len(z_sl) - 1 else None
|
||||
|
||||
@@ -71,14 +71,14 @@ class TableModel(PamhyrTableModel):
|
||||
if self._headers[column] == "name":
|
||||
v = self._lst[row].name
|
||||
return str(v)
|
||||
elif self._headers[column] == "kp":
|
||||
v = self._lst[row].kp
|
||||
elif self._headers[column] == "rk":
|
||||
v = self._lst[row].rk
|
||||
return f"{v:.4f}"
|
||||
elif self._opt_data == "raw_data":
|
||||
p = self._lst[row]
|
||||
if self._headers[column] == "name":
|
||||
if p.name == "":
|
||||
return f"{p.kp:.4f}"
|
||||
return f"{p.rk:.4f}"
|
||||
return f"{p.name}"
|
||||
elif self._headers[column] == "water_elevation":
|
||||
v = self._lst[row].get_ts_key(self._timestamp, "Z")
|
||||
|
||||
+11
-11
@@ -48,7 +48,7 @@ from View.Tools.Plot.PamhyrToolbar import PamhyrPlotToolbar
|
||||
|
||||
from View.Results.PlotXY import PlotXY
|
||||
from View.Results.PlotAC import PlotAC
|
||||
from View.Results.PlotKPC import PlotKPC
|
||||
from View.Results.PlotRKC import PlotRKC
|
||||
from View.Results.PlotH import PlotH
|
||||
from View.Results.PlotSedReach import PlotSedReach
|
||||
from View.Results.PlotSedProfile import PlotSedProfile
|
||||
@@ -193,7 +193,7 @@ class ResultsWindow(PamhyrWindow):
|
||||
self.plot_layout_2.addWidget(self.toolbar_2)
|
||||
self.plot_layout_2.addWidget(self.canvas_2)
|
||||
|
||||
self.plot_kpc = PlotKPC(
|
||||
self.plot_rkc = PlotRKC(
|
||||
canvas=self.canvas_2,
|
||||
results=self._results,
|
||||
reach_id=0,
|
||||
@@ -201,7 +201,7 @@ class ResultsWindow(PamhyrWindow):
|
||||
trad=self._trad,
|
||||
toolbar=self.toolbar_2
|
||||
)
|
||||
self.plot_kpc.draw()
|
||||
self.plot_rkc.draw()
|
||||
|
||||
self.canvas_3 = MplCanvas(width=5, height=4, dpi=100)
|
||||
self.canvas_3.setObjectName("canvas_3")
|
||||
@@ -283,7 +283,7 @@ class ResultsWindow(PamhyrWindow):
|
||||
else:
|
||||
profile = reach.reach.profile(indexes[0].row())
|
||||
|
||||
pname = profile.name if profile.name != "" else profile.kp
|
||||
pname = profile.name if profile.name != "" else profile.rk
|
||||
|
||||
return (f"Reach: {reach.name} | " +
|
||||
f"Profile: {pname} | " +
|
||||
@@ -372,7 +372,7 @@ class ResultsWindow(PamhyrWindow):
|
||||
if reach_id is not None:
|
||||
self.plot_xy.set_reach(reach_id)
|
||||
self.plot_ac.set_reach(reach_id)
|
||||
self.plot_kpc.set_reach(reach_id)
|
||||
self.plot_rkc.set_reach(reach_id)
|
||||
self.plot_h.set_reach(reach_id)
|
||||
|
||||
for plot in self._additional_plot:
|
||||
@@ -384,7 +384,7 @@ class ResultsWindow(PamhyrWindow):
|
||||
if profile_id is not None:
|
||||
self.plot_xy.set_profile(profile_id)
|
||||
self.plot_ac.set_profile(profile_id)
|
||||
self.plot_kpc.set_profile(profile_id)
|
||||
self.plot_rkc.set_profile(profile_id)
|
||||
self.plot_h.set_profile(profile_id)
|
||||
|
||||
for plot in self._additional_plot:
|
||||
@@ -395,7 +395,7 @@ class ResultsWindow(PamhyrWindow):
|
||||
if timestamp is not None:
|
||||
self.plot_xy.set_timestamp(timestamp)
|
||||
self.plot_ac.set_timestamp(timestamp)
|
||||
self.plot_kpc.set_timestamp(timestamp)
|
||||
self.plot_rkc.set_timestamp(timestamp)
|
||||
self.plot_h.set_timestamp(timestamp)
|
||||
|
||||
for plot in self._additional_plot:
|
||||
@@ -465,12 +465,12 @@ class ResultsWindow(PamhyrWindow):
|
||||
def _reload_plots(self):
|
||||
self.plot_xy.results = self._results
|
||||
self.plot_ac.results = self._results
|
||||
self.plot_kpc.results = self._results
|
||||
self.plot_rkc.results = self._results
|
||||
self.plot_h.results = self._results
|
||||
|
||||
self.plot_xy.draw()
|
||||
self.plot_ac.draw()
|
||||
self.plot_kpc.draw()
|
||||
self.plot_rkc.draw()
|
||||
self.plot_h.draw()
|
||||
|
||||
def _reload_slider(self):
|
||||
@@ -606,7 +606,7 @@ class ResultsWindow(PamhyrWindow):
|
||||
with open(file_name, 'w', newline='') as csvfile:
|
||||
writer = csv.writer(csvfile, delimiter=',',
|
||||
quotechar='|', quoting=csv.QUOTE_MINIMAL)
|
||||
writer.writerow(["name", "kp", "data-file"])
|
||||
writer.writerow(["name", "rk", "data-file"])
|
||||
for profile in reach.profiles:
|
||||
p_file_name = os.path.join(
|
||||
directory,
|
||||
@@ -615,7 +615,7 @@ class ResultsWindow(PamhyrWindow):
|
||||
|
||||
writer.writerow([
|
||||
profile.name,
|
||||
profile.kp,
|
||||
profile.rk,
|
||||
p_file_name
|
||||
])
|
||||
|
||||
|
||||
@@ -50,7 +50,7 @@ class ResultsTranslate(MainTranslate):
|
||||
|
||||
self._sub_dict["table_headers_profile"] = {
|
||||
"name": self._dict["name"],
|
||||
"kp": self._dict["unit_kp"],
|
||||
"rk": self._dict["unit_rk"],
|
||||
}
|
||||
|
||||
self._sub_dict["table_headers_raw_data"] = {
|
||||
|
||||
@@ -42,8 +42,8 @@ class Plot(PamhyrPlot):
|
||||
|
||||
self.label_y = self._trad["height"]
|
||||
|
||||
self.line_kp_zmin = None
|
||||
self.line_kp_sl = []
|
||||
self.line_rk_zmin = None
|
||||
self.line_rk_sl = []
|
||||
|
||||
self._isometric_axis = False
|
||||
|
||||
@@ -73,8 +73,8 @@ class Plot(PamhyrPlot):
|
||||
self.canvas.axes.set_xlim(*x)
|
||||
|
||||
for i, zsl in enumerate(reversed(z_sl)):
|
||||
self.line_kp_sl.append(None)
|
||||
self.line_kp_sl[i], = self.canvas.axes.plot(
|
||||
self.line_rk_sl.append(None)
|
||||
self.line_rk_sl[i], = self.canvas.axes.plot(
|
||||
x, zsl,
|
||||
label=names[-(i+1)],
|
||||
linestyle="solid" if i == len(names) - 1 else "--",
|
||||
|
||||
@@ -43,11 +43,11 @@ class Plot(PamhyrPlot):
|
||||
parent=parent
|
||||
)
|
||||
|
||||
self.label_x = self._trad["kp"]
|
||||
self.label_x = self._trad["rk"]
|
||||
self.label_y = self._trad["height"]
|
||||
|
||||
self.line_kp_zmin = None
|
||||
self.line_kp_sl = []
|
||||
self.line_rk_zmin = None
|
||||
self.line_rk_sl = []
|
||||
|
||||
self._isometric_axis = False
|
||||
|
||||
@@ -71,12 +71,12 @@ class Plot(PamhyrPlot):
|
||||
self._init = True
|
||||
|
||||
def draw_data(self):
|
||||
kp = self.data.get_kp()
|
||||
rk = self.data.get_rk()
|
||||
sl = self.data.get_sl()
|
||||
z_min = self.data.get_z_min()
|
||||
|
||||
self.canvas.axes.set_xlim(
|
||||
left=min(kp), right=max(kp)
|
||||
left=min(rk), right=max(rk)
|
||||
)
|
||||
|
||||
z_sl = reduce(
|
||||
@@ -93,9 +93,9 @@ class Plot(PamhyrPlot):
|
||||
)
|
||||
|
||||
for i, z in enumerate(reversed(z_sl)):
|
||||
self.line_kp_sl.append(None)
|
||||
self.line_kp_sl[i], = self.canvas.axes.plot(
|
||||
kp, z,
|
||||
self.line_rk_sl.append(None)
|
||||
self.line_rk_sl[i], = self.canvas.axes.plot(
|
||||
rk, z,
|
||||
linestyle="solid" if i == len(z_sl) - 1 else "--",
|
||||
lw=1.5,
|
||||
color='grey' if i == len(z_sl) - 1 else None
|
||||
|
||||
@@ -46,8 +46,8 @@ class Plot(PamhyrPlot):
|
||||
self.label_x = self._trad["x"]
|
||||
self.label_y = self._trad["height"]
|
||||
|
||||
self.line_kp_zmin = None
|
||||
self.line_kp_sl = []
|
||||
self.line_rk_zmin = None
|
||||
self.line_rk_sl = []
|
||||
|
||||
self._isometric_axis = False
|
||||
|
||||
@@ -86,8 +86,8 @@ class Plot(PamhyrPlot):
|
||||
)
|
||||
|
||||
for i, zsl in enumerate(reversed(z_sl)):
|
||||
self.line_kp_sl.append(None)
|
||||
self.line_kp_sl[i], = self.canvas.axes.plot(
|
||||
self.line_rk_sl.append(None)
|
||||
self.line_rk_sl[i], = self.canvas.axes.plot(
|
||||
x, zsl,
|
||||
linestyle="solid" if i == len(z_sl) - 1 else "--",
|
||||
lw=1.8,
|
||||
|
||||
@@ -91,7 +91,7 @@ class ProfileSedimentLayersWindow(PamhyrWindow):
|
||||
if pname == "":
|
||||
pname = _translate(
|
||||
"SedimentLayers",
|
||||
"(no name - @kp)").replace("@kp", str(self._profile.kp)
|
||||
"(no name - @rk)").replace("@rk", str(self._profile.rk)
|
||||
)
|
||||
|
||||
return (
|
||||
|
||||
@@ -101,8 +101,8 @@ class TableModel(PamhyrTableModel):
|
||||
|
||||
if self._headers[column] == "name":
|
||||
return self._data.profile(row).name
|
||||
if self._headers[column] == "kp":
|
||||
return self._data.profile(row).kp
|
||||
if self._headers[column] == "rk":
|
||||
return self._data.profile(row).rk
|
||||
if self._headers[column] == "sl":
|
||||
value = self._data.profile(row).sl
|
||||
if value is None:
|
||||
|
||||
@@ -34,11 +34,11 @@ class SedimentReachTranslate(SedimentTranslate):
|
||||
"SedimentLayers", "Apply sediment layers to reach"
|
||||
)
|
||||
|
||||
self._dict["kp"] = self._dict["unit_kp"]
|
||||
self._dict["rk"] = self._dict["unit_rk"]
|
||||
self._dict["height"] = self._dict["unit_height"]
|
||||
|
||||
self._sub_dict["table_headers"] = {
|
||||
"name": self._dict["name"],
|
||||
"kp": self._dict["unit_kp"],
|
||||
"rk": self._dict["unit_rk"],
|
||||
"sl": _translate("SedimentLayers", "Sediment layers"),
|
||||
}
|
||||
@@ -52,7 +52,8 @@ class UnitTranslate(CommonWordTranslate):
|
||||
def __init__(self):
|
||||
super(UnitTranslate, self).__init__()
|
||||
|
||||
self._dict["unit_kp"] = _translate("Unit", "Position (m)")
|
||||
self._dict["unit_rk"] = _translate("Unit", "River Kilometric (m)")
|
||||
self._dict["unit_rk_short"] = _translate("Unit", "RK (m)")
|
||||
self._dict["unit_width"] = _translate("Unit", "Width (m)")
|
||||
self._dict["unit_height"] = _translate("Unit", "Height (m)")
|
||||
self._dict["unit_diameter"] = _translate("Unit", "Diameter (m)")
|
||||
|
||||
@@ -90,7 +90,7 @@
|
||||
<addaction name="action_down"/>
|
||||
<addaction name="action_export"/>
|
||||
<addaction name="action_meshing"/>
|
||||
<addaction name="action_update_kp"/>
|
||||
<addaction name="action_update_rk"/>
|
||||
<addaction name="action_purge"/>
|
||||
</widget>
|
||||
<action name="action_import">
|
||||
@@ -210,12 +210,12 @@
|
||||
<string>Meshing</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="action_update_kp">
|
||||
<action name="action_update_rk">
|
||||
<property name="text">
|
||||
<string>Update KP</string>
|
||||
<string>Update RK</string>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Recompute KP</string>
|
||||
<string>Recompute RK</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="action_purge">
|
||||
|
||||
@@ -170,7 +170,7 @@
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QComboBox" name="comboBox_begin_kp">
|
||||
<widget class="QComboBox" name="comboBox_begin_rk">
|
||||
<property name="enabled">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
@@ -191,7 +191,7 @@
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QComboBox" name="comboBox_end_kp">
|
||||
<widget class="QComboBox" name="comboBox_end_rk">
|
||||
<property name="enabled">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
|
||||
+9
-9
@@ -754,27 +754,27 @@
|
||||
<translation>Stricklers</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../View/ui/UpdateKPOptions.ui" line="30"/>
|
||||
<location filename="../View/ui/UpdateRKOptions.ui" line="30"/>
|
||||
<source>Distance computation</source>
|
||||
<translation>Calcule des distances</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../View/ui/UpdateKPOptions.ui" line="46"/>
|
||||
<location filename="../View/ui/UpdateRKOptions.ui" line="46"/>
|
||||
<source>Second guide-line</source>
|
||||
<translation>Deuxième ligne directrice</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../View/ui/UpdateKPOptions.ui" line="63"/>
|
||||
<location filename="../View/ui/UpdateRKOptions.ui" line="63"/>
|
||||
<source>First guide-line</source>
|
||||
<translation>Première ligne directrice</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../View/ui/UpdateKPOptions.ui" line="73"/>
|
||||
<location filename="../View/ui/UpdateRKOptions.ui" line="73"/>
|
||||
<source>Origin</source>
|
||||
<translation>Origine</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../View/ui/UpdateKPOptions.ui" line="80"/>
|
||||
<location filename="../View/ui/UpdateRKOptions.ui" line="80"/>
|
||||
<source>Origin value</source>
|
||||
<translation>Valeur de l'origine</translation>
|
||||
</message>
|
||||
@@ -2423,12 +2423,12 @@
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../View/ui/GeometryReach.ui" line="258"/>
|
||||
<source>Update KP</source>
|
||||
<source>Update RK</source>
|
||||
<translation>Mise à jour des PK</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../View/ui/GeometryReach.ui" line="261"/>
|
||||
<source>Recompute KP</source>
|
||||
<source>Recompute RK</source>
|
||||
<translation>Recalcule des PK</translation>
|
||||
</message>
|
||||
<message>
|
||||
@@ -2684,8 +2684,8 @@
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../View/SedimentLayers/Reach/Profile/Window.py" line="92"/>
|
||||
<source>(no name - @kp)</source>
|
||||
<translation>(sans nom - @kp)</translation>
|
||||
<source>(no name - @rk)</source>
|
||||
<translation>(sans nom - @rk)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../View/SedimentLayers/Reach/Profile/translate.py" line="40"/>
|
||||
|
||||
Reference in new issue
Block a user