Suite

MakeFeatureLayer lançant l'erreur 00840 : la valeur n'est pas une couche d'entités

MakeFeatureLayer lançant l'erreur 00840 : la valeur n'est pas une couche d'entités


Je travaille sur des didacticiels du livre "GIS Tutorial for Python Scripting" de David W. Allen, et j'ai ce code à peu près exactement comme le veut le livre (j'ai modifié un nom de variable de LayerSStations à LayerStation parce que le double -S me posait des problèmes pour le voir) et chaque fois que je l'exécute, il renvoie l'erreur "00840 : la valeur n'est pas une couche d'entités".

Voici mon code, jusqu'au moment où il renvoie l'erreur :

importer arcpy #créer un objet carte pour la carte thisMap = arcpy.mapping.MapDocument(r"C:UsersAndyDocumentsGIS DataBaseEsriPressGISTPythonMapsTutorial 3-3.mxd") #Create objet de bloc de données myDF = arcpy.mapping.ListDataFrames(thisMap)[0] #Créer un objet de liste des éléments de la carte myMapElements = arcpy.mapping.ListLayoutElements(thisMap) #Obtenir une liste de toutes les couches dans la table des matières #Utiliser un pour boucle pour trouver les couches Parcels et SamplingStations #affectez-les à de nouvelles variables pour une référence plus facile myLayers = arcpy.mapping.ListLayers(myDF) pour lyr dans myLayers: if lyr.name == "Parcels": print "Parcels have been found." layerParcels = lyr elif lyr.name == "SamplingStations": print "Des stations d'échantillonnage ont été trouvées." layerStation = lyr #créer une couche d'entités pour contenir uniquement les stations d'échantillonnage opérationnelles arcpy.MakeFeatureLayer_management(layerStation,"ActiveStations_lyr",'"Status='Operational")

Il échoue sur cette dernière commande, la ligne MakeFeatureLayer_management. Une idée de ce que je fais mal?

J'ai parcouru maintes et maintes fois les noms de variables à la recherche de mauvaises choses, j'ai effectué le débogage de Rubber Duck et je n'arrive pas à résoudre le problème.

EDIT : ajout du code d'origine à l'extrait de code.


Il y a un problème avec votre code. si votre code entre dans cette instruction if :

if lyr.name == "Parcels":

alors la layerStation sera None (elle ne sera pas assignée). Par conséquent, MakeFeatureLayer renverra une erreur. le bon code serait :

pour lyr dans myLayers : if lyr.name == "Parcels": print "Les colis ont été trouvés." finalLayer = lyr elif lyr.name == "SamplingStations": print "Les stations d'échantillonnage ont été trouvées." finalLayer = lyr arcpy.MakeFeatureLayer_management(finalLayer,"ActiveStations_lyr",'"Status='Operational")