Suite

Création d'un raster basé sur le « nombre » de certaines propriétés dans 8 rasters sous-jacents

Création d'un raster basé sur le « nombre » de certaines propriétés dans 8 rasters sous-jacents


J'ai besoin de créer un raster basé sur 8 couches raster.

Les données de ces 8 couches sont divisées en 3 classes, (1) K (valeurs 1-1,5), (2) V (valeurs 2-4) et (3) Z (valeurs 5-12). Le nouveau raster est le raster K, et pour chaque cellule, je veux compter combien de fois K apparaît dans la cellule correspondante dans les rasters ci-dessous (plus tard, je veux faire la même chose pour V et Z). Le nombre de cellules appartenant à cette classe doit être la valeur de cellule dans le nouveau raster.

Ce n'est pas mon objectif d'ajouter les valeurs, il suffit de compter combien de cellules appartiennent à une certaine classe.

J'ai cherché dans ArcToolbox, mais je n'arrive pas à trouver un outil qui le fasse. Quelqu'un peut-il m'aider? Je ne connais pas du tout les scripts.

J'utilise Utiliser ArcGIS 10.2.1


Le moyen le plus simple de le faire sans script serait d'utiliser l'outil Con dans modelbuilder (licence d'analyste spatial nécessaire !). Con vous permet de définir une condition (par exemple VALUE >= 1 et VALUE <= 1.5) et génère un raster avec la valeur 1 pour où la condition est vraie et 0 où la condition est fausse. Si vous faites cela pour chaque raster, vous pouvez ensuite ajouter tous (plus) ces rasters en sortie ensemble, cela vous donnera votre raster K avec pour chaque cellule la fréquence des valeurs K dans les 8 autres rasters. Répétez l'opération pour vos valeurs V et Z. Le modèle devrait ressembler à ceci :


Comme il y a plus de rasters que de classifications, il serait judicieux d'utiliser des procédures qui gèrent les rasters en tant que groupe plutôt que d'avoir à les traiter un par un. Une commande intégrée, Less than Frequency, existe pour faire précisément cela :

  • Le nombre de rasters classés comme "K" est le nombre inférieur à 2, donné avec une expression comme

    Q2 = LessThanFrequency(2, ["Raster d'entrée 1", "Raster d'entrée 2",… , "Raster d'entrée 8"])

    Bien sûr, le "… " doit être remplacé par des mentions explicites des autres rasters. Cependant, l'ordre dans lequel les rasters sont nommés n'a pas d'importance.

  • Le nombre de rasters classés comme "K" ou alors "V" est le nombre inférieur à 5, donné avec une expression comme

    Q5 = LessThanFrequency(5, ["Raster d'entrée 1", "Raster d'entrée 2",… , "Raster d'entrée 8"])

    Notez que cela est réalisé avec un simple copier-coller de l'expression pour "Q2", en changeant le "2" en "5".

  • Le nombre de rasters classés comme "K" ou alors "V" ou alors "Z" ne doit pas être supposé égal à 8 (sauf si vous êtes absolument sûr qu'il n'y a pas de cellules NoData et que toutes les valeurs sont vraiment inférieures à 12). Au lieu de cela, continuez le modèle précédent. Étant donné que les exemples de pages d'aide indiquentMoins queFréquenceutilise un strict comparaison - les égalités ne sont pas incluses - pensez à faire une comparaison avec un seuil légèrement supérieur à 12, comme dans

    Q13 = LessThanFrequency(13, ["Input Raster 1", "Input Raster 2",… , "Input Raster 8"])

Après ces trois calculs, vous pouvez obtenir le nombre de classes individuelles par soustraction, comme dans

V = "Q5" - "Q2" Z = "Q13" - "Q5"

K, bien sûr, est simplement "Q2" (à condition que vous soyez sûr que les valeurs d'entrée sont toujours 1 ou supérieures et ne se situent jamais entre 1,5 et 2).


Avec le recul, il est évident qu'en général on peut compter m classes basées sur des intervalles dans un ensemble de m rasters au moyen de m applications deMoinsDeFréquencesuivi par m-1 différences. Lorsque m est plus grand que 2 * m, ce sera l'une des méthodes les plus efficaces que vous puissiez appliquer. En tout cas c'est une procédure très claire, facile à rédiger et facile à vérifier.