2017-04-16 36 views
-1
import arcpy, glob, os 
from arcpy import env 
from arcpy.sa import * 

# Set the input workspace 
arcpy.env.workspace = r"F:\madhavi\images_to_clip" 

arcpy.CheckOutExtension("Spatial") 

# Absolute path to your mask layer 
mask = "F:\madhavi\shapefile\shp_gang_only_final.shp" 

# Copying all the input rasters in an array 
rasters = arcpy.ListRasters() 

# Loop through rasters, append names and save files 
for raster in rasters: 
    output_raster = raster.replace(".TIF", "_clip.TIF") 
    rasterObject = arcpy.gp.ExtractByMask_sa(raster, mask, output_raster) 
    rasterObject.save(r"F:\madhavi\clipped_images")  

有,我用這個Python腳本遇到兩個問題,它們是:批量裁剪多個柵格與單一的shapefile使用ArcPy中

首先,該腳本剪裁只在第一光柵文件夾:F:\ madhavi \ images_to_clip,而不是該文件夾中的所有柵格。因此,for循環無法正常工作。

順便說一下,for循環工作的文件夾只包含兩個.TIF圖像。

其次,該腳本沒有將輸出保存在所需的文件夾中。

我仍然在掃描字符串文字(第18行)時出現「Parsing Error SyntaxError:EOL」。因此,「output_raster = raster.replace(」。TIF「,」_clip.TIF「)」存在問題。

+0

是的您的問題中的縮進與腳本中的縮進相同? (請[編輯]糾正,如果沒有) – Erica

+0

@Erica:我已經更正了第18,19和20行的縮進。但是,同樣的錯誤仍然存​​在。 –

+0

如果在'for'循環中添加兩行'print raster'和'print raster.replace(「。TIF」,「_clip.TIF」)'(現在剩下的邏輯被註釋掉),什麼是輸出?如果字符串語法有問題,那麼這是識別(然後糾正)最簡單的方法。 – Erica

回答

1

我認爲這個問題是在這個變量賦值:

mask = "F:\madhavi\shapefile\shp_gang_only_final.shp" 

錯誤消息在抱怨string literal - 所以嘗試,而不是確保它是一個字符串文字:

mask = r"F:\madhavi\shapefile\shp_gang_only_final.shp"