美文网首页
基于Arcpy的TIF栅格多年数据的批量镶嵌

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

作者: 画长空_yin | 来源:发表于2018-11-20 23:36 被阅读151次

    首先通过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中的建模工具获取,然后按照里面的写法来进行编写,运行完毕后,镶嵌结果在目标数据中,而不会产生新的文件。

    相关文章

      网友评论

          本文标题:基于Arcpy的TIF栅格多年数据的批量镶嵌

          本文链接:https://www.haomeiwen.com/subject/syoyfqtx.html