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é ?

#1 Mon 11 January 2021 11:48

oligator6200
Participant occasionnel
Date d'inscription: 10 May 2019
Messages: 32

QGIS: Selectionner un % de polygones en fonction nombre d'entites

Bonjour à toutes et à tous,

Meilleurs voeux pour cette nouvelle année !

Je souhaiterais effectuer un échantillonnage aléatoire stratifié sur QGIS pour cela je dispose d'une couche d'occupation des sols avec 51000 entités divisés en plusieurs classes dont chacune comportent un nombre disparate d'entités. L'idée c'est que je souhaiterais sélectionner, en fonction du nombre d'entités d'une classe, un pourcentage de polygone à vérifier. Ainsi pour les classes qui comportent plus de 5000 polygones, il faudrait de manière aléatoire ne conserver que 2 % de ces polygones, pour les classes qui comportent entre 1000 et 5000 polygones on sélectionne 5% des polygones, pour les classes qui en comportent entre 500 et 1000, 10%, pour les classes qui en comportent entre 130 et 500, 15%, pour les classes qui en comportent entre 50 et 130 Polygones, 30% et enfin 100% pour toutes les classes qui comportent moins de 50 entités.
Par exemple : la classe Surfaces baties comporte 19863 Polygones, je souhaiterais ne retenir de manière aléatoire que 2% de ces polygones soit environ 397 polygones à sélectionner tandis que la classe Prairies humides ne comporte que 637 dont je souhaiterais en sélectionner 10% soit environ 64 entités.

Quelqu'un aurait une idée sur la manière dont il faudrait s'y prendre pour faire cela s'il vous plaît ?
Je ne sais pas si je suis clair mais n'hésitez pas à me demander des précisions.

Je vous remercie par avance.

Bonne journée, Oli

Hors ligne

 

#2 Mon 11 January 2021 12:43

JD
Moderateur
Date d'inscription: 8 Aug 2013
Messages: 726

Re: QGIS: Selectionner un % de polygones en fonction nombre d'entites

Bonjour,
Il faut utiliser la boite à outils de traitement et aussi le modeleur.


Etape 1 : faire une extraction des couches par le champs classe pour obtenir autant de couche que de classe. Cela va séparer les couches.

Etape 2
: charger le modèle en pj qui utilise l'agortihme random select mais l'adapte car le champs n'est pas fixe (j'ai mis la formule que vous souhaitiez).

Etape 3
: executer l'algorithme charger (se trouve dans les modèles (groupe teste et nom random_select_based_feature_count
Il est possible d'éxecuter ceci en mode batch via un clic droit.

Etape 4 : fusionner les couches selectionnees


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

Hors ligne

 

#3 Mon 11 January 2021 19:47

oligator6200
Participant occasionnel
Date d'inscription: 10 May 2019
Messages: 32

Re: QGIS: Selectionner un % de polygones en fonction nombre d'entites

Bonjour,

Merci beaucoup pour votre réponse et votre algorithme. Si j'ai bien compris, il me faut extraire dans ma couche d'occupation des sols chacune des classes qui la compose pour n'avoir plus qu'une classe par couche. Jusque là, pas de problème mais j'ai ensuite essayé de charger votre script dans le modeleur graphique et j'obtiens une erreur d'exécution du code python (AttributeError: 'NoneType' object has no attribute 'svgIconPath' ). Quelle manipulation ai-je loupé ?

Merci d'avance,

Oli

Hors ligne

 

#4 Mon 11 January 2021 21:35

JD
Moderateur
Date d'inscription: 8 Aug 2013
Messages: 726

Re: QGIS: Selectionner un % de polygones en fonction nombre d'entites

Bonsoir,
vous avez quelle version de qgis ? J'ai produit le modeleur avec la dernière version de qgis 3.16

Hors ligne

 

#5 Tue 12 January 2021 09:08

oligator6200
Participant occasionnel
Date d'inscription: 10 May 2019
Messages: 32

Re: QGIS: Selectionner un % de polygones en fonction nombre d'entites

Bonjour,

Ah mince, effectivement ce doit être ça car je suis toujours sur la version LTR 3.4 Madeira, et je ne peux rien mettre à jour étant donné que je n'ai pas les droits sur ce pc..
En tout, cas merci de votre aide.

Bonne journée,

Oli

Hors ligne

 

Pied de page des forums

Powered by FluxBB