基于Arcpy的TIF栅格多年数据的批量镶嵌

首先通过Matlab将需要拼接的数据的目录及名称获取,注意,如果要用Matlab的话,保证拼接数据名称长度的一致性。

调整目录到该需要镶嵌的数据下
e=dir('*.tif');
datasum=[];
for i=1:length(e)
    data=e(i).name;
    data=strcat('G:/yellow original modis MOD13A2/h27v05/',data,';');
    datasum=[datasum;data];
end
%再次调整目录到该需要镶嵌的数据下
e=dir('*.tif');
datasum1=[];
for i=1:length(e)
    data=e(i).name;
    data=strcat('G:/yellow original modis MOD13A2/h26v05/',data,';');
    datasum1=[datasum1;data];
end
%再次调整目录到该需要镶嵌的数据下
e=dir('*.tif');
datasum2=[];
for i=1:length(e)
    data=e(i).name;
    data=strcat('G:/yellow original modis MOD13A2/h26v04/',data);
    datasum2=[datasum2;data];
end
%对来源数据进行合并
dd=[datasum,datasum1,datasum2];
%调整工作路径到目标数据下
e=dir('*.tif');
datasum3=[];
for i=1:length(e)
    data=e(i).name;
    data=strcat('G:/yellow original modis MOD13A2/h25v05/',data);
    datasum3=[datasum3;data];
end

需要注意的是,每次目录下的数据按照同样的顺序排列的,运行完毕后,将变量dd复制到excel中,并存为csv格式,本文存成h26v04.csv,该文件是镶嵌文件,目标文件存为h25v05n.csv.另外上述中调整好几次工作空间,为了方便起见,读者也能够将所有数据放在一起,然后使用e=dir('*.tif'),得到所有的文件,然后使用for=1:length(e),然后再里面用代码得到每个的名称,并进行组合,这里就不再赘述。

# -*- coding: utf-8 -*-
# Import arcpy module
import arcpy
import csv
import numpy as np

csv_reader = csv.reader(open('G:/yellow original modis MOD13A2/h25v05 .csv'))
h25v05=[]
for row in csv_reader:
    h25v05.append(row)

csv_reader = csv.reader(open('G:/yellow original modis MOD13A2/h26v04.csv'))
h26v04=[]
for row in csv_reader:
    h26v04.append(row)


# Local variables:
a=np.arange(0,345) #这里设置0,345是因为作者需要批量拼接344个数据集,如果要拼100个,则设置99就行
for i in a:
    result=h25v05[i]
    a5=''.join(result)
    a6=a5
    a1=h26v04[i]
    a1="".join(a1)
    arcpy.Mosaic_management(a1,a6,"LAST", "FIRST", "-3000", "-3000", "NONE", "0", "NONE")
    print (i)

上述代码的重点在于使用''.join函数使得列表变成字符串,镶嵌的核心代码写法是先通过Arcigs中的建模工具获取,然后按照里面的写法来进行编写,运行完毕后,镶嵌结果在目标数据中,而不会产生新的文件。

更多需求,请查看个人介绍

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容