Suite

Utiliser l'outil Less Than pour générer plusieurs sorties raster à partir d'une seule entrée raster dans ArcGIS Desktop ?


J'essaie de créer un modèle qui utilise en entrée une série de rasters créés à partir de valeurs d'altitude dans une couche raster d'origine. Pour ce faire, j'ai besoin d'aide pour savoir comment générer ces rasters.

J'ai un seul raster avec des valeurs d'altitude sur lequel je souhaite utiliser l'outil "moins de" pour générer un raster pour chaque valeur d'altitude (la plage d'altitude est de 0 à 140) à partir de l'entrée d'origine. Je peux le faire manuellement (par exemple en tapant 'raster = moins de 15 pieds'), mais comme ma plage max-min de valeurs d'altitude est un nombre assez important, il serait plus facile de trouver un moyen de le faire en lot , si cela est possible, et les exporter dans une géodatabase ou un dossier.

Comme mes résultats se retrouveront dans un modèle, j'aimerais le faire dans le générateur de modèles si c'est possible.
Existe-t-il un moyen de le faire en utilisant quelque chose comme un itérateur sur l'outil "moins de" ou même la calculatrice raster? L'aide que j'ai pu trouver jusqu'à présent sur les itérateurs repose sur le fait d'avoir déjà plusieurs rasters à parcourir.


Ce que vous voulez itérer est une liste de valeurs d'altitude pour comparer vos DEM pour être inférieur à.

C'est assez simple en Python ; Je trouve que les capacités d'itération de ModelBuilder sont au mieux obtuses (à mon avis).

Avec une petite modification des chemins de fichier et des valeurs d'altitude, et en supposant que vos valeurs d'altitude soient des nombres entiers, ce qui suit devrait fonctionner dans la fenêtre ArcMap Python.

import arcpy depuis arcpy.sa import * import os arcpy.CheckOutExtension("Spatial") # Votre dossier d'espace de travail inDIR = "C:UsersMeSomewhere" # Votre DEM dans votre dossier d'espace de travail inDEM = os.path. join( "C:UsersMeSomewhere", "someDEM.tif") myElevations = [10, 20, 30] # trois exemples d'élévations dans ce cas, peuvent être beaucoup plus. for elev in myElevations : # Ci-dessous, des fichiers appelés, par exemple, lessthan10.tif, dans votre dossier d'espace de travail. outDEM = os.path.join(inDIR, "lessthan" + str(elev) + ".tif") outLessThan = LessThan(inDEM, elev) outLessThan.save(outDEM) # Pour voir la progression dans la fenêtre Python : print "Terminé " + horsDEM

Si vos rasters ne sont pas des fichiers GeoTiff, modifiez les bits .tif ou supprimez-les complètement s'il s'agit de fichiers Esri GRID (avec le '+' avant dans la deuxième instance).


Je suis d'accord avec Paulo que l'itération en python est plus facile. Cependant, il existe un outil Model Builder appelé Iterate MultiValue. On dirait que vous pouvez le connecter à n'importe quel outil dont vous avez besoin et sa fonction est d'itérer les valeurs que vous lui donnez.


Voir la vidéo: Reclassifying Raster Values to No Data Using ArcMap Raster Calculator (Octobre 2021).