Satpy基础系列教程(1)-FY4A AGRI L1数据处理

以下文章来源于气象杂货铺 ,作者朝曦dawn

Satpy[1]目前支持的卫星数据[2]有50种(MSG, Himawari 8, GOES-R, MODIS, Sentinel- 1/2/3/5, SNPP等)。

本文以最近朝曦dawn[3]添加的风云4A(FY4A) AGRI L1数据为例。

Notebook[4]已放在GitHub上,供大家学习。


FY4A AGRI L1数据有两种类别:

1.全圆盘

FY4A-_AGRI--_N_DISK_1047E_L1-_FDI-_MULT_NOM_20190807060000_20190807061459_4000M_V0001.HDF

2.中国区

FY4A-_AGRI--_N_REGC_1047E_L1-_FDI-_MULT_NOM_20190807045334_20190807045750_1000M_V0001.HDF

全圆盘标识:DISK , 中国区标识:REGC.

风云数据链接

1.实时数据[5](30天内)及文档

2.历史数据[6] (2018-03-12 -- )

3.FY4A官方应用平台[7]

安装

推荐通过conda安装,简单快捷。

$ conda install -c conda-forge satpy

定标

FY4A AGRI L1有以下三种定标方式:

1.原始数字量化值 (所有通道)

2.反射率 (C01 - C06)

3.辐射率和亮温 (C07 - C14)

读取数据

只需几行即可读取数据:

import os, glob
from satpy.scene import Scene

# 加载FY4A文件
filenames = glob.glob('/xin/data/FY4A/20190807/FY4A-_AGRI*4000M_V0001.HDF')

# 创建scene对象
scn = Scene(filenames, reader='agri_l1')

# 查看可用的通道
scn.available_dataset_names()

输出结果:

['C01',
 'C02',
 'C03',
 'C04',
 'C05',
 'C06',
 'C07',
 'C08',
 'C09',
 'C10',
 'C11',
 'C12',
 'C13',
 'C14',
 'satellite_azimuth_angle',
 'satellite_zenith_angle',
 'solar_azimuth_angle',
 'solar_glint_angle',
 'solar_zenith_angle']

读取指定通道数据:

# 以红外通道为例
ir_channel = 'C12'
scn.load([ir_channel])

绘图

全圆盘图

一行命令即可保存或显示图片:

# 保存到文件
# scn.save_dataset(ir_channel, \
    filename='{sensor}_{name}.png')

# 在notebook中显示
scn.show(ir_channel)

 

 

 

全圆盘真彩色图

首先查看可用的合成选项:

scn.available_composite_names()

输出结果显示,支持真彩图:

['ash',
 'dust',
 'fog',
 'green',
 'green_snow',
 'ir108_3d',
 'ir_cloud_day',
 'natural_color',
 'natural_color_sun',
 'night_background',
 'night_background_hires',
 'overview',
 'overview_sun',
 'true_color']

于是我们可以直接加载真彩色数据并绘图

# 注:这步需要大内存 (取决于cpu核数)
# 可查看FAQ关于内存的讨论:
#    https://satpy.readthedocs.io/en/latest/faq.html

composite = 'true_color'
scn.load([composite])
scn.show(composite)

# scn.save_dataset(composite, \
        filename='{sensor}_{name}.png')

  

 

特定区域图

以下以台风利奇马为例。

首先,我们需要定义地图投影和区域,然后将数据投影到该区域上。

方式一

用Pyresample[8]来定义区域。

from pyresample import get_area_def

area_id = 'lekima'

x_size = 549
y_size = 499
area_extent = (-1098006.560556, -967317.140452, \
        1098006.560556, 1026777.426728)
projection = '+proj=laea +lat_0=19.0 +lon_0=128.0 +ellps=WGS84'
description = "Typhoon Lekima"
proj_id = 'laea_128.0_19.0'

areadef = get_area_def(area_id, description, proj_id, projection,x_size, y_size, area_extent)

方式二

用coord2area_def.py[9]程序来直接生成区域定义。

比如用python coord2area_def.py lekima_4km laea 10 28 118 138 4,即可得到之前定义的利奇马区域:

lekima_4km:
  description: lekima_4km
  projection:
    proj: laea
    ellps: WGS84
    lat_0: 19.0
    lon_0: 128.0
  shape:
    height: 499
    width: 549
  area_extent:
    lower_left_xy: [-1098006.560556, -967317.140452]
    upper_right_xy: [1098006.560556, 1026777.426728]

然后将该定义拷贝到$PPP_CONFIG_DIR/areas.yaml中,即可直接调用

# 如果你已经添加区域到areas.yaml中,可直接调用:
os.environ['PPP_CONFIG_DIR'] = '/yin_raid/xin/satpy_config/'
lekima_scene = scn.resample('lekima_4km')

# 否则需要使用之前定义的区域:
# lekima_scene = scn.resample(areadef)
lekima_scene.show(composite)
# lekima_scene.save_dataset(composite, \
        filename='{sensor}_{name}_resampled.png')

 如果想利用自定义的colormap来生成图像(如下图),请参阅关于enhancement的notebook(正在忍饿赶稿中)。

 

References

[1] Satpy: https://satpy.readthedocs.io/en/latest/ [2] 支持的卫星数据: https://satpy.readthedocs.io/en/latest/index.html#reader-table [3] 朝曦dawn: https://dreambooker.site/ [4] Notebook: https://github.com/zxdawn/FY-4/tree/master/satpy/examples [5] 实时数据: https://fy4.nsmc.org.cn/data/en/data/realtime.html [6] 历史数据: http://satellite.nsmc.org.cn/PortalSite/Data/Satellite.aspx [7] FY4A官方应用平台: http://rsapp.nsmc.org.cn/geofy/ [8] Pyresample: http://pyresample.readthedocs.org/ [9] coord2area_def.py: https://github.com/pytroll/satpy/blob/master/utils/coord2area_def.py

本文分享自微信公众号 - 气象学家(Meteorologist2019)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-02-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

 

### FY4A AGRI N DISK 数据格式 FY4A AGRI N DISK 类型的数据文件是以 HDF5 格式存储的遥感影像数据。这类文件通常包含了多个波段的信息以及辅助元数据,用于描述观测条件和仪器参数。具体到 `FY4A-_AGRI--_N_DISK_*` 文件名模式下的产品,表示的是静止轨道气象卫星风云四号 A 星(FengYun-4A)搭载的先进地球辐射成像仪 (Advanced Geostationary Radiation Imager, AGRI) 所获取的日盘全圆视场图像。 #### 文件结构特点 这些 HDF 文件内部组织方式遵循特定的标准,其中包含若干个主要部分: - **核心数据集**:保存各个光谱通道的实际测量值; - **属性表**:记录有关传感器配置、时间戳和其他重要信息; - **地理定位网格**:提供像素对应的地理位置坐标系映射关系; 对于指定的时间点和地区范围内的日间可见光或其他电磁波段反射率或亮度温度等物理量进行了量化编码并压缩打包于单个文件之中[^2]。 ### 处理方法示例 为了方便地读取此类数据,在 Python 中可以利用开源库 Satpy 来简化操作流程。下面给出一段简单的代码片段来展示如何加载并查看可用的通道名称列表: ```python import os from glob import glob from satpy.scene import Scene # 定义路径模板匹配目标文件 filenames = glob('/path/to/data/FY4A-*DISK*.HDF') # 初始化Scene实例并将文件传递给它解析 scn = Scene(reader='agri_l1', filenames=filenames) # 获取当前场景支持的所有可选通道名字 available_channels = scn.available_dataset_names() print(list(available_channels)) ``` 这段脚本会输出类似于 ['C01', 'C02', ... ] 的字符串数组,代表不同波段编号。之后可以根据需求进一步调用相应的方法完成诸如可视化渲染、定量分析等一系列任务[^4]。 ### 相关问题 1. 如何理解 FY4A 卫星所携带的 AGRI 仪器的工作原理? 2. 使用 Satpy 库处理 FY4A 数据时遇到常见错误有哪些解决方案? 3. 在进行 FY4A 数据预处理阶段需要注意哪些事项以确保后续应用质量? 4. 是否存在其他适用于 FY4A 数据的专业软件工具?它们各自有什么特色功能? 5. 对比 FY4A 和国际上同类型卫星平台之间在数据特性和应用场景上的异同点是什么?
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值