首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >一个modis遥感影像批量镶嵌的小方法

一个modis遥感影像批量镶嵌的小方法

作者头像
一个有趣的灵魂W
发布2020-09-15 12:34:16
发布2020-09-15 12:34:16
1.2K0
举报

mod/myd04_3k的数据有个不好的地方,动态的过境情况,如果你要批量镶嵌一个区域里的影像,有个小问题,他们的数量是不确定的。例如我的范围

大约是中国大陆的1/4,有时候可能一天有4景,有时候可能是5景。

废话不多说吧,问题出现了,然后就是解决办法。

前几期有提到如何把HDF文件转为wgs的tif,所以这部分就不重述了。

直接来:

import subprocess

subprocess.call('D:/Anaconda3/python.exe'+' '+'gdal_merge.py '+'-of GTiff '+'-o D:/minxinan/merge3.tif '+'D:/Thesis/aodrepair/wgsmod04tif/MOD04_3K.A2018001.0140.061.2018003202505.hdf.tif '+'D:/Thesis/aodrepair/wgsmod04tif/MOD04_3K.A2018001.0315.061.2018003202246.hdf.tif '+'D:/Thesis/aodrepair/wgsmod04tif/MOD04_3K.A2018001.0320.061.2018003202214.hdf.tif '+'D:/Thesis/aodrepair/wgsmod04tif/MOD04_3K.A2018001.0455.061.2018003202451.hdf.tif')

'''

D:/Anaconda3/python.exe gdal_merge.py -of GTiff -o D:/minxinan/merge.tif C:/pytemp/modismosictemp/modis3kre/MOD04_3K.A2018278.0335.061.2018282175910.hdf.tif.tif C:/pytemp/modismosictemp/modis3kre/MOD04_3K.A2018278.0340.061.2018282175739.hdf.tif.tif

'''

def merge4(inp1,inp2,inp3,inp4,oup):

subprocess.call('D:/Anaconda3/python.exe'+' '+'gdal_merge.py '+'-of GTiff '+'-o '+str(oup)+' '+str(inp1)+' '+str(inp2)+' '+str(inp3)+' '+str(inp4))

def merge5(inp1,inp2,inp3,inp4,inp5,oup):

subprocess.call('D:/Anaconda3/python.exe'+' '+'gdal_merge.py '+'-of GTiff '+'-o '+str(oup)+' '+str(inp1)+' '+str(inp2)+' '+str(inp3)+' '+str(inp4)+' '+str(inp5))

###这是mod04的合并

import os

files=os.listdir('D:/Thesis/aodrepair/wgsmod04tif')

path='D:/Thesis/aodrepair/wgsmod04tif'

outpath='D:/Thesis/aodrepair/wgsmod04tifmerge'

namefiles=[]

for i in files:

namefiles.append(i[10:17])###把同一天的标识取出

name=pd.Series(namefiles)

namenum=name.value_counts()##唯一值频数

nameuni=name.unique()###获得同一天的频数标识,如果后续有其他的话还要取最大值和最小值,同时def函数要新增不同的数目

for iname in nameuni:

templist=[]

ouptemp=outpath+'/'+iname+'.tif'

for flist in files:

if flist[10:17]==iname:

templist.append(path+'/'+flist)

if len(templist)<5:

merge4(templist[0],templist[1],templist[2],templist[3],ouptemp)

else:

merge5(templist[0],templist[1],templist[2],templist[3],templist[4],ouptemp)

###这是myd04的合并

files=os.listdir('D:/Thesis/aodrepair/wgsmyd04tif')

path='D:/Thesis/aodrepair/wgsmyd04tif'

outpath='D:/Thesis/aodrepair/wgsmyd04tifmerge'###还好myd和mod一样频数都是4和5

namefiles=[]

for i in files:

namefiles.append(i[10:17])###把同一天的标识取出

name=pd.Series(namefiles)

namenum=name.value_counts()##唯一值频数

nameuni=name.unique()###获得同一天的频数标识,如果后续有其他的话还要取最大值和最小值,同时def函数要新增不同的数目

for iname in nameuni:

templist=[]

ouptemp=outpath+'/'+iname+'.tif'

for flist in files:

if flist[10:17]==iname:

templist.append(path+'/'+flist)

if len(templist)<5:

merge4(templist[0],templist[1],templist[2],templist[3],ouptemp)

else:

merge5(templist[0],templist[1],templist[2],templist[3],templist[4],ouptemp)

镶嵌前

镶嵌后

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-10-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 一个有趣的灵魂W 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档