Croiser les superficies (Spatial Analyst)
Récapitulatif
Calcule les superficies croisées entre deux jeux de données et génère une table en sortie.
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 les classes et les zones en entrée sont deux 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.
-
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 Créer la table attributaire d'un raster pour en créer une.
-
Si la zone en entrée est jeu de données d'entité, une conversion vecteur/raster lui sera appliquée en interne.
Pour garantir que les résultats de la conversion s'aligneront correctement avec un raster de classes en entrée, 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 de raster.
Lorsque vous spécifiez les données de zone ou de classe en entrée, le champ 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.
-
Si la classe en entrée est un jeu de données d'entité, une conversion vecteur/raster lui sera également appliquée en interne. Les conditions répertoriées dans l'astuce précédente pour une zone d'entités en entrée s'appliquent également à une classe d'entités en entrée.
-
Il est recommandé en général d'utiliser uniquement des rasters en tant que classes et zones en entrée. Si vos entrées sont des entités, envisagez de commencer par les convertir en rasters à l'aide des outils de conversion Vers raster. Cela vous offre un plus grand contrôle sur la conversion vecteur/raster et contribue à vous garantir d'obtenir systématiquement les résultats attendus.
-
Si un jeu de données ponctuelles ou linéaires est utilisé en tant que données de classe, la surface intersectée par ces entités est consignée.
-
La sortie de l'outil Croiser les superficies est une table.
Dans cette table :
- Il y aura un enregistrement pour chaque valeur unique du jeu de données de zone.
- Il y aura un champ pour chaque valeur unique du jeu de données de classe.
- Chaque enregistrement stockera la surface de chaque classe dans chaque zone.
-
Reportez-vous à la rubrique Utilisation de l'outil Croiser les superficies pour obtenir des explications concernant certains problèmes qui peuvent se poser avec cet outil, ainsi que des suggestions sur la manière d'y remédier.
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_class_data |
Jeu de données définissant les classes dont les superficies seront récapitulées dans chaque zone. La classe en entrée peut être une couche raster d'entiers ou une couche d'entités. | Raster Layer | Feature Layer |
class_field |
Champ contenant les valeurs de classe. Il peut s'agir d'un champ de type entier ou chaîne des données de classes en entrée. | Field |
out_table |
Table en sortie contenant le récapitulatif des superficies de chaque classe dans chaque zone. 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. | Table |
processing_cell_size (Facultatif) |
Taille de cellule de traitement pour l'opération zonale. Il s'agit de la valeur contenue dans l'environnement, si spécifiquement définie. Si l'environnement n'est pas défini, la valeur par défaut de la taille de cellule est déterminée par le type des données de zone, comme suit :
| Analysis Cell Size |
Exemple de code
Cet exemple retourne une table avec la surface de chaque valeur de classe contenue dans chaque zone.
import arcpy
from arcpy import env
from arcpy.sa import *
env.workspace = "C:/sapyexamples/data"
TabulateArea("zonedata.shp", "IDStr", "valueraster", "VALUE",
"C:/sapyexamples/output/areatable.dbf", 2)
Cet exemple retourne une table avec la surface de chaque valeur de classe contenue dans chaque zone.
# Name: TabulateArea_Ex_02.py
# Description: Calculates cross tabulated areas between two datasets.
# 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"
env.extent = "classgrid"
env.snapRaster = "classgrid"
# Set local variables
inZoneData = "zonedata.shp"
zoneField = "IDStr"
inClassData = "valueraster"
classField = "VALUE"
outTable = "C:/sapyexamples/output/areatable02.dbf"
processingCellSize = 2
# Check out the ArcGIS Spatial Analyst extension license
arcpy.CheckOutExtension("Spatial")
# Execute TabulateArea
TabulateArea(inZoneData, zoneField, inClassData, classField, outTable,
processingCellSize)