Rééchantillonner le raster binaire pour donner une * proportion * dans la nouvelle fenêtre de cellule

9

Je voudrais passer d'un raster binaire de forêt / non-forêt à une résolution de 30 m à un raster à une résolution de 240 m avec la valeur de chaque cellule étant la proportion de cette cellule boisée - c'est-à-dire que les valeurs des données pour les cellules de 240 m passeraient de 0 (où toutes les cellules du raster de 30 m étaient nulles / non forestières) à 0,5 (où la moitié des cellules de 30 m étaient forestières, la moitié non forestière) à 1 (où toutes les cellules du raster de 30 m étaient boisées).

Bien qu'il ait été suggéré de ne pas utiliser d'interpolation bilinéaire sur des données discrètes, autant que je sache, le résultat avec des données binaires 0/1 serait de donner une valeur moyenne (c'est-à-dire une proportion entre 1 et 0). Est-ce une façon sensée de le faire ou existe-t-il une meilleure méthode?

Je peux utiliser Arc, QGIS et Idrisi.

stuckGIS
la source

Réponses:

13

Utilisez les statistiques de blocage .

Cela fonctionne comme les statistiques focales en calculant un résumé statistique (tel que la moyenne que vous souhaitez) dans un voisinage spécifié de cellules (comme un carré de 8 x 8, où 8 = 240 m / 30 m), sauf qu'il ne le fait que pour un subdivision régulière de la grille, plutôt qu'avec un ensemble de quartiers qui se chevauchent, un à chaque cellule.

Vous pouvez également utiliser les statistiques focales si vous le souhaitez vraiment: après avoir calculé la moyenne focale sur 8 par 8 carrés, rééchantillonner sur une grille de 240 m en utilisant le rééchantillonnage du plus proche voisin . Lorsque les grilles sont enregistrées les unes aux autres ( c'est-à - dire qu'elles ont la même origine), cela devrait donner le même résultat que block statistics. (Je ne garantis pas que: certains choix arbitraires doivent être faits lorsque de nouveaux centres cellulaires coïncident avec d'anciens coins de cellule - comme ils le feront ici - et, si différents comités ont codé les deux procédures, ils peuvent avoir fait des choix différents: peu dans ArcGIS est vraiment cohérent, je le crains.)

Une autre approche consiste à créer une grille de zones, une zone par carré où une moyenne est souhaitée, et à effectuer un résumé zonal sous forme de grille. Les zones peuvent être calculées mathématiquement à partir de grilles de coordonnées de ligne et de colonne (au moyen de la fonction floorou int, par reclassement ou en joignant une table appropriée à la table attributaire).

Je terminerai en remarquant que l'interpolation bilinéaire, bien qu'elle produira effectivement des valeurs dans la plage 0..1, n'est pas ce que vous voulez: elle fonctionne en trouvant au plus quatre cellules de grille d'origine (30 m) entourant le centre d'une nouvelle ( 240 m) cellule et en interpolant uniquement leurs valeurs. En tant que tel, il ignorera les autres 8 * 8 - 4 = 60 cellules d'origine se trouvant dans chaque nouveau bloc. J'illustre l'interpolation bilinéaire sur http://www.quantdec.com/SYSEN597/GTKAV/section9/map_algebra.htm : la discussion commence vers le milieu de la page.

whuber
la source
Merci whuber, c'est ce que j'ai fait - j'ai utilisé les statistiques de bloc dans Arc pour produire la somme du groupe 8x8, puis utilisé la calculatrice raster dans QGIS pour diviser par 64 et aligner l'origine, l'étendue et la taille des cellules avec le reste de mes données.
stuckGIS
stuckGIS, vous pouvez ignorer la deuxième étape en utilisant Block Statistics pour calculer la moyenne de chaque bloc 8 x 8. L'alignement de la nouvelle grille consiste à spécifier correctement l'environnement d'analyse raster qui, s'il est effectué avant de commencer les calculs, se produira automatiquement. Cela réduit votre flux de travail à une seule étape: effectuez la moyenne des blocs.
whuber
4

Dans ArcGIS, lorsque vous rééchantillonnez des données à l'aide d'un rééchantillonnage bilinéaire, il examine uniquement les valeurs des quatre cellules centrales ( documentation de rééchantillonnage ). En tant que tel, en utilisant cette méthode, vous perdrez toujours des données si vous ne compensez pas la perte de données.

Étant donné que nous savons que pour les cellules rééchantillonnées, vous recherchez une proportion des cellules qui sont boisées, nous pouvons la considérer comme la somme des cellules de 30 m divisée par 64 (il y a 64 cellules de 30 m dans le bloc de 240 m).

Cela signifie que si nous pouvons créer un nouveau raster avec les valeurs centrales comme la somme des valeurs environnantes à une résolution de 30 m, réduire la résolution en utilisant le rééchantillonnage avec le voisin le plus proche ou une interpolation bilinéaire nous donnera 240 cellules m qui sont la somme des cellules 30 m qu'elles couverture. Nous pouvons le faire avec l' outil de somme focale sur le raster de 30 m.

Enfin, une fois que nous avons une trame de somme focale de 240 m, divisez par 64 pour obtenir votre réponse proportionnelle.

Dans Idrisi, je ne suis pas sûr des algorithmes d'échantillonnage d'images, de même dans QGIS, mais j'imagine qu'il y a quelque chose de similaire. Certes, dans QGIS, vous pouvez traiter le raster en Python en utilisant scipy ndimage ou similaire.

om_henners
la source