影像处理过程中将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数据相关推荐

  1. python读取excelsheet-一文看懂用Python读取Excel数据

    原标题:一文看懂用Python读取Excel数据 导读:现有的Excel分为两种格式:xls(Excel 97-2003)和xlsx(Excel 2007及以上). Python处理Excel文件主要 ...

  2. python读取表格数据_Python读取Excel数据并根据列名取值

    一直想将自己接触到的东西梳理一遍,可就是迈不出第一步,希望从这篇总结开始不要再做行动的矮人了. 最近测试过程中需要用到python读取excel用例数据,于是去了解和学习了下xlrd库,这里只记录使用 ...

  3. python读取grib2数据_python读取grib grib2气象数据

    GRIB是WMO开发的一种用于交换和存储规则分布数据的二进制文件格式,主要用来表示数值天气预报的产品资料.现行的GRIB 码版本有GRIB1 和GRIB2 两种格式.由于小编只接触过GRIB1数据,所 ...

  4. python读取fnl数据计算200-800km范围内的区域平均、散度、涡度实现grads函数

    之前的气象数据如从NCEP中下载的FNL数据一般都是采用Grads处理,但Grads的代码语言比较繁杂,而且一般只用来处理气象数据,所以逐渐都不维护了.作为新生代的python,可以用来解决很多,因此 ...

  5. python读取nc数据并绘图

    使用python读取nc数据并绘图 获取nc数据的相关信息 绘图 用matplotlib绘图 用Basemap绘图 用Cartopy绘图 安装Cartopy包 获取nc数据的相关信息 from net ...

  6. 使用Python读取串口数据

    Python读取串口数据 使用Python读取串口数据 1.编程流程 2.应用serial库 3.编码设计 4.编程实现 使用Python读取串口数据 1.编程流程 串口数据流程为, 1.实例化串口连 ...

  7. python读取文本数据绘制曲线图

    目录 写在前面 代码 reference 写在前面 1.本文内容 python读取文本数据曲线图 2.转载请注明出处: https://blog.csdn.net/qq_41102371/articl ...

  8. python读取近红外光谱数据

    python读取近红外光谱数据 以SPA近红外光谱数据为例 首先安装spectrochempy光谱库 pip install spectrochempy 然后通过read_omnic()读取近红外光谱 ...

  9. python批量读取grib_Windows下Python读取GRIB数据

    之前写了一篇<基于Python的GRIB数据可视化>的文章,好多博友在评论里问我Windows系统下如何读取GRIB数据,在这里我做一下说明. 一.在Windows下Python为什么无法 ...

  10. python怎么读取sav格式_利用Python读取外部数据文件

    利用Python读取外部数据文件 [color=rgb(0, 0, 0) !important]刘顺祥 [color=rgb(0, 0, 0) !important]摘要: 不论是数据分析,数据可视化 ...

最新文章

  1. 图解RadASM使用初步
  2. h5engine造轮子
  3. oracle 11g重新安装配置,Oracle 11g数据库安装和卸载教程
  4. 信息学奥赛一本通(2023:【例4.8】数据统计)
  5. OPENCV3.0 单目摄像头标定(使用官方自带的标定图片)
  6. spring源码-自动注入
  7. 塞规公差带图_螺纹塞规公差及尺寸表
  8. php编程常用英语词汇,泰牛程序员 PHP编程掌握的英语词汇(3) 韩顺平整理
  9. html简单的网页制作
  10. 8类网线利弊_八类网线你用过吗?与六类、七类等网线有啥区别?
  11. 计算机报名登录老显示验证码错误是怎么回事,为何登录博客时输入了正确的验证码却总提示验证码错误?...
  12. 深入理解配准任务中的STN
  13. 如何锻炼腹肌更加有效?
  14. '命名空间xxx中不存在类型或命名空间名xx(是否缺少程序集引用)'-异常报错的原因
  15. 《断舍离(工作篇)》-[日]山下英子
  16. python 和vba在财务上_Excel,VBA太烦!PowerBI太贵!可以用Python处理公司财务数据并实现可视化吗?...
  17. cad 打开硬件加速卡_加速,连续变向,你以为是在说体育运动吗?其实我是在说CAD技巧...
  18. [原创] 神的计划2 - 创世纪 - 伊甸园的故事
  19. 广告过滤算法实现及优化
  20. 常用MOSFET管型号

热门文章

  1. html css开关按钮样式,纯CSS实现开关按钮
  2. 一款小工具DeskPinsEx开发笔记
  3. 项目实施方案指导性文件
  4. 无线WIFI短信认证平台(互亿无线)
  5. MCSA / Windows Server 2016 用MAP工具进行IT资产评估I和虚拟化部署准备
  6. 信号完整性(SI)电源完整性(PI)学习笔记(十)传输线的物理基础(三)
  7. 《如何成为一个会学习的人》
  8. 为什么IEEE 1588如此精确呢?
  9. Android开发常用开源框架
  10. UI - PS如何导入不同的字体