Histogramme zonal (Spatial Analyst)
Récapitulatif
Crée une table et un diagramme d'histogramme qui affichent la distribution de fréquence de valeurs de cellule sur la valeur en entrée pour chaque zone unique.
Illustration
Utilisation
-
Un histogramme zonal vous permet d'étudier la distribution de fréquence de valeurs dans un jeu de données dans les classes d'un autre jeu de données. Exemples : distribution de la pente dans des classes d'utilisation du sol, distribution des précipitations dans des classes d'altitude ou distribution des crimes par secteurs de police.
Une zone est définie comme l'ensemble des surfaces en entrée ayant la même valeur. Les surfaces ne sont pas nécessairement contiguës. Vous pouvez utiliser à la fois des jeux de données raster et de classes d'entités pour la zone en entrée.
Lorsque la zone et la valeur en entrée sont toutes les deux des rasters de même résolution, elles sont utilisées directement.
Si les résolutions sont différentes, un rééchantillonnage interne est appliqué pour les faire correspondre avant que l'opération zonale soit effectuée.
Au cas où des cellules NoData figurent en entrée, le ré-échantillonnage peut engendrer de plus grandes zones de valeurs NoData dans la sortie que prévues. Pour éviter une telle situation, vous pouvez ré-échantillonner les rasters en entrée plus grossiers sur la résolution du raster en entrée plus fin ou définir la taille de cellule sur Comme la valeur Min dans l'environnement d'analyse raster.
Si la zone en entrée est un jeu de données raster, elle doit comporter une table attributaire. La table attributaire est généralement créée automatiquement pour les rasters d'entiers, mais peut ne pas l'être dans certaines circonstances. Vous pouvez utiliser l'option Créer la table attributaire d'un raster pour en créer une.
Il est recommandé d'utiliser uniquement des rasters comme zone en entrée, car ils vous offrent un plus grand contrôle sur la conversion de vecteur en raster. Ainsi, vous aurez la garantie d'obtenir systématiquement les résultats attendus.
Si la zone en entrée est un jeu de classes d'entités, une conversion de vecteur en raster lui sera appliquée en interne. Pour garantir que les résultats de la conversion s'aligneront correctement avec le raster de valeurs, il est recommandé de vérifier que l'étendue et le raster de capture sont définis convenablement dans les paramètres d'environnement et dans les paramètres du raster.
Comme le raster interne doit avoir une table attributaire, une erreur surviendra si aucune table n'est créée dans le cadre de la conversion. Dans ce cas, convertissez directement votre jeu de classes d'entités à l'aide de l'outil Entité vers raster, Polygone vers raster, Point vers raster ou Polyligne vers raster. Créez une table attributaire comme cela est décrit dans le conseil précédent et utilisez le raster obtenu comme zone en entrée.
Si la zone en entrée est un jeu de classes d'entités avec des entités relativement petites, n'oubliez pas que la résolution des informations doit être appropriée à la résolution du raster de valeurs. Si les zones d'entités individuelles sont similaires ou plus petites que la zone de cellules individuelles dans le raster de valeurs, certaines de ces zones peuvent ne pas être représentées dans la conversion d'entité en raster.
Pour illustrer ceci, essayez de convertir le jeu de classes d'entités en raster à l'aide de l'outil de conversion d'entité en raster approprié et spécifiez comme résolution celle du raster de valeurs. Le résultat de cette conversion fournit une indication de ce que sera la sortie par défaut de l'opération zonale.
Si vous avez moins de résultats dans la sortie que vous en prévoyiez, vous devez déterminer une résolution de raster appropriée qui représentera le détail de votre entité en entrée et utiliser cette résolution en tant que taille de cellule des paramètres d'analyse raster de l'environnement.
Si la zone en entrée est un jeu de classes d'entités point, il est possible d'avoir plusieurs points contenus dans toute cellule particulière du raster de valeurs en entrée. Pour de telles cellules, la valeur de zone est déterminée par le point doté de l'ID d'entité le plus élevé.
Si l'entité en entrée de la zone contient des polygones superposés, l'analyse zonale n'est pas effectuée pour chaque polygone individuel. Comme l'entité en entrée est convertie en raster, chaque emplacement peut avoir une seule valeur.
Une méthode alternative consiste à traiter les statistiques zonales de façon itérative pour chacune des zones de polygone et à assembler les résultats.
Le Champ de zone doit être de type entier ou chaîne.
Lorsque vous spécifiez les données de zone en entrée, le champ de zone par défaut est le premier champ valide disponible. S'il n'existe aucun autre champ valide, le champ ObjectID (par exemple, OID ou FID) est utilisé par défaut.
Les cellules du raster de valeurs en entrée appartiennent à la zone dans laquelle les centres des cellules sont compris. Dans ce cas, les zones sont les zones obtenues après l'exécution de toute conversion en raster et de tout ré-échantillonnage nécessaires.
Dans l'histogramme, le nombre de classes (bins) pour chaque zone est déterminé par le raster de valeurs en entrée.
- Si une couche est spécifiée, la symbologie de la couche définit le nombre de classes.
- Si un jeu de données est spécifié, par défaut, il y aura 256 classes, à moins que l'entrée soit de type entier avec moins de 26 valeurs uniques, auquel cas ce sera le nombre total de valeurs uniques.
Un diagramme d'histogramme zonal n'est pas généré par défaut. Pour qu'il soit créé lors de l'exécution de l'outil, spécifiez le Nom du diagramme en sortie.
Le diagramme est temporaire (en mémoire) uniquement. Pour en faire une version permanente, utilisez l'outil Enregistrer le diagramme pour créer un fichier graphique .grf, ou l'un des autres formats en sortie disponibles avec cet outil.
Syntaxe
Paramètre | Explication | Type de données |
in_zone_data |
Jeu de données définissant les zones. Les zones peuvent être définies par un raster d'entiers ou une couche d'entités. | Raster Layer | Feature Layer |
zone_field | Champ contenant les valeurs qui définissent chaque zone. Il peut s'agir d'un champ de type entier ou chaîne du jeu de données de zones. | Field |
in_value_raster |
Valeurs de raster pour créer les histogrammes. | Raster Layer |
out_table |
Fichier de table en sortie. Le format de la table est déterminé par l'emplacement et le chemin d'accès en sortie. Si aucune extension n'est spécifiée, il s'agira d'une table INFO. Si l'emplacement est dans une géodatabase, la table en sortie sera créée dans ce type particulier (par exemple, une géodatabase fichier ou ArcSDE). Si le nom possède une extension .dbf, la sortie sera au format dBASE. Le diagramme facultatif en sortie est créé à partir des informations de la table. | Table |
out_graph (Facultatif) |
Nom du diagramme en sortie pour l'affichage. Le diagramme est temporaire. Pour le rendre définitif, utilisez l'outil Enregistrer le diagramme. | Graph |
Exemple de code
Cet exemple crée une table d'histogramme zonal .dbf.
import arcpy
from arcpy import env
from arcpy.sa import *
env.workspace = "C:/sapyexamples/data"
outZonHisto = ZonalHistogram("zoneras", "zonfield", "valueras", "znhist_tbl.dbf")
Cet exemple crée une table d'histogramme zonal .dbf et un fichier graphique.
# Name: ZonalHistogram_Ex_02.py
# Description: Creates a zonal histogram output table and
# a graph showing the amount of value cells
# for each unique input zone.
# Requirements: Spatial Analyst Extension
# Import system modules
import arcpy
from arcpy import env
from arcpy.sa import *
# Set environment settings
env.workspace = "C:/sapyexamples/data"
# Set local variables
inZoneData = "zonras"
zoneField = "zonfield"
inValueRaster = "valueras"
outTable = "C:/sapyexamples/output/zonehist_tbl.dbf"
outGraph = "zonehist_gra"
# Check out the ArcGIS Spatial Analyst extension license
arcpy.CheckOutExtension("Spatial")
# Execute ZonalHistogram
ZonalHistogram(inZoneData, zoneField, inValueRaster, outTable, outGraph)