代码分享 Python |arcgis pro批量删除栅格影像异常值/重分类
任务举例:下载的NPP影响最大值为35000,通过查看栅格数据直方图要删除异常值。

数据准备:文件夹(工作空间)-含有需要批量处理的tif影像
工具准备:Python arcpy 环境/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格式数据
outPath = "E:*****"
whereClause = "VALUE > 30000 " # 去除异常值
#循环rasters中的所有影像,进行去异常值操作
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 *
'''
我需要对NDVI,**,**,**,**进行重分类,
本代码对20年的NDVI进行重分类,我的数据最大不超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)
结果:

代码来源:
(24条消息) 代码分享 Python |批量删除栅格影像异常值_GeoLab 219的博客-CSDN博客
(24条消息) Python:arcpy批量重分类实现_arcpy重分类_何大虾-热红外定量遥感的博客-CSDN博客

计算面积占比


