Kommentit
Vastaa
arcpy.env.workspace
-polkusi – F:\raster_test
– luultavasti ei ole olemassa tai arcpy: llä ei ole pääsyä siihen. arcpy.ListRasters()
palauttaa tyhjän luettelon []
jos rastereita ei löydy, mutta palauttaa None
, jos polkua ei löydy:
Polku on olemassa:
arcpy.env.workspace = r"C:\Temp" # Does Exist rasters = arcpy.ListRasters("*.tif) print rasters
Tulostaa:
[]
Polku ei ei ole olemassa:
arcpy.env.workspace = r"C:\Temp2" # Does NOT Exist rasters = arcpy.ListRasters("*.tif) print rasters
Tulostaa:
None
vastaus
… myös varmuuskopiointi lähemmäs koodin alkua kohti on tämä viallinen rivi (\ r on pakosarja Pythonissa):
arcpy.env.workspace = "F:\raster_test" # Does NOT Exist
Jos F: \ rasteri_testi on kelvollinen polku (ja sisältää rastereita), tämän pitäisi toimia hyvin:
arcpy.env.workspace = r"F:\raster_test" # Does Exist
Katso Python doc -osio merkkijonon literaaleista .
Kommentit
- +1 @Sujai Tämä on klassinen python gotcha (ainakin Windowsissa). " \ r " on kuljetuspalautuksen pakosarja. Ajantasaisempi (vaikka varsinainen pakosarja ' t muuttui) on docs.python.org/2/reference/ lexical_analysis.html # merkkijonot
- Sinä ' olet oikeassa, Luke …. -linkki päivitettiin uudempaan linkkiin. Paljon muuta hyvää tällä sivulla.
Vastaa
En ole varma, mikä aiheuttaa NoneType
-virhe, arcpy.ListRasters()
palauttaisi tyhjän luettelon eikä koskaan NoneType
jos rastereita ei olisi löytyi. Anna tämä laukaus:
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")
Vastaa
Uskon, että eri List
-funktiot (ListTables
, ListFeatureclasses
jne.) palauttavat aina None
jos annetussa työtilassa ei ole vastaavia tyyppejä. Suorita if
-looginen testi luettelomuuttujalle.
rasters = arcpy.ListRasters ("*.TIF") if rasters: your code here
.TIFF
-tiedostot sekä.TIF