1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > ArcGIS批量栅格影像归一化操作

ArcGIS批量栅格影像归一化操作

时间:2018-08-27 17:45:30

相关推荐

ArcGIS批量栅格影像归一化操作

最近用ArcGIS做一个NDVI的时序分析,需要把原始影像的像素值(范围大概是在-3000 ~ 7000)转变至0~1之间,其实ArcToolBox中是有这个工具的,叫隶属模糊度,选择好影像,设置分类值函数为线性函数,这时候工具就会自动读取影像的最大最小值的了,如下图所示。

但是由于处理的影像很多,一个一个来做肯定是不现实的。而且由于每个影像的最大最小值不同,批处理操作也是比较麻烦的,这个时候只有ArcPy脚本能救急了,参考了一下现有的代码,略作修改,完美解决问题,下面直接上代码。

import arcpyfrom arcpy import envfrom 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 rasterinRaster = rastermaxValueDS = 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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。