GeometryProfilesXYZ: assignment of interpolated attribute, False by default, True when profile is created with mesh, and for the load of database, False by default, True when name starts with 'interpol'

This commit is contained in:
Dylan Jeannin committed 2026-09-01 16:29:43 +02:00
1 parent d6aeb5df21
commit a88a164ead
2 files changed
+40 -8

No files matched your search

+1
View File
@@ -141,6 +141,7 @@ class InternalMeshing(AMeshingTool):
dj*(profiles[i+1].rk -
profiles[i].rk)
p.name = f'interpol{p.rk}'
p.interpolated = True
new_profiles2.append(p)
new_profiles.append(new_profiles2)
+39 -8
View File
@@ -59,7 +59,7 @@ class ProfileXYZ(Profile, SQLSubModel):
nb_point: int = 0,
code1: int = 0, code2: int = 0,
status=None, owner_scenario=-1,
enabled=True):
enabled=True, interpolated=False):
"""ProfileXYZ constructor
Args:
@@ -92,6 +92,7 @@ class ProfileXYZ(Profile, SQLSubModel):
self._station = []
self.station_up_to_date = False
self._enabled = bool(enabled)
self._interpolated = bool(interpolated)
self._get_water_limits_cache = {}
self._get_water_limits_ac_cache = {}
@@ -111,6 +112,7 @@ class ProfileXYZ(Profile, SQLSubModel):
code2 INTEGER NOT NULL,
sl INTEGER,
enabled BOOLEAN NOT NULL DEFAULT TRUE,
interpolated BOOLEAN NOT NULL DEFAULT FALSE,
{Scenario.create_db_add_scenario()},
{Scenario.create_db_add_scenario_fk()},
FOREIGN KEY(reach) REFERENCES river_reach(pamhyr_id),
@@ -162,6 +164,20 @@ class ProfileXYZ(Profile, SQLSubModel):
"ADD COLUMN enabled BOOLEAN NOT NULL DEFAULT TRUE"
)
if major == "0" and (int(minor) < 2 or
(minor == "2" and int(release) < 10)):
if minor != "0":
execute(
"ALTER TABLE geometry_profileXYZ " +
"ADD COLUMN interpolated BOOLEAN NOT NULL DEFAULT FALSE"
)
execute(
"UPDATE geometry_profileXYZ " +
"SET interpolated = CASE " +
"WHEN LOWER(name) LIKE 'interpol%' THEN TRUE " +
"ELSE FALSE END"
)
return cls._update_submodel(execute, version, data)
@classmethod
@@ -247,7 +263,7 @@ class ProfileXYZ(Profile, SQLSubModel):
table = execute(
"SELECT pamhyr_id, ind, deleted, name, rk, num, " +
"code1, code2, sl, scenario, enabled " +
"code1, code2, sl, scenario, enabled, interpolated " +
"FROM geometry_profileXYZ " +
f"WHERE reach = {reach.id} " +
f"AND scenario = {scenario.id} " +
@@ -269,6 +285,7 @@ class ProfileXYZ(Profile, SQLSubModel):
sl = next(it)
owner_scenario = next(it)
enabled = (next(it) == 1)
interpolated = (next(it) == 1)
profile = cls(
id=pid, ind=ind, num=num,
@@ -277,7 +294,8 @@ class ProfileXYZ(Profile, SQLSubModel):
reach=reach,
status=status,
owner_scenario=owner_scenario,
enabled=enabled
enabled=enabled,
interpolated=interpolated
)
if deleted:
profile.set_as_deleted()
@@ -330,13 +348,14 @@ class ProfileXYZ(Profile, SQLSubModel):
execute(
"INSERT OR REPLACE INTO " +
"geometry_profileXYZ(pamhyr_id, deleted, ind, name, reach, " +
"rk, num, code1, code2, sl, scenario, enabled) " +
"rk, num, code1, code2, sl, scenario, enabled, interpolated) " +
"VALUES (" +
f"{self.pamhyr_id}, {self._db_format(self.is_deleted())}, " +
f"{ind}, '{self._db_format(self._name)}', " +
f"{self.reach.pamhyr_id}, {self.rk}, {self.num}, " +
f"{self.code1}, {self.code1}, {sl}, {self._status.scenario_id}, " +
f"{self._db_format(self._enabled)}" +
f"{self._db_format(self._enabled)}, " +
f"{self._db_format(self._interpolated)}" +
")"
)
@@ -404,7 +423,8 @@ class ProfileXYZ(Profile, SQLSubModel):
rk=self.rk,
reach=self.reach,
status=self._status,
enabled=self.is_enabled
enabled=self.is_enabled,
interpolated=self.interpolated
)
if self.is_deleted():
new_p.set_as_deleted()
@@ -425,7 +445,8 @@ class ProfileXYZ(Profile, SQLSubModel):
rk=self.rk,
reach=new_reach,
status=self._status,
enabled=self.is_enabled
enabled=self.is_enabled,
interpolated=self.interpolated
)
if self.is_deleted():
new_p.set_as_deleted()
@@ -1147,7 +1168,8 @@ class ProfileXYZ(Profile, SQLSubModel):
rk=self.rk,
reach=self.reach,
status=self._status,
enabled=self.is_enabled)
enabled=self.is_enabled,
interpolated=self.interpolated)
for i, k in enumerate(self.points):
p.insert_point(i, k.copy())
@@ -1194,3 +1216,12 @@ class ProfileXYZ(Profile, SQLSubModel):
def enabled(self, value):
self._enabled = bool(value)
self.modified()
@property
def interpolated(self):
return self._interpolated
@interpolated.setter
def interpolated(self, value):
self._interpolated = bool(value)
self.modified()