mirror of https://gitlab.com/pamhyr/pamhyr2
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'
parent
d6aeb5df21
commit
a88a164ead
|
|
@ -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)
|
||||
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
|
|||
Loading…
Reference in New Issue