You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Que ce soit dans la liste des ZH ou sur la fiche ZH, la liste des Bassins versants d'une ZH est ordonnée par l'identifiant du bassin versant.
Je pense qu'il serait intéressant de les ordonnées selon la surface de recouvrement de la ZH sur chaque bassin.
Par exemple dans le cas de cette ZH:
Le BV entouré en rouge est placé avant l'autre BV qui correspond à plus de 85% de la ZH.
En soit les informations de la fiche sont justes, mais le fait que le bassin versant principal ne soit pas mis en premier peut questionner.
On a eu le cas de la RNN de la Dranse avec le BV de la Dranse qui apparaissait en second et qui m'a valu quelques questions.
Dans la liste des ZH actuellement (j'ai étiré la colonne, mais par défaut, seul 1 BV est visible sur les 2) :
Le résultat attendu :
et le résultat attendu dans la fiche ZH
Cela peut être corrigé facilement dans le fichier cards.py et dans le fichier zh_schema.py en ajoutant une clause order_by et en comparant la taille du recouvrement de la ZH sur le BV par rapport à la taille totale de la ZH :
def __get_hydro_zones(self):
return [
name
for (name,) in DB.session.execute(
select(THydroArea.name).where(
THydroArea.id_hydro == CorZhHydro.id_hydro,
CorZhHydro.id_zh == self.id_zh,
TZH.id_zh == self.id_zh
)
.order_by((func.ST_Area(func.ST_Intersection(TZH.geom, THydroArea.geom))/ func.ST_Area(TZH.geom)).desc())
).all()
]
def bassin_versant(self):
bassin_versant = [
name
for name in DB.session.scalars(
select(TRiverBasin.name).where(
TRiverBasin.id_rb == CorZhRb.id_rb,
CorZhRb.id_zh == self.id_zh,
TZH.id_zh == self.id_zh
)
.order_by((func.ST_Area(func.ST_Intersection(TZH.geom, TRiverBasin.geom))/ func.ST_Area(TZH.geom)).desc())
).all()
]
return ", ".join([str(item) for item in bassin_versant])
Il ne faut pas oublier d'importer les fonctions depuis sqlalchemy.sql dans le fichier cards.py : from sqlalchemy.sql import select, func
Je me demande toutefois si c'est la façon la plus optimale de faire les choses ?
Est-ce qu'il ne faudrait pas ajouter une information directement en base ?
A débattre
The text was updated successfully, but these errors were encountered:
Que ce soit dans la liste des ZH ou sur la fiche ZH, la liste des Bassins versants d'une ZH est ordonnée par l'identifiant du bassin versant.
Je pense qu'il serait intéressant de les ordonnées selon la surface de recouvrement de la ZH sur chaque bassin.
Par exemple dans le cas de cette ZH:
Le BV entouré en rouge est placé avant l'autre BV qui correspond à plus de 85% de la ZH.
En soit les informations de la fiche sont justes, mais le fait que le bassin versant principal ne soit pas mis en premier peut questionner.
On a eu le cas de la RNN de la Dranse avec le BV de la Dranse qui apparaissait en second et qui m'a valu quelques questions.
Dans la liste des ZH actuellement (j'ai étiré la colonne, mais par défaut, seul 1 BV est visible sur les 2) :
Le résultat attendu :
et le résultat attendu dans la fiche ZH
Cela peut être corrigé facilement dans le fichier cards.py et dans le fichier zh_schema.py en ajoutant une clause
order_by
et en comparant la taille du recouvrement de la ZH sur le BV par rapport à la taille totale de la ZH :Il ne faut pas oublier d'importer les fonctions depuis
sqlalchemy.sql
dans le fichiercards.py
:from sqlalchemy.sql import select, func
Je me demande toutefois si c'est la façon la plus optimale de faire les choses ?
Est-ce qu'il ne faudrait pas ajouter une information directement en base ?
A débattre
The text was updated successfully, but these errors were encountered: