Pages: 1
- Sujet précédent - QGIS 3.4.5: regroupement mailles adjacentes selon leur localisation - Sujet suivant
#1 Thu 23 May 2019 07:38
- Laurent75019
- Participant actif
- Lieu: La Réunion_974
- Date d'inscription: 15 Jul 2011
- Messages: 96
QGIS 3.4.5: regroupement mailles adjacentes selon leur localisation
Bonjour,
J'ai une seule grille vecteur de mailles carré 5m x 5m au sein d'une zone d'étude.
J'ai épuré la grille pour ne garder que les mailles d'intérêt, il me reste 360.000 entités. Les attributs de la table sont ceux d'une grille vecteur+un champ que j'ai créé "surf_m2" dont la valeur est identique à toutes les entités. L'affichage montre des mailles adjacentes par un coté ou un angle (voir pj).
Je cherche à regrouper (par coté et angle) toutes les mailles adjacentes entre elles pour former des ilots de surface.
j'ai pensé à la matrice des distances, au plus proche voisin mais ça plante ou le traitement est interminable ou ce n'est pas la bonne voie. J'ai trouvé ce post https://georezo.net/forum/viewtopic.php … un+vecteur sur une expression d’agrégation basée sur la localisation des entités. Cette méta-fonction me semble aller dans la bonne direction, mais je ne parviens pas à le mettre en application.
Avez vous une solution pour m'aider s'il vous plaît ?
Merci à vous et bonne journée, Laurent
Dernière modification par Laurent75019 (Thu 23 May 2019 14:19)
Hors ligne
#2 Thu 23 May 2019 13:49
- carteq
- Participant assidu
- Date d'inscription: 8 Mar 2008
- Messages: 829
Re: QGIS 3.4.5: regroupement mailles adjacentes selon leur localisation
Votre pièce jointe est absente.
En utilisant "Regrouper", puis "De morceaux uniques à morceaux multiples", est-ce que ça produit ce que vous attendez ?
Hors ligne
#3 Thu 23 May 2019 14:39
- Laurent75019
- Participant actif
- Lieu: La Réunion_974
- Date d'inscription: 15 Jul 2011
- Messages: 96
Re: QGIS 3.4.5: regroupement mailles adjacentes selon leur localisation
j'ai tenté ces traitements mais le dernier traitement de "morceaux multiples à morceaux uniques" ne prend pas en compte les mailles adjacentes par un angle comme le montre la pj
Hors ligne
#4 Thu 23 May 2019 14:53
- carteq
- Participant assidu
- Date d'inscription: 8 Mar 2008
- Messages: 829
Re: QGIS 3.4.5: regroupement mailles adjacentes selon leur localisation
Avec un aggrégateur et l'opérateur géométrique "touches" dans la calculatrice de champs alors.
Hors ligne
#5 Thu 23 May 2019 15:31
- Laurent75019
- Participant actif
- Lieu: La Réunion_974
- Date d'inscription: 15 Jul 2011
- Messages: 96
Re: QGIS 3.4.5: regroupement mailles adjacentes selon leur localisation
en effet j'en suis là et l'expression ci-dessous n'est pas correcte et je découvre ce genre de fonction.
Code:
aggregate('testpolygone','sum', "Surfm2" , filter:=touches($geometry, geometry(@parent)))
1. toutes les mailles ne sont pas prises en compte
2. là où l'ilot de mailles devrait avoir un résultat de 50m2, l'expression renvoie 0 et 25m2
Hors ligne
#6 Thu 23 May 2019 22:28
- Laurent75019
- Participant actif
- Lieu: La Réunion_974
- Date d'inscription: 15 Jul 2011
- Messages: 96
Re: QGIS 3.4.5: regroupement mailles adjacentes selon leur localisation
Une solution trouvée ! un peu fastidieuse j'avoue, j'imagine qu'une fonction de calculatrice de champs pourrait faire plus compact.
objectif : regrouper (en grappes) les mailles en fonction de leur proximité spatiale les unes des autres.
Situation de départ
- Une grille uniforme de mailles 5mx5m est épurée pour ne garder que les mailles d'intérêt.
- La visualisation de la couche1 permet de voir des paquets de mailles plus ou moins proches les uns des autres (cf. 1ère pj de ce fil de discussion).
- chaque maille a des valeurs qui lui correspond dans chacun des champs. La valeur de surface de chaque maille du champs surfm2 est identique à chaque entité.
- la distance entre centroïdes de chaque maille est soit de 5m (mailles horizontales ou verticales se touchant par un coté) soit de 7m (mailles en diagonales se touchant par l'angle).
Traitement
- vecteur / géométrie/ centroïdes -- Extrait les centroïdes de chaque maille dans une nouvelle couche2 --
- vecteur/ géotraitement/ tampon/ distance 8m -- affecte un tampon de 8m avec résultat regroupé dans une nouvelle couche3. Cette distance permet de grouper ensemble les centroïdes à 5m et 7m proche les uns des autres en plusieurs ilots --
- vecteur/ géotraitement/ regrouper-- permet de regrouper toutes les ilots en un seul ilot dans une nouvelle couche4--
- vecteur/ géométrie/ de morceaux multiples à morceaux uniques -- permet de scinder l'ilot unique en plusieurs groupes d'ilots dans une nouvelle couche5 --
- couche5: calculatrice vecteur/ nouveau champ;ID2;row_number -- assigne un identifiant unique à chaque ilot. vérification par symbologie catégorisée sur le champs ID2 --
- vecteur/gestion de données/joindre les attributs par localisation/ source:couche5: joindre couche1; prédicat à l'intérieur; champsID2 -- joint le champsID2 à chaque entité de la couche1 dans une nouvelle couche6 --
- couche6: calculatrice vecteur/nouveau champ 'sum'/ expression sum( "Surfm2" ,group_by:= "id2" ) -- expression additionnant la surface de chaque maille incluse dans chaque ilot (=somme du champ1 en fonction du champ2) --
vérification finale: symbologie par catégorie sur le champs 'sum' -- on obtient un regroupement par la localisation de mailles selon leur proximité ainsi qu'une mesure de surface pour chaque ilot --
Après ces étapes, il serait alors possible de regrouper les entités pour obtenir des grappes de polygones fusionnant chaque maille. Le cas ici est de garder chaque maille indépendante.
Laurent
Hors ligne
#7 Fri 24 May 2019 17:59
- carteq
- Participant assidu
- Date d'inscription: 8 Mar 2008
- Messages: 829
Re: QGIS 3.4.5: regroupement mailles adjacentes selon leur localisation
Au lieu d'utiliser les centroids, on pourrait faire directement un buffer regroupé de 1m sur les mailles.
Hors ligne
Pages: 1
- Sujet précédent - QGIS 3.4.5: regroupement mailles adjacentes selon leur localisation - Sujet suivant