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