ArcGIS批量柵格影像歸一化操作

  最近用ArcGIS做一個NDVI的時序分析,需要把原始影像的像素值(範圍大概是在-3000 ~ 7000)轉變至0~1之間,其實ArcToolBox中是有這個工具的,叫隸屬模糊度,選擇好影像,設置分類值函數爲線性函數,這時候工具就會自動讀取影像的最大最小值的了,如下圖所示。

但是由於處理的影像很多,一個一個來做肯定是不現實的。而且由於每個影像的最大最小值不同,批處理操作也是比較麻煩的,這個時候只有ArcPy腳本能救急了,參考了一下現有的代碼,略作修改,完美解決問題,下面直接上代碼。

import arcpy
from arcpy import env
from arcpy.sa import *
arcpy.CheckOutExtension("Spatial")
 
#這個是工作空間目錄,待處理的所有影像都在這個文件型數據庫中
env.workspace = "E:/poet/clip/clip.gdb"    

#設置讀取的柵格類型,可以參考ArcGIS的官方文檔,下面的是讀取目錄下所有類型的柵格文件
rasterList = arcpy.ListRasters("*") 
 
#結果輸出文件夾
output_path = "E:/poet/toOne/" 

for raster in rasterList:
    print raster
    
    inRaster = raster

    maxValueDS = arcpy.GetRasterProperties_management(inRaster, "MAXIMUM")
    maxValue = maxValueDS.getOutput(0)
    print "最大值:" + str(maxValue)

    minValueDS = arcpy.GetRasterProperties_management(inRaster, "MINIMUM")
    minValue = minValueDS.getOutput(0)
    print "最小值:" + str(minValue)

    NormalizationRaster = (Raster(inRaster) - float(minValue)) / (float(maxValue)- float(minValue))
    #如果輸入爲文件型影像或者輸出到數據庫裏這裏不需要加後綴名
    out = output_path + inRaster + '.tif' 
    NormalizationRaster.save(out)
    print 'finish: ' + out



 

 

發佈了25 篇原創文章 · 獲贊 12 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章