Suite

Éviter l'erreur 000539 du bloc de code dans l'outil Calculer la valeur ?

Éviter l'erreur 000539 du bloc de code dans l'outil Calculer la valeur ?


Je n'ai pas une très bonne compréhension de python et j'ai essayé d'écrire un bloc de code pour que mon modèle ignore les rasters qui ne contiennent aucune information et poursuive le processus avec des rasters qui contiennent des informations. Il s'agit d'une partie pertinente du modèle :

Mon problème actuel est que je continue à obtenir cette erreur:

Exécution (Calculer la valeur) : CalculateValue getValue(%Check Raster%) "def getValue(CheckRaster):
 import arcpy
 if "Has Values": return True
 if "N'a pas de valeurs": return False" Heure de début de la variante : Ven 30 Oct 10:16:54 2015 ERREUR 000539 : SyntaxError : syntaxe invalide (, ligne 1) Échec de l'exécution (Calculer la valeur).

Voici à quoi ressemble mon outil de calcul de valeur :

Des idées sur la façon dont je pourrais changer le code afin qu'il n'y ait plus d'erreurs de syntaxe ? (Le modèle complet peut être trouvé ici.)

EDIT: Les réponses ci-dessous ont été utiles mais elles n'ont pas encore entièrement contourné le problème. L'outil de vérification de raster que j'utilise semble toujours donner une sortie qui "a des valeurs" même si l'erreur suivante se produira pendant Raster vers polygone : ERREUR 010151 : aucune fonctionnalité trouvée dans C:Usersoll0230DocumentsArcGISSuitability_stuff 3Scratchpolygon_03.shp. Classe d'entités vide possible.

Je pense que cela signifie qu'il s'agit d'un problème avec l'outil de vérification de raster que j'ai. C'est peut-être devenu plus compliqué qu'il ne devrait l'être. Existe-t-il un code possible qui pourrait être écrit dans l'outil de calcul de valeur qui vérifierait [email protected] pour la présence de fonctionnalités ?


Votre code est incorrect, voici ce que vous devez faire :

Configurez votre modèle en tant que tel, l'outil Calculer la valeur est une condition préalable à un autre outil, j'ai utilisé Clip comme exemple. Votre variable Raster_03 doit avoir la barre oblique pour que le code fonctionne.

Dans l'outil de calcul de valeur, il doit être configuré comme tel (notez que le type de données de sortie est défini sur booléen) :

Le code est placé ici pour plus de commodité :

import arcpy def CheckRaster(r): result = arcpy.GetRasterProperties_management(r, "MINIMUM") n = int(result.getOutput(0)) if n > 1: return True else: return False

Vous souhaitez référencer les sorties de l'outil Vérifier le raster dans votre définition de fonction, et non le nom de la fonction lui-même.

Aussi de l'aide:

Les variables en ligne de type chaîne doivent être placées entre guillemets ("%string variable%") dans une expression. Les variables en ligne de type nombres (double, long) ne nécessitent pas de guillemets (%double%).

Essayez une expression comme celle-ci :

getValue (" % a des valeurs %", " % n'a pas de valeurs %")

Et ton bloc de code :

def getValue (a, ne fait pas) : si a : renvoie True si ne : renvoie False