1. 读取数据并画图

    import os
    import glob
    from datetime import datetime, timedelta
    from satpy.scene import Scene
    from pyresample import get_area_def
    import warnings warnings.filterwarnings('ignore') def fileNameSplit(fileNs):
    fSplit = []
    for fpn in fileNs:
    fp = os.path.dirname(fpn)
    fn = os.path.basename(fpn).split('_P_')[-1]
    nfpn = os.path.join(fp, fn)
    if not os.path.exists(nfpn):
    os.rename(fpn, nfpn)
    fSplit.append(nfpn)
    return fSplit def time_format(info, format="%Y%m%d%H%M%S", format2="%Y%m%d%H%M00"):
    dt = datetime.strptime(info, format)
    strdt = dt + timedelta(hours=8)
    return datetime.strftime(strdt, format2) def get_fy4a(file_paths, channel_list):
    fileTime = time_format(os.path.basename(file_paths[0]).split('_')[-3])
    # 创建scene对象
    scn = Scene(file_paths, reader='agri_l1')
    # 查看可使用的通道
    if 'C03' in channel_list:
    print(scn.available_dataset_names())
    if 'true_color' in channel_list:
    # 查看可用的合成选项
    print(scn.available_composite_names())
    # 读取指定通道数据
    scn.load(channel_list)
    # 打印加载通道后 xarray.Dataset 的数据集
    # print(scn) """
    >python coord2area_def.py china merc 5 54 60 139 3
    ### +proj=merc +lat_0=29.5 +lon_0=99.5 +ellps=WGS84 china:
    description: china
    projection:
    proj: merc
    ellps: WGS84
    lat_0: 29.5
    lon_0: 99.5
    shape:
    height: 2194
    width: 2931
    area_extent:
    lower_left_xy: [-4397119.886334, 553583.846816]
    upper_right_xy: [4397119.886334, 7135562.567523]
    """
    # 画自定义区域图片
    area_id = 'china'
    area_name = "myarea"
    proj_id = 'china_99.5_29.5'
    proj4_args = '+proj=merc +lat_0=29.5 +lon_0=99.5 +ellps=WGS84'
    height = 2194
    width = 2931
    area_extent = [-4397119.886334, 553583.846816, 4397119.886334, 7135562.567523]
    # 定义地图投影和区域,然后将数据投影到该区域上
    areadef = get_area_def(area_id, area_name, proj_id, proj4_args, width, height, area_extent)
    china_scene = scn.resample(areadef) channel_ele = {'C03': 'vis', 'C09': 'vap', 'C12': 'ir', 'true_color': 'thr'}
    for cele in channel_list:
    pic_dir = r'./'
    pic_name = f'fy4a_{channel_ele[cele]}_{fileTime}.png'
    pic_path = os.path.join(pic_dir, pic_name)
    if not os.path.exists(pic_path):
    print(f'生成图片 {pic_name}')
    # 保存图片
    china_scene.save_dataset(cele, filename=pic_path) if __name__ == '__main__':
    t1 = datetime.now() grayFilePathList = ['./FY4A-_AGRI--_N_REGC_1047E_L1-_FDI-_MULT_NOM_20211020022336_20211020022753_4000M_V0001.HDF',
    './FY4A-_AGRI--_N_REGC_1047E_L1-_GEO-_MULT_NOM_20211020022336_20211020022753_4000M_V0001.HDF']
    print(grayFilePathList)
    channelList = ['C03', 'C09', 'C12']
    get_fy4a(grayFilePathList[:1], channelList)
    t2 = datetime.now()
    print(t2 - t1)
    print('------')
    thrFilePathList = ['./FY4A-_AGRI--_N_REGC_1047E_L1-_FDI-_MULT_NOM_20211020022336_20211020022753_4000M_V0001.HDF',
    './FY4A-_AGRI--_N_REGC_1047E_L1-_GEO-_MULT_NOM_20211020022336_20211020022753_4000M_V0001.HDF'] print(thrFilePathList)
    channelList1 = ['true_color']
    get_fy4a(thrFilePathList, channelList1)
    t3 = datetime.now()
    print(t3 - t2)
  2. reader='agri_l1'

    版本<=0.36.0  'agri_l1'     >=0.37.0   'agri_fy4a_l1'   其他请看网址

    https://satpy.readthedocs.io/en/stable/index.html#reader-table

  3. HTTPSConnectionPool(host='zenodo.org', port=443): Max retries exceeded with url: /record/1288441/files/pyspectral_atm_correction_luts_no_aerosol.tgz

    # 原因下载依赖文件失败
    # 手动下载地址
    win
    pyspectral_rsr_data.tgz 解压放到下面地址
    C:\Users\admin\AppData\Local\pytroll\pyspectral pyspectral_atm_correction_luts_no_aerosol.tgz 解压放到下面地址
    C:\Users\admin\AppData\Local\pytroll\pyspectral\rayleigh_only linux
    pyspectral_rsr_data.tgz 解压放到下面地址
    /root/.local/share/pyspectral pyspectral_atm_correction_luts_no_aerosol.tgz 解压放到下面地址
    /root/.local/share/pyspectral/rayleigh_only
  4. Don't know how to open the following files: {'./FY4A.......HDF'}

    # 按我猜测,应该是satpy 和其依赖包版本的问题
    h5py==3.7.0
    numpy==1.21.6
    satpy==0.36.0
    pyresample==1.22.0
    scikit-image==0.19.3
    pyspectral==0.12.0
  5. 参考地址

    官网:https://satpy.readthedocs.io/en/stable/readers.html#available-readers
    博客:https://cloud.tencent.com/developer/article/1584969牛人:https://github.com/aiwei169/FY4A/blob/main/codes/fy4a.py

satpy 处理卫星 FY4A 数据的更多相关文章

  1. MeteoInfo-Java解析与绘图教程(八)_java解析卫星FY-4A一级产品文件(HDF举例)

    MeteoInfo-Java解析与绘图教程(八)_java解析卫星一级产品文件(HDF举例) 最近解析卫星数据遇到了一级产品,它的解析方式与之前文章说的有些不同,特此补充一下 卫星的一级产品,里面是没 ...

  2. 使用GDAL工具对FY3系列卫星数据进行校正

    本文档主要对如何使用GDAL提供的工具对FY3系列卫星数据进行校正处理.FY3系列卫星提供的数据一般是以HDF5格式下发,一个典型的FY3A和FY3B的数据文件名如下: FY3A_MERSI_GBAL ...

  3. 利用TLE数据确定卫星轨道(1)-卫星轨道和TLE

    1.卫星轨道 太空中卫星和天体在各种引力的作用下都在一定的轨道中周期转动着,但实际的轨道是很复杂的,一般的项目也达不到那么精确的需求(其实精确的卫星参数数据也不可能随便公开的),所以采用一阶近似的开普 ...

  4. PIE SDK打开静止卫星数据

    1. 功能简介 静止卫星是位于地球赤道上空约3.58万km处,与地面始终保持相对静止的卫星,静止卫星的特点是覆盖区域广,具有很强的机动灵活性,能够对特定区域进行分钟级高重复观测,可快速监测灾害目标的动 ...

  5. 使用Geolocation校正GDAL不支持的数据

    对于低分数据来说,常用的校正方式就是给定数据的经纬度查找表来进行校正.在GDAL中,这种校正方式叫Geolocation array.常用的数据有国外的MODIS数据,国内的如风云系列(FY)和海洋系 ...

  6. Cesium专栏-卫星轨迹

    Cesium Cesium 是一款面向三维地球和地图的,世界级的JavaScript开源产品.它提供了基于JavaScript语言的开发包,方便用户快速搭建一款零插件的虚拟地球Web应用,并在性能,精 ...

  7. 全球DEM高程数据下载

    本文主要介绍如何使用“迈高图-地图数据下载器”(以下简称:迈高图)下载全球DEM高程数据,任意下载范围自动拼接.裁剪.DEM高程数据支持下载导出为:GeoTIFF.XYZ.南方CASS等常用数据格式. ...

  8. MeteoInfoLab脚本示例:OMI Swath HDF数据

    这个例子读取OMI卫星Swath数据中的CloudFaction变量并绘图.脚本程序: #Add data file folder = 'D:/Temp/hdf/' fns = 'OMI-Aura_L ...

  9. 蒸腾量与蒸散量(ET)数据、潜在蒸散量、实际蒸散量数据、气温数据、降雨量数据

    ​   数据下载链接:数据下载链接 引言 多种卫星遥感数据反演地表蒸腾与蒸散率(ET)产品是地理遥感生态网推出的生态环境类数据产品之一,产品包括2000-2009年三个波段RGB数据,值域0-252之 ...

  10. 高精度10m/30米NPP净初级生产力分布数据

    数据下载链接:百度云下载链接​ 引言 第一性生产力是绿色植物呼吸后所剩下的单位面积单位时间内所固定的能量或所生产的有机物质,即是总第一性生产量减去植物呼吸作用所剩下的能量或有机物质.多种卫星遥感数据反 ...

随机推荐

  1. JZOJ 3242. Spacing

    \(\text{Analysis}\) 最大值最小很容易想到二分答案 然后用 \(dp\) 检查 设 \(f_i\) 表示当前行最后一个为 \(i\) 时最优情况最大空格数是否小于 \(mid\) 若 ...

  2. Vulhub 漏洞学习之:Django

    Vulhub 漏洞学习之:Django 目录 Vulhub 漏洞学习之:Django 1 Django debug page XSS漏洞(CVE-2017-12794) 1.1 漏洞利用过程 2 Dj ...

  3. echart折线图异常多出一条连接线

    开发背景:vue3父传子,父中调子组件echarts图表 问题:第一次进入数据图表正常,再次进入不更新图表数据的情况下,图表异常多出来一条开始到结尾的连接线 原因:上次数据没清空 解决:请求完接口后先 ...

  4. Postgresql清理WAL日志

    WAL是Write Ahead Log的简写,和oracle的redo日志类似,存放在$PGDATA/pg_xlog中,10版本以后在$PGDATA/pg_wal目录. 1.如果开启了归档,在目录ar ...

  5. Spring Boot2中如何优雅地个性化定制Jackson

    概述 本文的编写初衷,是想了解一下Spring Boot2中,具体是怎么序列化和反序列化JSR 310日期时间体系的,Spring MVC应用场景有如下两个: 使用@RequestBody来获取JSO ...

  6. 微信小程序分享百度网盘文件的实现思路

    需求: 在小程序中点击按钮,获取百度网盘文件的下载地址. 实现思路: 1.网盘文件的下载地址,使用官方API只能自己下载,别人通过dlink无法下载,所以采用网页端生成接口. 好处是可以自定义提取码, ...

  7. Bug Bash测试

    愿望 养成参加 Bug Bash 的习惯,就像养成到点就吃饭一样的习惯.   一.Bug Bash 名词解释 A Bug Bash is a collaborative effort across o ...

  8. 项目管理 VS. 个人计划

    注会考试临近,好好的安排一下自己的时间.做个小计划是很有必要的了. 突然想到一个软件也许可以帮到我的忙,那就微软提供的办公软件 Project,大学时候就知道Project软件的存在,但是始终没有机会 ...

  9. (前端面试题)详解 JS 的 setTimeout 和 setInterval 两大定时器

    程序员面试题库分享 1.前端面试题库 (面试必备)            推荐:★★★★★ 地址:前端面试题库 2.前端技术导航大全      推荐:★★★★★ 地址:前端技术导航大全 3.开发者颜色 ...

  10. Markdwn学习

    Markdwn学习 标题: 标题 二级标题 三级标题 几个标题有几个#(最多六级标题) 字体 Hell,World! 粗体两边加** Hello,World! 斜体两边加* Hello,World! ...