python读取Himawari8数据
影像处理过程中将500m和1km分辨率的都采样到了2km
def read_hsd(inputfile):resolution = int(inputfile[-12:-10])if resolution == 10:rows = 1100cols = 11000elif resolution == 20:rows = 550cols = 5500else:rows = 2200cols = 22000# 打开文件f = open(inputfile, 'rb')# 获取Observation start timef.seek(46)imgtime = struct.unpack('d', f.read(8))[0]# 获取Total header lengthf.seek(70)header_length = struct.unpack('i', f.read(4))[0]# 获取影像formation = [('header', 'S1', header_length), ('pixel', 'i2', rows*cols)]imgdata = np.fromfile(inputfile, dtype=formation)['pixel'].reshape(rows, cols)if resolution != 20:# 重采样至550行,5500列imgdata = imgdata.reshape(550, int(20/resolution), 5500, int(20/resolution)).mean(axis=(1, 3))# 获取Sun's positionf.seek(510)sun_pos1 = struct.unpack('d', f.read(8))[0]# print(sun_pos1)f.seek(510+8)sun_pos2 = struct.unpack('d', f.read(8))[0]# print(sun_pos2)f.seek(510+8+8)sun_pos3 = struct.unpack('d', f.read(8))[0]# print(sun_pos3)# 获取Band numberf.seek(601)band_num = int.from_bytes(f.read(2), byteorder='little', signed=False)# 获取Gainf.seek(617)Gain = struct.unpack('d', f.read(8))[0]# print(Gain)# 获取Offsetf.seek(625)Offset = struct.unpack('d', f.read(8))[0]# print(Offset)# 计算radianceradiance = imgdata*Gain+Offsetdel imgdata# print(radiance[0][1580])# 对前6波段定标成反射率if band_num <= 6:# 获取radiance to albedof.seek(633)cc = struct.unpack('d', f.read(8))[0]f.close# 计算反射率albedo = radiance * ccoutdata = albedodel albedo, radiance# 后面的波段定标成计算亮温else:# 获取Central wave lengthf.seek(603)wv = struct.unpack('d', f.read(8))[0]# 获取radiance to brightness temperature(c0)f.seek(633)c0 = struct.unpack('d', f.read(8))[0]# 获取radiance to brightness temperature(c1)f.seek(641)c1 = struct.unpack('d', f.read(8))[0]# 获取radiance to brightness temperature(c2)f.seek(649)c2 = struct.unpack('d', f.read(8))[0]# 获取Speed of light(c)f.seek(681)c = struct.unpack('d', f.read(8))[0]# 获取Planck constant(h)f.seek(689)h = struct.unpack('d', f.read(8))[0]# 获取Boltzmann constant(k)f.seek(697)k = struct.unpack('d', f.read(8))[0]f.close# 计算亮温wv = wv * 1e-6rad = radiance * 1e6del radianceTe = h*c/k/wv/(np.log(2*h*c*c/((wv**5)*rad)+1))del radBT = c0 + c1 * Te + c2 * Te * Tedel Te# 返回值outdata = BTdel BT# 返回:albedo / BT, 时间, 太阳坐标sunpos = [sun_pos1, sun_pos2, sun_pos3]out = {'pixels': list(outdata.flatten()), 'time': imgtime, 'sun_pos': sunpos}del outdata, sunposreturn out
# 获取影像数据(影像、时间、太阳坐标)
def H8_Getdata(inputfolder):count = 0for band in range(1, 17):for seg in range(1, 11):seg_file = glob.glob(inputfolder + '/HS_H08*_B' + ('0'+str(band))[-2:] + \'_FLDK_*_S' + ('0'+str(seg))[-2:] + '10.DAT')if seg_file != '':count += 1if count == 160:R20_data = np.empty([5500, 5500, 16], dtype=np.float)time_data = np.empty([5500, 5500, 4], dtype=np.float)for band in range(16):# print(band + 1)band_data = []obstime = []sunpos1 = []sunpos2 = []sunpos3 = []for seg in range(1, 11):inputfile = glob.glob(inputfolder + '/HS_H08*_B' + ('0'+str(band+1))[-2:] + \'_FLDK_R*_S' + ('0'+str(seg))[-2:] + '10.DAT')# print(inputfile)segment = read_hsd(inputfile[0])imgdata = segment['pixels']band_data = band_data + imgdataif band == 15:ones = np.ones([1, 550*5500], dtype=np.float)imgtime = segment['time']sun_pos = segment['sun_pos']obstime = obstime + list(imgtime * ones.flatten())sunpos1 = sunpos1 + list(sun_pos[0] * ones.flatten())sunpos2 = sunpos2 + list(sun_pos[1] * ones.flatten())sunpos3 = sunpos3 + list(sun_pos[2] * ones.flatten())del onesdel segment# 写入影像数据R20_data[:, :, band] = np.array(band_data).reshape(5500, 5500)# 写入时间和太阳坐标if obstime != []:time_data[:, :, 0] = np.array(obstime).reshape(5500, 5500)time_data[:, :, 1] = np.array(sunpos1).reshape(5500, 5500)time_data[:, :, 2] = np.array(sunpos2).reshape(5500, 5500)time_data[:, :, 3] = np.array(sunpos3).reshape(5500, 5500)# 删除变量del band_data, obstime, sunpos1, sunpos2, sunpos3# 返回值return {'imgdata': R20_data, 'time_data': time_data}else:return 0
python读取Himawari8数据相关推荐
- python读取excelsheet-一文看懂用Python读取Excel数据
原标题:一文看懂用Python读取Excel数据 导读:现有的Excel分为两种格式:xls(Excel 97-2003)和xlsx(Excel 2007及以上). Python处理Excel文件主要 ...
- python读取表格数据_Python读取Excel数据并根据列名取值
一直想将自己接触到的东西梳理一遍,可就是迈不出第一步,希望从这篇总结开始不要再做行动的矮人了. 最近测试过程中需要用到python读取excel用例数据,于是去了解和学习了下xlrd库,这里只记录使用 ...
- python读取grib2数据_python读取grib grib2气象数据
GRIB是WMO开发的一种用于交换和存储规则分布数据的二进制文件格式,主要用来表示数值天气预报的产品资料.现行的GRIB 码版本有GRIB1 和GRIB2 两种格式.由于小编只接触过GRIB1数据,所 ...
- python读取fnl数据计算200-800km范围内的区域平均、散度、涡度实现grads函数
之前的气象数据如从NCEP中下载的FNL数据一般都是采用Grads处理,但Grads的代码语言比较繁杂,而且一般只用来处理气象数据,所以逐渐都不维护了.作为新生代的python,可以用来解决很多,因此 ...
- python读取nc数据并绘图
使用python读取nc数据并绘图 获取nc数据的相关信息 绘图 用matplotlib绘图 用Basemap绘图 用Cartopy绘图 安装Cartopy包 获取nc数据的相关信息 from net ...
- 使用Python读取串口数据
Python读取串口数据 使用Python读取串口数据 1.编程流程 2.应用serial库 3.编码设计 4.编程实现 使用Python读取串口数据 1.编程流程 串口数据流程为, 1.实例化串口连 ...
- python读取文本数据绘制曲线图
目录 写在前面 代码 reference 写在前面 1.本文内容 python读取文本数据曲线图 2.转载请注明出处: https://blog.csdn.net/qq_41102371/articl ...
- python读取近红外光谱数据
python读取近红外光谱数据 以SPA近红外光谱数据为例 首先安装spectrochempy光谱库 pip install spectrochempy 然后通过read_omnic()读取近红外光谱 ...
- python批量读取grib_Windows下Python读取GRIB数据
之前写了一篇<基于Python的GRIB数据可视化>的文章,好多博友在评论里问我Windows系统下如何读取GRIB数据,在这里我做一下说明. 一.在Windows下Python为什么无法 ...
- python怎么读取sav格式_利用Python读取外部数据文件
利用Python读取外部数据文件 [color=rgb(0, 0, 0) !important]刘顺祥 [color=rgb(0, 0, 0) !important]摘要: 不论是数据分析,数据可视化 ...
最新文章
- 图解RadASM使用初步
- h5engine造轮子
- oracle 11g重新安装配置,Oracle 11g数据库安装和卸载教程
- 信息学奥赛一本通(2023:【例4.8】数据统计)
- OPENCV3.0 单目摄像头标定(使用官方自带的标定图片)
- spring源码-自动注入
- 塞规公差带图_螺纹塞规公差及尺寸表
- php编程常用英语词汇,泰牛程序员 PHP编程掌握的英语词汇(3) 韩顺平整理
- html简单的网页制作
- 8类网线利弊_八类网线你用过吗?与六类、七类等网线有啥区别?
- 计算机报名登录老显示验证码错误是怎么回事,为何登录博客时输入了正确的验证码却总提示验证码错误?...
- 深入理解配准任务中的STN
- 如何锻炼腹肌更加有效?
- '命名空间xxx中不存在类型或命名空间名xx(是否缺少程序集引用)'-异常报错的原因
- 《断舍离(工作篇)》-[日]山下英子
- python 和vba在财务上_Excel,VBA太烦!PowerBI太贵!可以用Python处理公司财务数据并实现可视化吗?...
- cad 打开硬件加速卡_加速,连续变向,你以为是在说体育运动吗?其实我是在说CAD技巧...
- [原创] 神的计划2 - 创世纪 - 伊甸园的故事
- 广告过滤算法实现及优化
- 常用MOSFET管型号