Viac

Chyba hádzania MakeFeatureLayer 00840: Hodnota nie je vrstvou funkcií


Pracujem na výučbách z knihy „GIS Tutorial for Python Scripting“ od Davida W. Allena a tento kód mám v podstate presne taký, aký si ho kniha želá (jeden názov premennej som zmenil z LayerSStations na LayerStation, pretože dvojitý -S mi robil problémy vidieť to) a zakaždým, keď to spustím, vyhodí chybu „00840: Hodnota nie je vrstvou funkcií.“

Tu je môj kód, až do tej miery, že spôsobí chybu:

import arcpy #vytvorte objekt mapového dokumentu pre mapový dokument thisMap = arcpy.mapping.MapDocument (r "C:  Users  Andy  Documents  GIS DataBase  EsriPress  GISTPython  Maps  Tutorial 3-3.mxd") #Create objekt dátového rámca myDF = arcpy.mapping.ListDataFrames (thisMap) [0] # Vytvoriť objekt zoznamu prvkov mapy myMapElements = arcpy.mapping.ListLayoutElements (thisMap) # Získať zoznam všetkých vrstiev v obsahu # Použiť pre slučka na nájdenie vrstiev Parcely a SamplingStations # priradiť ich k novým premenným pre ľahšiu referenciu myLayers = arcpy.mapping.ListLayers (myDF) pre lyr v myLayers: if lyr.name == "Parcels": print "Parcely boli nájdené." layerParcels = lyr elif lyr.name == "SamplingStations": tlač "Vzorkovacie stanice boli nájdené." layerStation = lyr #vytvorte vrstvu funkcií tak, aby obsahovala iba prevádzkové vzorkovacie stanice arcpy.MakeFeatureLayer_management (layerStation, "ActiveStations_lyr", '"Status = ' prevádzkové ")

Pri poslednom príkaze, riadku MakeFeatureLayer_management, zlyháva. Viete vôbec, čo robím zle?

Stále som znova a znova hľadal názvy premenných, aby som hľadal nesprávne veci, urobil som ladenie gumenej kačice a nemôžem nastoliť problém.

EDIT: Do úryvku bolo pridané viac pôvodného kódu.


Vyskytol sa problém s vaším kódom. ak váš kód vstupuje do tohto príkazu if:

ak lyr.name == "Balíky":

potom bude layerStation žiadna (nebude priradená). Preto MakeFeatureLayer vyhodí chybu. správny kód by bol:

pre lyr v myLayers: if lyr.name == "Balíky": tlač "Balíky boli nájdené." finalLayer = lyr elif lyr.name == "SamplingStations": tlač "Vzorkovacie stanice boli nájdené." finalLayer = lyr arcpy.MakeFeatureLayer_management (finalLayer, "ActiveStations_lyr", '"Status = ' Prevádzkový ")