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

[Synthèse] Pas d'affichage des geom en mode "point" lorsqu'on applique un filtre #2536

Closed
xavyeah39 opened this issue May 9, 2023 · 16 comments
Assignees
Milestone

Comments

@xavyeah39
Copy link
Contributor

Salut,
Merci pour le job sur ces dernières versions !

Je rencontre quand même un bug plutôt gênant pour l'utilisation de la synthèse :

Lorsque j'applique un filtre sur les données de la synthèse (taxons, communes ou autres) j'ai bien les résultats correspondants dans la liste mais aucun ne s'affiche sur la carte.
Lorsque l'on sélectionne une occurence dans la liste ce message s'affiche en modale :

image

Je précise que cela se produit sans être passé en mode maille.
Certains ont-ils déjà rencontré ce problème ?

NB : L’appellation mode "point" n'est-elle pas un peu trompeuse ? : on peut avoir des geom autres que des points sans être en mode maille

Version
2.12.2

Comportement attendue
Affichage des geom des résultats sur la carte lorsqu'on applique un filtre

Comment reproduire
Faire une recherche par filtre dans la synthèse => rien sur la carte mais résultats OK dans la liste
Sélectionner un résultat de la liste pour afficher la popup d'erreur

@xavyeah39 xavyeah39 added the bug label May 9, 2023
@TheoLechemia
Copy link
Member

TheoLechemia commented May 10, 2023

Hello,

Est ce que tu peux vérifier que les obs que tu as sur la liste sont bien interesectées par une maille dans gn_synthese.cor_area_synthese (et mieux, par la maille de dégradation) ? Ce message d'erreur est censé s'afficher quand tu as des obs en dehors de ton périmètre de maille (on l'a pour les obs à l'étranger nous)

@xavyeah39
Copy link
Contributor Author

Oui oui il a bien les relations aux mailles dans cor_area_synthese et elles sont bien présentent (et active) dans l_areas.
Et aucune obs listées suite à une recherche ne s'affiche sur la carte...

@camillemonchicourt
Copy link
Member

Normalement ce message ne s'affiche que si on est en mode MAILLES et que l'on clique sur une observation qui est en dehors de la zone de couverture de la couche des mailles. Voir #2495.

J'ai testé sur le serveur de DEMO et pas reproduis.
Tu reproduis sur le serveur de démo ?

@xavyeah39
Copy link
Contributor Author

xavyeah39 commented May 10, 2023

Non je ne reproduis pas sur la démo en effet.
Mais je suis pas en mode maille pourtant. Mais quand je passe en mode maille, celles-ci s'affichent bien...

@bouttier
Copy link
Contributor

Je suis d’accord sur l’ambigüité et propose « passez en mode 'point' » → « désactivez le mode maille »

Est-ce que tu as une erreur dans la console du navigateur ? Est-ce que si tu inspectes la réponse de l’API, celle-ci contient bien les géométries des observations ?

@xavyeah39
Copy link
Contributor Author

Alors je suis pas expert pour checker ça mais il me semble que oui, la réponse de l'API contient des geom :
image

Et oui, j'ai bien des erreurs dans la console :
image

image

@xavyeah39
Copy link
Contributor Author

Problème identifié avec @TheoLechemia :
L'erreur se produit lorsque des observations dans la synthèse ont des geom de type MultiPoint qui n'est pas géré côté frontend dans leaflet.

Dans notre cas, toutes ces geom MultiPoint sont en réalité des Point (pas de multi-parties) on peut contourner le soucis en modifiant le type de the_geom_4326 en POINT :

-- On vérifie qu'il n'y ai pas des geom MultiPoint avec plusieurs parties :
SELECT id_synthese
FROM gn_synthese.synthese s 
WHERE st_geometrytype(the_geom_4326)='ST_MultiPoint'
AND st_numgeometries(the_geom_4326) > 1

-- On modifie la geom 4326 (utilisée par le front) pour la passer en type Point :
UPDATE gn_synthese.synthese s
SET the_geom_4326 = st_geometryn(the_geom_4326,1)::geometry(POINT,4326)
WHERE st_geometrytype(the_geom_4326)='ST_MultiPoint'
AND st_numgeometries(the_geom_4326) = 1

@TheoLechemia TheoLechemia modified the milestones: 2.13, 2.14 Jun 21, 2023
@gildeluermoz
Copy link
Contributor

Bonjour,
Même soucis sur l'une de mes instances et seulement pour certaines observations. En inspectant les données, je ne comprenais pas d'où ça venait. Je vais modifier les données et tout mettre en point.
Est-ce que vous savez si ça fonctionne avec les multilinestring et les multipolygons car il y en a beaucoup également ?
Merci @xavyeah39 et @TheoLechemia pour l'identification du soucis

@camillemonchicourt
Copy link
Member

C'est certainement solutionnable. A creuser...

@gildeluermoz
Copy link
Contributor

Petite précisions : j'ai corrigé 2344 multipoints et sur une réponse de 2774 résultats, aucun ne s'affichait. Après conversion en points avec la requête de Xavier, tout s'affiche.
A priori donc, si un seul multipoint est présent dans le résultat, ça bloque l'affichage de l'ensemble.

@gildeluermoz
Copy link
Contributor

gildeluermoz commented Jun 24, 2023

En complément de la requête corrective de Xavier, voici une requête pour analyser ses geometries :

--Compter le nombre d'observations par type de géometrie
SELECT count(*), st_geometrytype(the_geom_4326)
FROM gn_synthese.synthese s 
GROUP BY st_geometrytype(the_geom_4326);

@camillemonchicourt
Copy link
Member

Oui c'est du à la manière dont les géométries sont renvoyées depuis la mise en place de leur agrégation dans la version 2.12 de GeoNature : #1878
Cela doit poser soucis pour les multi-géométries et renvoyer un geojson invalide dès qu'une des géométries est de type multiple.

@gildeluermoz
Copy link
Contributor

Ok, donc ça concernerait aussi toutes les geom en MultiLineSting et MultiPolygon ?

@jpm-cbna
Copy link
Contributor

Nous avons essayé de reproduire le problème sur la base du SINP AURA mais qui fonctionne sur la branche "feat/sinp".

Nous avions ces types de géométrie:

count   |st_geometrytype      |
--------+---------------------+
      94|ST_GeometryCollection|
    3618|ST_LineString        |
       8|ST_MultiLineString   |
     442|ST_MultiPoint        |
 1827820|ST_MultiPolygon      |
20693109|ST_Point             |
  166745|ST_Polygon           |
   12351|                     |

Toutes les géométries sont correctement affichées sur la carte sauf "ST_GeometryCollection" qui ne s'affiche pas. Nous avons résolu le problème en mettant à jour la géométrie avec cette requête:

UPDATE gn_synthese.synthese SET 
    the_geom_4326 = st_collectionextract(the_geom_4326), 
    the_geom_local = st_collectionextract(the_geom_local)
WHERE st_geometrytype(the_geom_4326) = 'ST_GeometryCollection' ;

Du coup, nous allons maintenant rapatrier ces observations dans une base GeoNature de la branche "develop" et chercher à reproduire le problème.

Ce qui est étrange c'est que le mode Multipoint est géré côté frontend: https://github.com/PnX-SI/GeoNature/blob/master/frontend/src/app/syntheseModule/synthese-results/synthese-carte/synthese-carte.component.ts#L297-L299. Mais je pense que le problème est dans le frontend quelque part par là.

@camillemonchicourt
Copy link
Member

Je pense que le soucis est la manière dont les géométries sont renvoyées au frontend et pas le frontend lui-même.
Mais j'y connais rien. 😀

@camillemonchicourt
Copy link
Member

Corrigé dans la 2.13.0.
Cela a nécessité de revenir à l'utilisation des circle marker plutôt que le marker customisé, afin d'éviter d'avoir à gérer de multiple cas (si point, si multipoints etc...).

image

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

No branches or pull requests

6 participants