首先是转换格式,原始hdf数据是这样

# -*- coding:utf-8 -*-
import os
import arcpy
from arcpy import envsourceDir=u'E:' #中文路径 输入
targetDir=u'E:' #英文路径 输出arcpy.CheckOutExtension("Spatial")
env.workspace = sourceDir
arcpy.env.scratchWorkspace = sourceDir
hdfList = arcpy.ListRasters('*','hdf')
for hdf in hdfList:print hdfeviName=os.path.basename(hdf).replace('hdf','tif')outname=targetDir+'\\'+eviNameprint outnamedata1=arcpy.ExtractSubDataset_management(hdf,outname, "Eight_Day_Snow_Cover") #Eight_Day_Snow_Cover是子数据集名称
##
print 'all done'

接下来是获取每个HDF/TIF 年内天数数据,生成列表或文件,以方便后期判断合成日期是否一致

import os
import glob
import pandas as pd
path=r'E:\data'
outws=r'E:\天数列表'
rasters = glob.glob(os.path.join(path, "*.tif"))
for year in range(2000,2020):#这里数据是2000-2019年days_list=[]for ras in rasters:info=os.path.basename(ras).split('.')[1]info=info.replace('A','')if str(info[:4])==str(year):days=info[4:7] #截取天数days_list.append(days)outname=outws+'\\'+str(year)+'.csv'#输入文件名days_list_f=list(set(days_list))days_list_f.sort(reverse=False)days_list_df=pd.DataFrame(days_list_f)days_list_df.columns=['days']# df设置列名days_list_df.to_csv(outname,header=True,encoding='gbk')  #写入文件CSV

得到的天数文件

然后继续拼接tif

# -*- coding:gbk-*-import arcpy
import glob
import os
from arcpy import env
import pandas as pd
arcpy.CheckOutExtension("Spatial")
#指定影像所在目录
env.workspace  =r'E:'#输入路径
inws =r'E:' #输入路径
##inws=inws.encode('utf-8')
outws = r'E:' #输出路径
mask = r"E:\WGS84Project.prj" #投影文件days_inws=r'E:\天数列表'#判断日期函数,由于MODIS数据文件是以年内天数命名,为了将其转为日期,并给镶嵌后的文件重新命名,如2001001变为2001_01_01
def out_date(year,day):fir_day = datetime.datetime(year,1,1)zone = datetime.timedelta(days=day-1)return datetime.datetime.strftime(fir_day + zone, "%Y_%m_%d")#利用glob包,将inws下的所有tif文件读存放到rasters中
##rasters = glob.glob(os.path.join(inws, "*.tif"))
csv_file = glob.glob(os.path.join(days_inws, "*.csv"))
for year in csv_file:year_csv=os.path.basename(year).split('.')[0]data=pd.read_csv(year,encoding='gbk')days=list(data['days'])for d in days:raster_list=[]day=int(str(d))print day,year_csvfor ras in arcpy.ListFiles("*.tif"):
#循环rasters中的所有影像,进行按掩模提取操作info=os.path.basename(ras).split('.')[1]info=info.replace('A','')day_info=int(info[4:7])if str(info[:4])==str(year_csv) and day==day_info:raster_list.append(ras)print infoyear_info_shift=info[:4]days_info_shift=info[4:7]#生成文件名日期finame_1=out_date(int(year_info_shift),int(days_info_shift))print finame_1##        #完整文件名outname=finame_1+'_MOD10A2.tif'print outnametry:##Mosaic several TIFF images to a new TIFF imagearcpy.MosaicToNewRaster_management(raster_list,outws, outname, mask,\"32_BIT_UNSIGNED", "", "1", "LAST","FIRST")except:print "Mosaic To New Raster example failed."print arcpy.GetMessages()
print 'mosaic finish'

拼接结果:

python_MODIS HDF数据转为tif并拼接图像相关推荐

  1. python把hdf转为tif_python_MODIS HDF数据转为tif并拼接图像

    首先是转换格式,原始hdf数据是这样 # -*- coding:utf-8 -*- import os import arcpy from arcpy import env sourceDir=u'E ...

  2. python 调用HEG工具批量处理modis数据将hdf转为tif

    python 调用HEG工具批量处理modis数据将hdf转为tif 搞了2.3天才搞定,在这里做个记录,希望 可以帮到需要的朋友. HEG工具安装需要的准备工作: 一.. JAVA安装. 电脑上没有 ...

  3. nc、hdf等数据转为带地理信息的geotif

    在做工作的时候会碰到很多nc格式的数据,并且读取的数据文件是长时间序列的,具有相同的地理投影与地理范围. 通常会用IDL来读取数据,但是读取的数据如何变为带有地理信息的数据,一直都是个问题. 以下是我 ...

  4. 使用GDAL对HDF数据进行校正

    在使用HDF的数据时,首先要对其进行校正处理.比如MODIS数据中,有个去除蝴蝶结现象.一般出现这种情况会在低分辨率卫星数据中(个人理解),比如气象卫星,海洋卫星等,这类数据一般的数据分辨率都很低,几 ...

  5. 使用GDAL对HDF数据进行geoloc校正

    在上一篇博客中,大概说了下怎么使用gdal提供的gdalwarp工具来进行校正处理.其实质与envi的glt校正应该是一样的.我把gdalwarp的代码封装了一下,写了一个类来进行geoloc处理.希 ...

  6. 批量将NC文件转为tif格式

    批量将多年的NC文件转为tif格式进行处理(来源:https://www.geek-share.com/detail/2763962738.html) 所参考和借鉴的文章的链接如下: https:// ...

  7. java 墨卡托 经纬度_JAVA代码根据经纬度范围计算WGS84与谷歌全球墨卡托包含的切片数目与拼接图像像素尺寸...

    根据项目需求编写的代码. 适用场景:在网络地图上,比如天地图与谷歌地图,用户用鼠标在地图上拉一个矩形框,希望下载该矩形框内某一层级的瓦片数据,并将所有瓦片拼接成一个完整的,包含地理坐标的tif图像. ...

  8. MATLAB:读取nc文件并将nc文件转为tif文件输出

    NC(NetCDF network Common Data Form,译为"网络通用数据格式") 文件是将多个时段的数据存储在一个文件当中. 内容格式如下: •从数学上来说,net ...

  9. HDF文件转Tif 温室气体 python代码

    HDF文件转tif文件 ,python代码 这个问题网上找了好多,基本用处不大,我专门找了地理学的同学给做的,对于计算机的我来说确实是个难点,话不多说 hdf中所用到的三个数据,我用的是co2浓度 和 ...

最新文章

  1. python装饰器原理-看完这篇文章还不懂Python装饰器?
  2. 什么是Memcache
  3. recurrence relation in parenthesis placing problem
  4. 2017第35周日乱记
  5. 程序中减少使用if语句的方法集锦
  6. Android学习之文本编辑控件的使用
  7. qt designer 手册翻译
  8. centos7下安装mysql5.7(rpm)
  9. 腾讯校园招聘历年经典面试题汇总:前端
  10. element上传图片的时候额外参数
  11. 微信H5保存或下载视频到本地,将视频直接分享视频给好友
  12. 当你焦虑时,请读《走在自己的时区里》这首诗
  13. tekla钢筋组弯钩方向
  14. pytest学习:setup、teardown、setup_class、teardown_class的区别
  15. Vue自定义组件--输入框的双向绑定--自动切换输入法的录入框
  16. JDK1.8的安装方式
  17. JavaScript 如何计算两个日期之间的天数
  18. FDTD Solutions-边界条件
  19. AR的昨天、今天和明天
  20. 国内外主流云主机 | 对比分析 - 阿里云与Digital Ocean

热门文章

  1. 智能车 PID 调试
  2. 四川重庆地区计算机考研,全国重点考研院校之四川、重庆、陕西(六)
  3. 力扣(LeetCode)1703. 得到连续 K 个 1 的最少相邻交换次数(C++)
  4. 建设工程项目全寿命周期管理是指_建设工程项目全寿命期管理
  5. 对jquery新增加的class绑定事件 jquery 对相同class 绑定事件
  6. FFmpeg源码分析:log日志系统
  7. 软件产品质量模型8个属性
  8. Mysql 定时任务的关闭
  9. 全球及中国果蔬烘干机行业运行形势及未来发展趋势报告2022-2028年
  10. 分享一个工作日 今天是周六