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 28 May 2018 12:14

Thomas-GMB
Participant occasionnel
Date d'inscription: 6 Feb 2015
Messages: 11

QGIS: Calcul de densité ou surface dans un rayon déterminé

Bonjour,

Je m'excuse par avance si la réponse à mon problème a déjà été donnée, mais je n'e l'ai pas trouvé sur le forum, ni par mes recherches sur Internet et dans les modules de Qgis.

Je dois réaliser des rasters pour construire des variables environnementales qui représentent soit une densité (ou moyenne) soit une surface totale d'habitats dans un rayon déterminé autour de chacun de mes pixels de 10 m de mùa zone d'étude (la Bretagne continentale, donc un Raster de taille assez importante).

J'ai une information de base, qui suivant les variables peut-être un raster de résolution variable ou un vecteur, contenant les habitats sur lesquels je travaille (par exemple les plans d'eau, les forets de tel ou tel type, les haies, les vergers, les zones urbaines...).

Je cherche donc une méthode assez simple et rapide (j'ai un paquet de rasters à construire) pour déterminer la surface de l'habitat déterminé recensé dans un rayon de 500 m / 2000 m / 5000 m suivant les variables considérées.

Je pensais trouver rapidement une méthode pour simplement dénombrer les pixels "positif" (codés 1) de mon habitat rasterisé dans un rayon donné autour de chaque cellules de mon masque (ma zone d'étude rasterisée à 10m), mais je ne trouve pas...

Par exemple, je souhaite connaître la "quantité" (nombre de pixels, ou surface totale ou ou densité ou moyenne... peut importe) de forets de feuillus recensée dans un rayon de 5000 m en tout "point" de ma zone d'étude. Je veux donc obtenir un raster de résolution 10 m où la valeur de chaque pixel est cette "quantité" de forets de feuillus dans les 5km environnants. Mon information de départ est un vecteur de polygones des forets de feuillus. Je l'ai rasterisé, et j'en suis à chercher une solution sans la trouver.

Il y a bien "Fragmentation" sous SAGA qui renvoie une couche de densité, mais qui génère aussi des sorties "obsolètes" pour moi (connectivité et fragmentation) qui alourdissent sérieusement les calculs inutilement.

Est-ce que l'un de vous aurait une méthode relativement simple à me proposer ?

Merci d'avance, Thomas

Hors ligne

 

#2 Tue 29 May 2018 17:25

MathieuR
Membre
Lieu: aix-en-provence
Date d'inscription: 16 Feb 2009
Messages: 1690
Site web

Re: QGIS: Calcul de densité ou surface dans un rayon déterminé

Avez-vous regardé des statistiques de zone :

Code:

raster > statistiques de zone

Imaginons que vous ayez
- un fichier de polygones représentant les rayons de 5km rayons5km.shp
- un raster de quantité de feuillus rasterFeuillus

Vous pouvez calculer des stats sur chaque rayon avec les statistiques de zone

Je ne sais pas si cela répond à votre question(?)


geodata au cerema et petits billets en géomatique

Hors ligne

 

#3 Tue 29 May 2018 18:06

Thomas-GMB
Participant occasionnel
Date d'inscription: 6 Feb 2015
Messages: 11

Re: QGIS: Calcul de densité ou surface dans un rayon déterminé

Bonjour,

Merci pour votre réponse.

Malheureusement, ça ne répond pas à mon problème puisque c'est pour l'ensemble de mon étendue de zone d'étude (un point / pixel tous les 10 mètres) que je souhaite obtenir la quantité de forêts dans les 5 km environnant.

Je connais les statistiques de zones, mais je ne crois pas (puissance machine limitante) que je puisse opérer cet outil sur un vecteur de plusieurs centaines de milliers de rayons de 5 km.

J'ai fait un essai sur une petite zone de l’algorithme Grass r.neighbors que j'ai fini par trouver en épluchant tous les modules de QGIs.

ça semble pouvoir correspondre, j'ai lancé le calcul sur l'ensemble de ma zone d'étude, je ferai un retour si ça fonctionne quand il aura terminé (peut-être dans qqs jours...)

à bientôt
Thomas

Hors ligne

 

#4 Wed 30 May 2018 09:40

Renaud
Membre
Lieu: Ploemeur (56)
Date d'inscription: 9 Mar 2006
Messages: 2315

Re: QGIS: Calcul de densité ou surface dans un rayon déterminé

Bonjour,

Il est possible d'utiliser l'outil 'Saga - Geostatistic - Residual analysis'.

Il permet, entre autre, de calculer la moyenne des valeurs dans un rayon donné autour de chaque pixel.
Connaissant la surface en nombre de pixels dans chaque rayon testé, il devient simple de recalculer la somme ('Saga - Raster Calculus - Raster calculator)

Les temps de calculs sont très raisonnables.

Modifs de réponse :
Vu la résolution (10m) et la taille du territoire (région Bretagne), tu dois disposer d'un volume de données en dizaines de Go.
Je te suggère de passer en mode batch : scripte le calcul et lance le en boucle ou chaîne via l'invite de commande Windows.
Attention à prévoir une surface de recoupement entre les zones, pour ne pas fausser les calculs en bordure

La commande devrait ressembler à ça :

Code:

saga_cmd statistics_grid 1 -GRID c:\mondossier\monraster.sgrd -MEAN c:\mondossier\moyenne.sgrd -DIFF c:\mondossier\diff.sgrd -STDDEV c:\mondossier\ectype.sgrd -RANGE c:\mondossier\portee.sgrd -MIN c:\mondossier\min.sgrd -MAX c:\mondossier\max.sgrd -DEVMEAN c:\mondossier\devmoyenne.sgrd -PERCENT c:\mondossier\percentile.sgrd -MODE 0 -RADIUS 5 -BCENTER 1 -DISTANCE_WEIGHTING_DW_WEIGHTING 0

Dernière modification par Renaud (Wed 30 May 2018 13:49)


Renaud Mouche

Hors ligne

 

#5 Fri 01 June 2018 11:43

Thomas-GMB
Participant occasionnel
Date d'inscription: 6 Feb 2015
Messages: 11

Re: QGIS: Calcul de densité ou surface dans un rayon déterminé

Merci Renaud,

alors, le mode "batch" m'est parfaitement étranger... béotien que je suis.

Est-ce que tu pourrais préciser un petit peu ?
ouvrir une console sous QGIS ?
J'ai vaguement essayé "executer" sous windows avec la commande suivante :‪c:\Program Files\saga-6.3.0_x64\saga_cmd statistics_grid 1 -GRID E:\Carto\TMB\Test\Test-Raster10m-BoisementsRiches-L93.tif -MEAN E:\Carto\TMB\Test\Raster10m-MoyenneBoisementsRiches-L93.tif -MODE 0 -RADIUS 500 -BCENTER 1 -DISTANCE_WEIGHTING_DW_WEIGHTING 0
mais rien ne se passe...

Effectivement sous Saga, même sur une petite surface (zone test), ça a l'air de mouliner dans la semoule (pas de sorties après toute une nuit à tourner)

à bientôt
Thomas

Hors ligne

 

Pied de page des forums

Powered by FluxBB