这个代码是用来批量裁剪栅格的 就是ExtractByMask这个功能
import os
import glob
import arcpy
from arcpy import env
from arcpy.sa import *
import shutil
import datetime
arcpy.CheckOutExtension("spatial")
input_path = r"E:\DATA\\" # 输入路径
output_path = input_path + 'Extract' #输出路径
if os.path.exists(output_path): #如果没有建输出文件夹 会自动建
shutil.rmtree(output_path)
os.mkdir(output_path)
else:
os.mkdir(output_path)
inMaskData = r"E:\DATA\geo\newRALUCC.tif" #掩膜文件 用shp也可以
arcpy.env.workspace = input_path
rasterList = arcpy.ListRasters("*","tif")
for raster in rasterList:
print raster
# Set local variables
inRaster = raster
#rd = arcpy.sa.Raster(inRaster)
# Set the extent environment as the raster, very important for clip with different vector
#arcpy.env.extent = rd.extent
dir_path,inraster_name = os.path.split(inRaster) # 分离路径和输入栅格名称
outraster_name = inraster_name
out_raster = output_path + '\\' + outraster_name
# Execute ExtractByMask
outExtractByMask = ExtractByMask(inRaster, inMaskData)
# Save the output
out = out_raster
outExtractByMask.save(out)
最后裁剪完的栅格 空值的地方是-3.4028235e+38(用matlab查看的) 不是nan
应该是arcgis的软件设置 空值是inf 就几乎等于-3.4028235e+38这个值了吧
如果还要继续处理 可以用matlab跑一边 这个代码我也有