python+arcpy批量拼接MODIS数据

前段时间学习了批量下载、批量提取多栅格影像、这几天粗略地写了一个批量拼接的代码

主要环境:arcgis pro 3、python3、arcpy

效果图:

主要函数:

arcpy.management.Mosaic(inputs, target, {mosaic_type}, {colormap}, {background_value}, {nodata_value}, {onebit_to_eightbit}, {mosaicking_tolerance}, {MatchingMethod})

参数介绍:来源于arcgis pro 帮助文档

inputs

[input,...]

要合并的栅格数据集。

Mosaic Dataset; Raster Dataset; Raster Layer

target

输入栅格将被添加到的栅格。 此栅格必须是一个现有的栅格数据集。 默认情况下,目标栅格被视为输入栅格数据集列表中的第一个栅格。 使用创建栅格数据集工具可创建空栅格。

Raster Dataset

mosaic_type

(可选)

指定将用于镶嵌重叠区域的方法。

  • FIRST—叠置区域的输出像元值为镶嵌到该位置的第一个栅格数据集中的值。
  • LAST—叠置区域的输出像元值为镶嵌到该位置的最后一个栅格数据集中的值。 这是默认设置。
  • BLEND—叠置区域的输出像元值为叠置区域中各像元值的水平加权计算结果。
  • MEAN—重叠区域的输出像元值为叠置像元的平均值。
  • MINIMUM—重叠区域的输出像元值为叠置像元的最小值。
  • MAXIMUM—重叠区域的输出像元值为叠置像元的最大值。
  • SUM—重叠区域的输出像元值为叠置像元的总和。
String

colormap

(可选)

指定对输入栅格中应用于镶嵌输出的色彩映射表进行选择的方法。

  • FIRST—列表中第一个栅格数据集中的色彩映射表将应用于输出栅格镶嵌。 这是默认设置。
  • LAST—列表中最后一个栅格数据集中的色彩映射表将应用于输出栅格镶嵌。
  • MATCH—镶嵌时将考虑所有色彩映射表。 如果已经使用了所有可能的值(对于位深度),则该工具将与具有最接近的可用色彩的值进行匹配。
  • REJECT—仅镶嵌不具有关联色彩映射表的栅格数据集。
String

background_value

(可选)

移除在栅格数据周围创建的不需要的值。 指定的值与栅格数据集中的其他有用数据不同。 例如,栅格边界上为零的值不同于栅格数据集内的零值。

指定的像素值在输出栅格数据集中将被设置为 NoData。

对于基于文件的栅格和地理数据库栅格,要忽略背景值,必须将忽略背景值设置为与 NoData 相同的值。 企业级地理数据库栅格无需经过此额外步骤即可忽略背景值。

Double

nodata_value

(可选)

具有指定值的所有像素将在输出栅格数据集中被设置为 NoData。

Double

onebit_to_eightbit

(可选)

指定是否将输入 1 位栅格数据集转换为 8 位栅格数据集。 使用这种转换方法时,输入栅格数据集中的值 1 将在输出栅格数据集中更改为 255。 这在将 1 位栅格数据集导入地理数据库时十分有用。 1 位栅格数据集存储在文件系统中时包含 8 位金字塔图层,但在地理数据库中,1 位栅格数据集只能包含 1 位金字塔图层,这会降低显示质量。 通过在地理数据库中将数据转换为 8 位,可将金字塔图层构建为 8 位而非 1 位,从而在显示画面中生成适合的栅格数据集。

  • NONE—不发生任何转换。 这是默认设置。
  • OneBitTo8Bit—将转换输入栅格。
Boolean

mosaicking_tolerance

(可选)

发生镶嵌时,目标及源像素并不总是准确地排成直线。 如果像素未对齐,则需要确定是重新采样还是平移数据。 镶嵌容差可控制是否对像素执行重采样,或者是否平移像素。

如果(传入的数据集与目标数据集之间的)像素偏差大于该容差,则执行重采样。 如果(传入的数据集与目标数据集之间的)像素偏差小于该容差,则不执行重采样,而是执行平移。

容差的单位为像素,有效值范围为 0 到 0.5。 容差为 0.5 会保证发生平移。 存在像素偏差时,容差为零会保证执行重采样。

例如,源像素和目标像素的偏差值为 0.25。 如果将镶嵌容差设置为 0.2,由于像素偏差大于该容差,因此将执行重采样。 如果将镶嵌容差设置为 0.3,则会平移像素。

Double

MatchingMethod

(可选)

指定应用于栅格的颜色匹配方法。

  • NONE—当镶嵌栅格数据集时将不使用颜色匹配方法。
  • STATISTIC_MATCHING—来自重叠区域的描述性统计数据将被匹配;然后,变换将应用于整个目标数据集。
  • HISTOGRAM_MATCHING—参考重叠区域中的直方图将与源重叠区域匹配;然后将变换应用于整个目标数据集。
  • LINEARCORRELATION_MATCHING—重叠的像素将被匹配,而源数据集的其余部分将被插值;没有一对一关系的像素将使用加权平均值。
String

在python中写一个按照每天获取文件地址的代码,传入输入和输出,再加一个循环,即可实现应用。

import os
import arcpy
arcpy.env.workspace = r"F:\MOD06_L2\output2"
tif_file_path="F:/MOD06_L2/output3/"
tif_file_path1="F:/MOD06_L2/output2/"
out_file_path="F:/MOD06_L2/pinjie/"
arcpy.env.workspace=tif_file_path

tif_file_name=os.listdir(tif_file_path)
length=len(tif_file_name)
j=int(length)
i=0
lis=[]
lis1=[]
lis2=[]
while (i<j):
    tif_file_date=tif_file_name[i][0:7]+str(i)
    tif_file_date2=tif_file_name[i][0:7]
    tif_file=tif_file_name[i]
    l=(tif_file_date,tif_file)
    lis1.append(tif_file_date2)
    lis2.append(tif_file_path1+tif_file)
    lis.append(l) 
    i=i+1
dic=dict(lis)

set0=list(set(lis1))
set1=sorted(set0)
print(set1)
print(len(set1))

from collections import Counter
result=dict(Counter(lis1))
print(result)

countle=0
w=0
setlen=int(len(set1))
while (w<setlen):
     date=set1[w]
     print(date)
     my_dict=result
     count=my_dict.get(str(date))
     print(count)
     
     w=w+1 
     print(w)
     input=''
     k=0
     while (k<count):
        kk=countle+k
        print(kk)
        if (k==count-1):
            input=input+lis2[kk]
            output=lis2[kk]
        else:
            input=input+lis2[kk]+';'
    
        k=k+1
     print(input)
     print(output)
     countle=countle+int(count) 
     arcpy.Mosaic_management(input,output,"LAST","FIRST","nan", "nan", "", "", "")
           




##Mosaic two TIFF images to a single TIFF image
##Background value: 0
##Nodata value: 9



##==================================
##Mosaic
##Usage: Mosaic_management inputs;inputs... target {LAST | FIRST | BLEND | MEAN | MINIMUM | MAXIMUM} {FIRST | REJECT | LAST | MATCH} 
##                         {background_value} {nodata_value} {NONE | OneBitTo8Bit} {mosaicking_tolerance}  
##                         {NONE | STATISTIC_MATCHING | HISTOGRAM_MATCHING 
##                         | LINEARCORRELATION_MATCHING}

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值