Adists: LC: Update for scenario.

scenarios
Pierre-Antoine 2025-08-14 10:52:47 +02:00
parent 4a0456cbce
commit 89a898410f
1 changed files with 25 additions and 14 deletions

View File

@ -46,7 +46,7 @@ class LateralContributionAdisTS(SQLSubModel):
self._status = status self._status = status
self._pollutant = pollutant self._pollutant = pollutant
self._edge = None self._reach = None
self._begin_rk = 0.0 self._begin_rk = 0.0
self._end_rk = 0.0 self._end_rk = 0.0
self._data = [] self._data = []
@ -149,7 +149,7 @@ class LateralContributionAdisTS(SQLSubModel):
@classmethod @classmethod
def _db_load(cls, execute, data=None): def _db_load(cls, execute, data=None):
new = [] new = []
status = data['status']
scenario = data["scenario"] scenario = data["scenario"]
loaded = data['loaded_pid'] loaded = data['loaded_pid']
@ -157,7 +157,8 @@ class LateralContributionAdisTS(SQLSubModel):
return new return new
table = execute( table = execute(
"SELECT pamhyr_id, pollutant, reach, begin_rk, end_rk " + "SELECT pamhyr_id, pollutant, reach, " +
"begin_rk, end_rk, scenario " +
"FROM lateral_contribution_adists " + "FROM lateral_contribution_adists " +
f"WHERE scenario = {scenario.id} " + f"WHERE scenario = {scenario.id} " +
f"AND pamhyr_id NOT IN ({', '.join(map(str, loaded))}) " f"AND pamhyr_id NOT IN ({', '.join(map(str, loaded))}) "
@ -165,15 +166,25 @@ class LateralContributionAdisTS(SQLSubModel):
if table is not None: if table is not None:
for row in table: for row in table:
it = iter(row)
pid = next(it)
pollutant = next(it)
reach = next(it)
brk = next(it)
erk = next(it)
owner_scenario = next(it)
lca = cls( lca = cls(
id=row[0], id=pid,
pollutant=row[1], pollutant=pollutant,
status=data['status'] status=status,
owner_scenario=owner_scenario
) )
lca.edge = row[2] lca.reach = reach
lca.begin_rk = row[3] lca.begin_rk = brk
lca.end_rk = row[4] lca.end_rk = erk
values = execute( values = execute(
"SELECT data0, data1 " + "SELECT data0, data1 " +
@ -185,12 +196,13 @@ class LateralContributionAdisTS(SQLSubModel):
# Write data # Write data
for v in values: for v in values:
data0 = lca._types[0](v[0]) data0 = lca._types[0](v[1])
data1 = lca._types[1](v[1]) data1 = lca._types[1](v[2])
# Replace data at pos ind # Replace data at pos ind
lca._data.append((data0, data1)) lca._data.append((data0, data1))
new.append(lc) loaded.add(pid)
new.append(lca)
data["scenario"] = scenario.parent data["scenario"] = scenario.parent
new += cls._db_load(execute, data) new += cls._db_load(execute, data)
@ -213,7 +225,7 @@ class LateralContributionAdisTS(SQLSubModel):
f"AND scenario = {self._status.scenario_id}" f"AND scenario = {self._status.scenario_id}"
) )
sql = ( execute(
"INSERT INTO " + "INSERT INTO " +
"lateral_contribution_adists(id, " + "lateral_contribution_adists(id, " +
"pollutant, reach, begin_rk, end_rk, scenario) " + "pollutant, reach, begin_rk, end_rk, scenario) " +
@ -223,7 +235,6 @@ class LateralContributionAdisTS(SQLSubModel):
f"{self._status.scenario_id}" + f"{self._status.scenario_id}" +
")" ")"
) )
execute(sql)
for d in self._data: for d in self._data:
data0 = self._db_format(str(d[0])) data0 = self._db_format(str(d[0]))