Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Printemps des cartes 2024

#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)


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

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


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

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


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

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


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

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

 

Pied de page des forums

Powered by FluxBB