接到的需求是對文件夾下包括子目錄所有影像進行投影變換,在網上找了找,大家的代碼好像和需求不太一致,自己寫了一個小工具。
思路是遍歷文件夾所有.tif文件。
1.用os.walk()函數來獲取路徑和文件名
2.用 if 語句限制讀取后綴為.tif的文件
3.將文件路徑和文件名組合起來
4.調用arcpy.ProjectRaster_management語句投影變換並輸出
由於剛剛接觸python,難點主要在於os.walk()目錄的讀取這個函數的了解上。
以下是代碼
1 #coding = utf-8 2 import os 3 import arcpy 4 from arcpy import * 5 6 #定義一個函數,第一個參數是一個集合,用來接收所有.tif的路徑。第二個函數是指定的文件夾。 7 def huoqu(jieshou,lujing): 8 for dirpath,dirnames,filenames in os.walk(lujing): 9 for filename in filenames: 10 if os.path.splitext(filename)[1] == '.tif': 11 file1 = dirpath+'\\'+filename 12 jieshou.append(file1) 13 14 #這里變量的設置,GetParameterAsText函數來獲取對應在python工具箱中的位置 15 env.workspace = GetParameterAsText(0) 16 work = env.workspace 17 ref = GetParameterAsText(1) 18 tifz = [] 19 20 #調用自定義的函數 21 huoqu(tifz,work); 22 23 #對所有的影像進行循環投影變換,並且將輸出路徑設置為指定的文件夾+原本的名字 24 for file in tifz: 25 out = GetParameterAsText(2)+"/"+ os.path.basename(file) 26 ProjectRaster_management(file,out,ref)
以下是工具箱參數設置
設置好輸出和輸出的文件夾以及坐標系就能輸出了
有了對文件夾下所有指定后綴的函數,只要改動arcpy提供的函數,可以對指定文件進行很多操作,比如位深升降,刪格復制等。
工具箱下載地址:
https://files.cnblogs.com/files/EVELE/%E6%8A%95%E5%BD%B1%E5%8F%98%E6%8D%A2.zip
轉載請聯系作者1600331047@qq.com