Statistiques zonales (Spatial Analyst)
Récapitulatif
Calcule les statistiques des valeurs d’un raster dans chaque zone d’un autre jeu de données.
Pour en savoir plus sur l'utilisation de la fonction Statistiques zonales
Illustration
Utilisation
-
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.
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.
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.
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.
Si un champ réservé (par exemple, OBECTID, FID ou OID) est sélectionné pour le champ de zone, cela peut causer une certaine ambiguïté dans le résultat. Le résultat inclut le nom du champ réservé particulier nécessaire pour le type de format en sortie particulier, ainsi que le champ de zone spécifié. Si le champ spécifié a le même nom que le champ réservé pour le format en sortie particulier, le nom du champ de zone dans la sortie est modifié de façon à ce que tous les noms de champs dans le résultat soient uniques.
Remarque :Pour créer un champ de valeurs uniques qui n'a pas de nom réservé, utilisez les outils de géotraitement Ajouter un champ et Calculer un champ.
Le raster de valeurs en entrée peut être de type entier ou à virgule flottante. Toutefois, lorsque son type est à virgule flottante, les calculs zonaux de majorité, médiane, minorité et variété ne sont pas effectués.
Pour les calculs de majorité et de minorité, lorsqu'il existe une association, la sortie pour la zone est basée sur la plus faible des valeurs associées.
-
Le type de données de la sortie dépend du calcul zonal qui est effectué et du type raster de valeurs en entrée. Reportez-vous à la rubrique Fonctionnement de l'outil Statistiques zonales pour plus d'informations.
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 |
Raster contenant les valeurs sur lesquelles vous voulez calculer une statistique. | Raster Layer |
statistics_type (Facultatif) |
Type de statistique à calculer.
| String |
ignore_nodata (Facultatif) |
Indique si les valeurs NoData de la valeur en entrée influenceront les résultats de la zone dans laquelle elles se trouvent.
| Boolean |
Valeur renvoyée
Nom | Explication | Type de données |
out_raster |
Raster de statistiques zonales en sortie. | Raster |
Exemple de code
Cet exemple détermine pour chaque zone la plage de valeurs de cellule dans le raster de valeurs en entrée.
import arcpy from arcpy import env from arcpy.sa import * env.workspace = "C:/sapyexamples/data" outZonalStats = ZonalStatistics("zone", "value", "valueraster", "RANGE", "NODATA") outZonalStats.save("C:/sapyexamples/output/zonestatout")
Cet exemple détermine pour chaque zone la plage de valeurs de cellule dans le raster de valeurs en entrée.
# Name: ZonalStatistics_Ex_02.py # Description: Calculates statistics on values of a raster # within the zones of another dataset. # 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 = "zone" zoneField = "value" inValueRaster = "valueraster" # Check out the ArcGIS Spatial Analyst extension license arcpy.CheckOutExtension("Spatial") # Execute ZonalStatistics outZonalStatistics = ZonalStatistics(inZoneData, zoneField, inValueRaster, "RANGE", "NODATA") # Save the output outZonalStatistics.save("C:/sapyexamples/output/zonestatout2")