-
Notifications
You must be signed in to change notification settings - Fork 99
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
Communes limitrophes et intersection #716
Comments
Oui en effet si la limite est exactement la même, il faudrait mieux pas inclure les zonages limitrophes. |
Intégré dans la version 2.4.0 à venir car ce mécanisme est mieux en effet. Un SQL permet de nettoyer les données existantes (#719 (comment)) mais à utiliser avec vigilance car il peut supprimer les associations aux zonages des observations sans géométrie. |
@joelclems a indiqué (#719 (comment)) que cette évolution est bien moins performante (jusqu'à 10 fois moins) alors que pour les points (la grande majorité des données) elle n'est pas forcément pertinente :
Ça me semble en effet une bonne piste, car pour les points le |
En rapport à ces question d'intersection, je suis face à un cas "nouveau" lié à la possibilité de rattacher un objet de ref_geo.l_areas à une donnée. |
Pas sur que cela fonctionne. Car si une observation est à cheval partiellement sur 2 communes alors elle ne plus associée à aucune des 2 communes ? |
Le comportement est plutôt logique est bienvenu (car effectivement la commune est potentiellement concerné par cette obs départementale) La seule piste que je verrai serait un filtre permettant d'exclure les entités rattachées à certains type de areas . |
Pour le coup c'est bien le "potentiellement" qui nous pose problème. ;-) Si on recherche les données présentes dans un département on est certain que les données localisées à la communes correspondent à la demande. |
Y en a marre des données floutées et dégradées qui nous font faire des trucs tordus et galères pour essayer d'en faire à peu prêt quelque chose 😭 |
Si on veut rester carrés, le 2ème cas que tu présentes ne devrait verdir aucune commune, car là encore on est sur une présence potentielle, mais pas certaine, dans chaque commune. De manière plus pragmatique, je comprend tout à fait la logique de verdir les communes dans le cas 2 et pas le cas 3. Sauf que la cas 4 risque d'être assez fréquent si on considère d'autres types de polygones que les communes (Znieff par exemple, ou réserves, etc...). Même si arbitraire, pourquoi ne pas instaurer une règle du type : si le polygone inventoriel a une superficie plus de X (2 ?) fois plus importante que le polygone area, alors le area ne sera jamais verdit. (ce qui devrait régler le cas 4). Ca me parait raisonnable de considérer qu'au delà de 2 fois la taille, l'incertitude de présence est trop importante pour considéré que l'espèce est présente sur la commune. Coté technique, le filtre sur la surface ne devrait pas être trop coûteux (surtout si la surface est pré-calculé). Il me semble indispensable de séparer les polygones inventoriels et stationnels dans cette réflexion. Le stationnel devant verdir tout polygone qu'il intersecte. Enfin, en prenant un peu de recul, je ne sais pas si ces questions doivent être traité au niveau de la synthèse ? |
Le trigger a été légèrement revu pour ne faire la fonction st_touches() seulement pour les géométries qui ne sont pas des points. Le trigger a également été passé en on "each statement", c'est à dire que la fonction est lancée une seule fois à la fin de la transaction (mais ce point ne semble pas faire gagner beaucoup en performance)
Petite analyse de performance: -- sans trigger -- trigger area on each row initial (st_touches sur toutes les geom) --trigger area on each statement (st_touches sur toutes les geom) -- triger area on each statement optimisé (st_touches seulement sur les geom non ponctuelles) |
Intersections optimisées dans la 2.6.0, en repassant les points en st_intersect() |
Salut,
Je viens de tomber sur un comportement un peu dérangeant mais logique :
quand une avec une géométrie communale est importée dans la synthèse, elle est référencée dans la table cor_area_synthese comme étant située sur la bonne commune + toutes les communes limitrophes. Ce qui est logique car, les géométries partagent bien une frontière commune.
Le patch immédiat que je vois serait de remplacer
st_intersects(s.the_geom_local, a.geom)
parst_intersects(s.the_geom_local, a.geom) AND NOT st_touches(s.the_geom_local,a.geom)
. Après quelques tests rapides ca ne semble pas vraiment changer niveau performances. Vous en pensez quoi ?Ou alors ont se dit que cela rejoint la discussion sur la saisie de données biblio #362 et/ou de rattachement de données géo #362 (comment) .
The text was updated successfully, but these errors were encountered: