Python遥感开发之arcpy批量重采样
- 1. 重采样
- 2. ARCGIS中的重采样
- 3. Python_arcpy代码实现
前言:主要介绍使用ARCGIS中自带的重采样工具,以及Python代码实现arcpy批量重采样,使用Python代码更加方便快捷。
1. 重采样
- 作用:更改栅格数据集的空间分辨率并针对所有新像素大小的聚合值或插值设置规则。
- 可改变像元大小,但栅格数据集的范围将保持不变。
- 最邻近 - 执行最邻近分配法,是速度最快的插值方法。此选项主要用于离散数据(如土地利用分类),因为它不会更改像元的值。最大空间误差将是像元大小的一半。
- 众数 - 执行众数算法,可根据过滤器窗口内的最常用值来确定像元的新值。与最邻近法一样,此选项主要用于离散数据;但与“最邻近”选项相比,“众数”选项通常可生成更平滑的结果。众数重采样方法将在与输出像元中心最接近的输入空间中查找相应的 4 x 4 像元,并使用 4 x 4 相邻点的众数。
- 双线性 - 执行双线性插值并基于四个最邻近的输入像元中心的加权平均距离来确定像元的新值。这对连续数据非常有用并且会对数据进行一些平滑处理。
- 三次卷积 - 执行三次卷积插值法,可通过拟合穿过 16 个最邻近输入像元中心的平滑曲线确定像元的新值。此选项适用于连续数据,尽管所生成的输出栅格可能会包含输入栅格范围以外的值。与通过运行最邻近重采样算法获得的栅格相比,输出栅格的几何变形程度较小。“三次”选项的缺点是需要更多的处理时间。在某些情况下,此选项会使输出像元值位于输入像元值范围之外。如果无法接受此结果,请转而使用“双线性”选项。
2. ARCGIS中的重采样
- 注意1:X和Y要设置成一致
- 注意2:由于次遥感图是地理坐标,0.005表示的是500m的分辨率,0.01表示的是1000米的分辨率,依次类推
- 注意3:投影坐标500就表示500m的分辨率,1000表示1000的分辨率
3. Python_arcpy代码实现
注意:使用的ARCGIS中Python2.7,记得切换环境。
代码实现:
#encoding:utf-8
import glob
import os
import arcpy
if __name__ == "__main__":
file = r"D:\0000Desktop\AAAAAwork\研究方向\data\河南NDVI"
out = r"D:\0000Desktop\AAAAAwork\研究方向\data\河南NDVI_500m"
file = unicode(file, "utf-8")
out = unicode(out, "utf-8")
os.chdir(file)
names = os.listdir(file)
for name in names:
print(name)
filepath = file+'\\'+name
output = out+'\\'+name
arcpy.Resample_management(filepath, output, "0.005", "NEAREST")#这个是在地理坐标的基础上进行的重采样
#删除多余的文件
for file_i in glob.glob(os.path.join(out, '*.xml')):
os.remove(file_i)
for file_i in glob.glob(os.path.join(out, '*.tfw')):
os.remove(file_i)
for file_i in glob.glob(os.path.join(out, '*.ovr')):
os.remove(file_i)