Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Pb recherche par Département et Bassin-versant #97

Closed
raphaelloiseau opened this issue Nov 27, 2024 · 1 comment
Closed

Pb recherche par Département et Bassin-versant #97

raphaelloiseau opened this issue Nov 27, 2024 · 1 comment

Comments

@raphaelloiseau
Copy link

GN 2.4.3 - ZH 1.3.1

Les recherches de zones humides par département ou bassin-versant rencontrent une erreur :
image

C'est la fonction "filter_area" dans search.py qui récupère l'information du département.

def filter_area(query, json: dict, type_code: str):
codes = [area.get("code", None) for area in json]
if any(code is None for code in codes):
return query
# Filter on departments
subquery = (
select(LAreas.area_name, LAreas.geom, LAreas.id_type, BibAreasTypes.type_code)
.join(BibAreasTypes, LAreas.id_type == BibAreasTypes.id_type)
.where(BibAreasTypes.type_code == type_code, LAreas.area_code.in_(codes))
.subquery()
)
# Filter on geom.
# Need to use (c) on subquery to get the column
query = query.where(
func.ST_Transform(func.ST_SetSRID(TZH.geom, 4326), 2154).ST_Intersects(subquery.c.geom)
)
return query

Elle est aussi utilisée pour les communes qui contrairement aux départements est en choix multiple dans la recherche.
Pour les département (choix unique) : codes = [area.get("code") for area in json] est reconnu comme un string (au lieu d'une liste)
(alors que cela marche pour les communes)

J'ai ainsi séparer les deux fonctions :

  • filter_dept : avec codes = [json.get("code")]
  • filter_com : avec codes = [area.get("code") for area in json]

il faut aussi changer :

De même pour les bassins versant (choix unique):

codes = [area.get("code", None) for area in json]

Changer : codes = [area.get("code") for area in json] par codes = [json.get("code")]

Je ne suis pas trop sur de mes modifs mais les deux recherches marchent bien !

@JulienCorny
Copy link
Contributor

Bonjour,

Merci pour le retour, cette erreur est corrigée et mergée sur la branche develop (#87) et sera intégrée à la prochaine release du module qui sera publiée cette semaine

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants