问题:以下文件夹中分别保存有N个时间相同的栅格数据,现需要将三个文件夹中的数据合并为一个对应时间的数据。
方法:1. ArcGIS"镶嵌至新栅格"工具
ok,环境设置为输入并集,输出结果emmmmm;确定方法没问题,那就是工具的问题了。换工具。
2. Qgis工具栏"栅格-->杂项-->合并"工具
ok,合并成功!!!, 问题来了,每个文件夹中有N多个数据,手工操作下来我就可以和泰森掰手腕了;整活。
3. Python调用Qgis Api批量处理文件,在Qgis中打开python控制台,打开编辑器,复制以下代码到编辑器,修改变量,编辑-->运行。本人合并完270*3张tif文件,用时5分钟!!!不得不感叹科技改变生活。
import os
import processing
# 换成自己的文件夹路径
BJ="C:\\Users\\91854\\Desktop\\毕设\\shuju\\【立方数据学社】北京市"
filesBJ = os.listdir(BJ)
pathlist = []
# 合并后文件保存路径
savepath = "C:\\Users\\91854\\Desktop\\毕设\\shuju\\test"
savename = []
for i in filesBJ:
savename.append (savepath+ "\\" + "NDVI"+i.split('_')[-3]+".tif")
pathlist.append(BJ+"\\"+i)
# 换成自己的文件夹路径
TJ="C:\\Users\\91854\\Desktop\\毕设\shuju\\【立方数据学社】天津市"
filesTJ = os.listdir(TJ)
for i in filesTJ:
pathlist.append(TJ+'\\'+i)
# 换成自己的文件夹路径
HB="C:\\Users\\91854\\Desktop\\毕设\shuju\\【立方数据学社】河北省"
filesHB = os.listdir(HB)
for i in filesHB:
pathlist.append(HB+'\\'+i)
bji = 0
tji = len(filesBJ) # 这里应该是每个文件夹里文件的数量
hbi = 2*len(filesBJ) # 这里应该是每个文件夹里文件的数量的二倍
while bji < len(filesBJ):
alg_params = {
'DATA_TYPE': 5,
'EXTRA': '',
'INPUT': [pathlist[bji],pathlist[tji],pathlist[hbi]],
'NODATA_INPUT': None,
'NODATA_OUTPUT': None,
'OPTIONS': '',
'PCT': False,
'SEPARATE': False,
'OUTPUT': savename[bji]
}
print([pathlist[bji],pathlist[tji],pathlist[hbi]])
processing.run("gdal:merge", alg_params)
print(savename[bji],'success')
bji += 1
tji += 1
hbi += 1