Commenti
Risposta
Il tuo arcpy.env.workspace
percorso – F:\raster_test
– probabilmente “non esiste o arcpy non ha accesso ad esso. arcpy.ListRasters()
restituirà un elenco vuoto []
se non vengono trovati raster, ma restituirà None
se il percorso non è” t trovato:
Il percorso esiste:
arcpy.env.workspace = r"C:\Temp" # Does Exist rasters = arcpy.ListRasters("*.tif) print rasters
Restituirà:
[]
Il percorso non non esiste:
arcpy.env.workspace = r"C:\Temp2" # Does NOT Exist rasters = arcpy.ListRasters("*.tif) print rasters
produrrà:
None
Risposta
… inoltre, il backup più vicino allinizio del codice è questa riga difettosa (\ r è una sequenza di escape in Python):
arcpy.env.workspace = "F:\raster_test" # Does NOT Exist
Se F: \ raster_test è un percorso valido (e contiene raster), dovrebbe funzionare bene:
arcpy.env.workspace = r"F:\raster_test" # Does Exist
Vedi la sezione della documentazione di Python su stringhe letterali .
Commenti
- +1 @Sujai Questo è un classico trucco in Python (almeno su Windows). " \ r " è la sequenza di escape per un ritorno a capo. Una versione più aggiornata (sebbene le effettive sequenze di fuga non siano ' t modificata) è docs.python.org/2/reference/ lexical_analysis.html # strings
- Tu ' hai ragione, Luke …. link nella risposta aggiornato al link più recente. Molte altre cose interessanti in quella pagina.
Rispondi
Non sono sicuro di cosa stia causando il tuo NoneType
errore, arcpy.ListRasters()
restituirebbe un elenco vuoto e mai un NoneType
se non cerano raster trovato. Prova:
import arcpy import os from arcpy.sa import ExtractByMask out_dir = r"F:\clipped_images" arcpy.env.workspace = r"F:\raster\test" arcpy.CheckOutExtension("Spatial") mask = r"F:\shapefile\Export_Output.shp" for raster in arcpy.ListRasters("*.tif"): output_raster = os.path.join(out_dir, os.path.splitext(raster)[0] + "_clip.tif") ExtractByMask(raster, mask, output_raster) arcpy.CheckInExtension("Spatial")
Risposta
Credo che i vari Le List
funzioni (ListTables
, ListFeatureclasses
e così via) restituiscono sempre None
se non sono presenti tipi corrispondenti nello spazio di lavoro specificato. Esegui un rapido if
test logico per la tua variabile di elenco.
rasters = arcpy.ListRasters ("*.TIF") if rasters: your code here
.TIFF
file da includere e.TIF