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

# -*- coding:utf-8 -*-

import os

import arcpy

from arcpy import env

sourceDir=u'E:' #中文路径 输入

targetDir=u'E:' #英文路径 输出

arcpy.CheckOutExtension("Spatial")

env.workspace = sourceDir

arcpy.env.scratchWorkspace = sourceDir

hdfList = arcpy.ListRasters('*','hdf')

for hdf in hdfList:

print hdf

eviName=os.path.basename(hdf).replace('hdf','tif')

outname=targetDir+'\\'+eviName

print outname

data1=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_csv

for 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 info

year_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 outname

try:

##Mosaic several TIFF images to a new TIFF image

arcpy.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把hdf转为tif_python_MODIS HDF数据转为tif并拼接图像相关推荐

  1. python_MODIS HDF数据转为tif并拼接图像

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

  2. python使用pd.to_numeric()方法将数据转为数字类型int或float

    目录 案例1 案例2. 支持整型和浮点型进行下放 案例3 一次性转换多列的格式 方法1 方法2 pandas.to_numeric(arg, errors='raise', downcast=None ...

  3. 【python】无规律时间步长时序数据转为固定步长

    写在前面 日常可能会遇到时间步长无规律的数据,需要转化为固定时间步长,此时需要进行重采样或插值. 例子 在选择好时间间隔后,可以用pandas的resample来操作. import pandas a ...

  4. python将gml格式的图数据转为txt格式,点和边的字符值分别用数字替代

    # -*- coding: utf-8 -*- import networkx as nx import copy# 抽取gml中的数据 # networkx可以直接通过函数从gml文件中读出数据 d ...

  5. Camera摄像头帧数据转为bitmap

    Camera摄像头帧数据转为bitmap 文章目录 Camera摄像头帧数据转为bitmap 帧数据转为bitmap 关于YuvImage **compressToJpeg 方法** 帧数据转为bit ...

  6. python 画三维函数图-Python画三维图-----插值平滑数据

    一.二维的插值方法: 原始数据(x,y) 先对横坐标x进行扩充数据量,采用linspace.[如下面例子,由7个值扩充到300个] 采用scipy.interpolate中的spline来对纵坐标数据 ...

  7. python生成json_如何将Python数组转为Json格式数据并存储?

    在Python中将数组转为Json数据存储时需要用到将json模块中的json.dumps()或者json.dump()方法. ·json.dumps()方法用法 使用json.dumps( )方法将 ...

  8. 解决Python中TCP数据转为json后中文变为Ascii码的问题

    我们我们有时候会使用TCP直接传输JSON数据,这时候正确解析数据就很关键了,最近在使用Python解析TCP传输的JSON数据时就遇到了中文不能正常显示的问题. 原因分析 TCP接口数据转为json ...

  9. python Excel数据表格转为HTML网页数据表格

    python Excel数据表格转为HTML网页数据表格 文章目录 准备test数据 Excel转html 准备test数据 首先,准备一个excel.以以下代码为例,在当前目录下生成一个Excel文 ...

最新文章

  1. superset可视化-桑基图(sankey diagram)
  2. MySQL Connector/C++入门教程(上)
  3. 【转】windows多线程CreateThread与_beginthreadex本质区别
  4. MKNetWorkKit(转载)
  5. CORS跨域资源共享
  6. linux创建2g文件,嵌入式 创建一个2G的空文件(Linux命令dd)
  7. 黑月教主工具脱水印_一键去水印!傻瓜式图片处理工具Inpaint
  8. 微分方程模型_常微分方程模型简介
  9. 【云原生】内存数据库如何发挥内存优势
  10. python 录音左右声道_Python分离立体声wav压缩文件的左右声道
  11. arm为何断供华为?华为会使用RISC-V取代ARM?
  12. 论文解读 X-CLIP : Expanding Language-Image Pretrained Models for General Video Recognition
  13. 每天学命令get_pins
  14. 电视PPTV服务器响应异常,PPTV出现异常错误怎么办?PPTV异常错误解决方法
  15. 清除redis的key与数据
  16. 哗啦啦系统POS终端设备安装
  17. 引入tiptap之后直接报错Duplicate use of selection JSON ID cell
  18. MySQL 8.0 批量生产千万级用户、手机号等信息
  19. Springboot前后端分离excel下载
  20. JVM源码系列:ThreadMXBean 打出堆栈信息原理分析

热门文章

  1. 共享系统开发异业联盟怎么做?
  2. ubuntu 20解决TIM和QQ图片和头像不显示的问题
  3. 板式橡胶支座弹性模量怎样计算_板式橡胶支座的设计计算及选定方法
  4. 用数字计算机公式表白,数字表白公式 表白套路情话
  5. 洛谷——p2392 kkksc03考前临时抱佛脚
  6. 【应用分类】技术应用概述
  7. 云安全解决方案安全保障体系框架
  8. 【SubPhaser-多倍体亚基因组分型流程解读】
  9. 接口测试用例的编写要点有哪些?
  10. 二元函数对xy同时求导_让向量、矩阵和张量的求导更简洁些吧