Suite

Erreur 000732 - le raster d'entrée n'existe pas lors de l'implémentation de l'outil de script arcpy


J'essaie d'implémenter un outil de script dans ArcGIS 10 qui complète quelques équations avec des jeux de données raster.

J'ai l'impression d'avoir la même erreur quoi que j'essaye :

: ERREUR 000732 : Raster d'entrée : le jeu de données 5 n'existe pas ou n'est pas pris en charge Échec de l'exécution (TWI).

TWI étant le nom de l'outil de script.

Mon code est ci-dessous :

importer arcpy depuis arcpy importer env importer os depuis arcpy.sa importer * arcpy.CheckOutExtension("spatial") DEM = arcpy.GetParameterAsText(0) cellsize = arcpy.GetParameterAsText(1) FlowAcc = arcpy.GetParameterAsText(2) K_Sat = arcpy. GetParameterAsText(3) OutRaster = arcpy.GetParameterAsText(4) OutSpace = arcpy.GetParameterAsText(5) pente = (Pente(Raster(DEM)) * 1.570796 ) / 90 tan_slp = Con(pente > 0, Tan(pente), 0,001) FlowAcc_scaled = (Raster(FlowAcc) + 1 ) * cellsize TWI = Ln(FlowAcc_scaled / (Raster(K_Sat) * tan_slp)) arcpy.env.workspace = OutSpace TWI.save(OutRaster)

J'ai l'impression que l'erreur est liée à la configuration correcte des paramètres. C'est quelque chose que je semble avoir du mal à comprendre mais si je comprends bien "DEM", "FlowAcc" et "K_Sat" sont des couches raster, "cellsize" est un entier long (également essayé double), "OutSpace" est un espace de travail et "OutRaster" est une chaîne.

L'erreur semble être liée à la manière dont est d'enregistrer/nommer le raster.

EDIT : veuillez voir une capture d'écran de la configuration des paramètres ci-dessous (notez que j'ai essayé l'espace de travail de sortie et le raster de sortie en tant qu'entrées et sorties et j'obtiens la même erreur)

EDIT 2 - Réponse

Ok, le problème était que le deuxième paramètre 'cellsize' doit être appelé avec la fonction 'arcpy.GetParameter' plutôt qu'avec la fonction 'arcpy.GetParameterAsText' car il s'agit d'une valeur d'entrée plutôt que d'une chaîne.


Voici une explication de base sur cette erreur - Cela se produit même si les données existent clairement sur le disque.

Cause Le plus souvent, cela est dû à une entrée incorrecte du chemin des données d'entrée, comme dans les situations suivantes :

• Noms de dossier mal orthographiés

• Utilisation de barres obliques inverses au lieu de barres obliques

• Avoir des espaces dans les noms de chemin

Si les données existent clairement, le problème peut être l'une des deux limites connues. Voir la section Solutions pour plus de détails.

Solution ou solution de contournement Vérifiez le chemin de données utilisé, corrigez-le si nécessaire et exécutez à nouveau l'outil.

Si les données existent, l'un des événements suivants peut se produire :

Si l'entrée est une classe d'entités ou une table de géodatabase, un sous-type non valide peut exister dans le jeu de données. Pour résoudre ce problème, accédez aux propriétés de la classe d'entités, puis cliquez sur l'onglet Sous-types et saisissez à nouveau le code de sous-type par défaut. Si la valeur par défaut est zéro (0), cliquez sur la cellule avec 0 et ressaisissez cette même valeur. Appliquez la modification en cliquant sur le bouton OK. L'ensemble de données devrait maintenant être utilisable. Si l'outil est exécuté sous UNIX ou Linux et que l'entrée est un fichier texte utilisé comme entrée dans un outil avec un paramètre de table d'entrée, tel que CopyRows ou MakeXYEventLayer, il s'agit d'une limite connue. Sur le système d'exploitation Windows, le fichier texte est représenté sous forme de tableau à l'aide d'un module, qui n'est pas disponible sous UNIX ou Linux. Modifiez le système de coordonnées du bloc de données pour qu'il corresponde aux données exportées. Le cas échéant, désactivez les connexions directes aux bases de données au niveau de la couche, et pas seulement au niveau du sous-groupe. Désactivez le traitement en arrière-plan. Dans ArcCatalog : Géotraitement > Option de géotraitement > Désactivez Activer sous Traitement en arrière-plan.


J'ai compris le problème.

Le deuxième paramètre 'cellsize' devait être appelé avec l'outil "arcpy.GetParameter" plutôt qu'avec l'outil "arcpy.GetParameterAsText" car il s'agit d'une valeur numérique plutôt que d'une chaîne. Cela semble tellement évident maintenant!

J'ai modifié ma question avec la réponse.


Voir la vidéo: 1 - Intro - ArcGIS Pro Scripting with Python and Arcpy (Octobre 2021).