gee下载ndvi、lst并用python计算tvdi,出现缺失值nodata,
在gis中先复制原始tif,将nodata设置为-9999,tvdico.tif
栅格计算器,给nodata赋值,这里输入的是copy后的栅格
空间分析--栅格综合--nibble,如下图:原始tif是只copy结果图
(Nibble 仅适用于掩膜栅格中的 NoData 值。请注意,掩膜栅格中所有非NoData 像元均会接收输入栅格中的值。这些像元的值及其位置均将被用于向掩膜栅格各 NoData 位置处分配值。NoData 位置将接收输入栅格中被识别为掩膜栅格中最近非 NoData 像元的像元值。)
arcpy批处理:::
import arcpy
from arcpy.sa import *
# 检查Spatial Analyst 扩展模块是否可用
if arcpy.CheckExtension("Spatial") == "Available":
arcpy.CheckOutExtension("Spatial")
else:
raise LicenseError("Spatial Analyst 扩展不可用")
# 设置工作环境
arcpy.env.workspace = r"D:" # 设置工作空间路径
input_folder = r"D:" # 输入栅格文件夹路径
mask_folder = r"D:" # 掩膜栅格文件夹路径
output_folder = r"D:" # 输出栅格文件夹路径
# 获取输入栅格文件和掩膜栅格文件列表
arcpy.env.workspace = input_folder
input_rasters = arcpy.ListRasters("*", "TIF") # 假设栅格文件为TIF格式
arcpy.env.workspace = mask_folder
mask_rasters = arcpy.ListRasters("*", "TIF")
# 输出文件数量检查
print(f"找到 {len(input_rasters)} 个输入栅格文件.")
print(f"找到 {len(mask_rasters)} 个掩膜栅格文件.")
# 确保输入栅格和掩膜栅格文件数量一致
if len(input_rasters) != len(mask_rasters):
raise ValueError("输入栅格和掩膜栅格文件数量不一致")
# 批处理Nibble操作
for input_raster, mask_raster in zip(input_rasters, mask_rasters):
input_raster_path = f"{input_folder}\\{input_raster}"
mask_raster_path = f"{mask_folder}\\{mask_raster}"
# 生成输出文件名
output_raster_name = f"nibbled_{input_raster}" # 使用输入栅格文件的名称作为输出文件的一部分
# 拼接输出文件的完整路径
output_raster_path = f"{output_folder}\\{output_raster_name}"
# 执行Nibble操作
try:
print(f"正在处理: {input_raster_path} 使用掩膜: {mask_raster_path}")
nibble_result = Nibble(input_raster_path, mask_raster_path, "ALL_VALUES")
nibble_result.save(output_raster_path)
print(f"已生成: {output_raster_path}")
except Exception as e:
print(f"处理 {input_raster_path} 时出错: {e}")
print("所有栅格处理完成")
# 释放Spatial Analyst 扩展模块
arcpy.CheckInExtension("Spatial")
从ArcGIS教程:使用 Nibble、收缩和扩展功能对区域进行概化_nibble命令-优快云博客;ArcGIS学习总结(15)——影像空缺值蚕食填充批处理(Nibble)_arcgis蚕食-优快云博客学习