代碼分享 Python |arcgis pro批量刪除柵格影像異常值/重分類
任務(wù)舉例:下載的NPP影響最大值為35000,通過(guò)查看柵格數(shù)據(jù)直方圖要?jiǎng)h除異常值。

數(shù)據(jù)準(zhǔn)備:文件夾(工作空間)-含有需要批量處理的tif影像
工具準(zhǔn)備:Python arcpy 環(huán)境/arcgis pro
操作:替換代碼中的路徑即可
arcgis pro—分析—python notebook


# -*- coding: UTF-8 -*-
import arcpy
import os
import glob
import arcpy
from arcpy.sa import *
arcpy.CheckOutExtension("ImageAnalyst")? # 檢查許可
arcpy.CheckOutExtension("spatial")
arcpy.env.workspace = "*********"? #工作空間
rasters = arcpy.ListRasters("*", "tif") #遍歷工作空間中的tif格式數(shù)據(jù)
outPath = "E:*****"
whereClause = "VALUE > 30000 "? # 去除異常值
#循環(huán)rasters中的所有影像,進(jìn)行去異常值操作
for ras in rasters:
? ? outrasters = outPath + str(ras)#更改輸出柵格名字
? ? outSetNull = SetNull(ras, ras, whereClause)? # 去除異常值
? ? outSetNull.save(outrasters)
? ? print(str(ras))
print("All project is OK!")

批量重分類

# -*- coding: UTF-8 -*-
import os
import arcpy
from arcpy.sa import *
'''
我需要對(duì)NDVI,**,**,**,**進(jìn)行重分類,
本代碼對(duì)20年的NDVI進(jìn)行重分類,我的數(shù)據(jù)最大不超0.9,在我的文件夾下共有20張tif,hhh,2021.12.13寫!
'''
def reclass(inputPath, outputPath):
? ? arcpy.env.workspace = inputPath
? ? ras_List = arcpy.ListRasters("*", "tif")
? ? reclassField = "VALUE"
? ? '''
? ? RemapRange([[分類下限,分類上限,新賦的值],[以此類推],...])
? ? '''
? ? remap_NDVI = RemapRange([[-1, 0, 1], [0, 0.1, 2], [0.1, 0.2, 3], [0.2, 0.3, 4], [0.3, 0.4, 5], [0.4, 0.5, 6],
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?[0.5, 0.6, 7], [0.6, 0.7, 8], [0.7, 0.8, 9], [0.8, 0.9, 10]])
? ? for ras in ras_List:
? ? ? ? ra = os.path.join(inputPath, ras)
? ? ? ? outRecalssify = Reclassify(ra, reclassField, remap_NDVI, "NODATA")
? ? ? ? out_ra = os.path.join(outputPath, ras[0:9] + "reclass.tif")
? ? ? ? outRecalssify.save(out_ra)
? ? ? ? #print(out_ra)
if __name__ == '__main__':
? ? inputPath = r"C:\Users\NDVI"
? ? outputPath = r"C:\Users\\reclass"
? ? reclass(inputPath, outputPath)
結(jié)果:

代碼來(lái)源:
(24條消息) 代碼分享 Python |批量刪除柵格影像異常值_GeoLab 219的博客-CSDN博客
(24條消息) Python:arcpy批量重分類實(shí)現(xiàn)_arcpy重分類_何大蝦-熱紅外定量遙感的博客-CSDN博客

計(jì)算面積占比


