python把hdf转为tif_python_MODIS HDF数据转为tif并拼接图像
首先是转换格式,原始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并拼接图像相关推荐
- python_MODIS HDF数据转为tif并拼接图像
首先是转换格式,原始hdf数据是这样 # -*- coding:utf-8 -*- import os import arcpy from arcpy import envsourceDir=u'E: ...
- python使用pd.to_numeric()方法将数据转为数字类型int或float
目录 案例1 案例2. 支持整型和浮点型进行下放 案例3 一次性转换多列的格式 方法1 方法2 pandas.to_numeric(arg, errors='raise', downcast=None ...
- 【python】无规律时间步长时序数据转为固定步长
写在前面 日常可能会遇到时间步长无规律的数据,需要转化为固定时间步长,此时需要进行重采样或插值. 例子 在选择好时间间隔后,可以用pandas的resample来操作. import pandas a ...
- python将gml格式的图数据转为txt格式,点和边的字符值分别用数字替代
# -*- coding: utf-8 -*- import networkx as nx import copy# 抽取gml中的数据 # networkx可以直接通过函数从gml文件中读出数据 d ...
- Camera摄像头帧数据转为bitmap
Camera摄像头帧数据转为bitmap 文章目录 Camera摄像头帧数据转为bitmap 帧数据转为bitmap 关于YuvImage **compressToJpeg 方法** 帧数据转为bit ...
- python 画三维函数图-Python画三维图-----插值平滑数据
一.二维的插值方法: 原始数据(x,y) 先对横坐标x进行扩充数据量,采用linspace.[如下面例子,由7个值扩充到300个] 采用scipy.interpolate中的spline来对纵坐标数据 ...
- python生成json_如何将Python数组转为Json格式数据并存储?
在Python中将数组转为Json数据存储时需要用到将json模块中的json.dumps()或者json.dump()方法. ·json.dumps()方法用法 使用json.dumps( )方法将 ...
- 解决Python中TCP数据转为json后中文变为Ascii码的问题
我们我们有时候会使用TCP直接传输JSON数据,这时候正确解析数据就很关键了,最近在使用Python解析TCP传输的JSON数据时就遇到了中文不能正常显示的问题. 原因分析 TCP接口数据转为json ...
- python Excel数据表格转为HTML网页数据表格
python Excel数据表格转为HTML网页数据表格 文章目录 准备test数据 Excel转html 准备test数据 首先,准备一个excel.以以下代码为例,在当前目录下生成一个Excel文 ...
最新文章
- superset可视化-桑基图(sankey diagram)
- MySQL Connector/C++入门教程(上)
- 【转】windows多线程CreateThread与_beginthreadex本质区别
- MKNetWorkKit(转载)
- CORS跨域资源共享
- linux创建2g文件,嵌入式 创建一个2G的空文件(Linux命令dd)
- 黑月教主工具脱水印_一键去水印!傻瓜式图片处理工具Inpaint
- 微分方程模型_常微分方程模型简介
- 【云原生】内存数据库如何发挥内存优势
- python 录音左右声道_Python分离立体声wav压缩文件的左右声道
- arm为何断供华为?华为会使用RISC-V取代ARM?
- 论文解读 X-CLIP : Expanding Language-Image Pretrained Models for General Video Recognition
- 每天学命令get_pins
- 电视PPTV服务器响应异常,PPTV出现异常错误怎么办?PPTV异常错误解决方法
- 清除redis的key与数据
- 哗啦啦系统POS终端设备安装
- 引入tiptap之后直接报错Duplicate use of selection JSON ID cell
- MySQL 8.0 批量生产千万级用户、手机号等信息
- Springboot前后端分离excel下载
- JVM源码系列:ThreadMXBean 打出堆栈信息原理分析