为什么我在 Himawari-8 标准数据上使用 satpy 失败?

Why do I using satpy on Himawari-8 standard data failed?

当我使用 satpy 读取 Himawari-8 标准数据时,终端总是说“提供了 'filenames' 但它是空的。”

Himawari-8有16个观测波段,每10分钟拍摄一张全盘图片,所以一个观测结果文件夹包含16个文件夹(一个文件夹为一个波段),每个波段分为10个零件所以在一个乐队文件夹中它有 10 个文件。
Himawari-8标准数据格式为.dat,数据命名为 HS_aaa_yyyymmdd_hhnn_Bbb_cccc_Rjj_Skkll.DAT.

H08: Himawari-8
yyyy: Observation start time(year)
mm: Observation start time(month)
dd: Observation start time(day)
hh: Observation start time(hour)
nn: Observation start time(min.)
bb: Band number (01 – 16)
cccc: Observation area and number, FLDK: Full Disk
jj: Spatial resolution 
kk: segment number (01 – 10)
ll: total number of segments (01 – 10)

例如HS_H08_20210518_1100_B01_FLDK_R10_S0110.DAT

这些是来自 vscode 的所有消息:

(my_satpy_env) E:\HK\Python>python Process_SatHima_Imagery.py
Traceback (most recent call last):
  File "E:\HK\Python\Process_SatHima_Imagery.py", line 18, in <module>
    scn = Scene(filenames=files,  reader='ahi_hsd',filter_parameters={'start_time': datetime(2021,5,25,2,00), 'end_time': datetime(2021,5,25,2,10)})
  File "C:\Users\RSFBioL\anaconda3\envs\my_satpy_env\lib\site-packages\satpy\scene.py", line 108, in __init__
    self._readers = self._create_reader_instances(filenames=filenames,
  File "C:\Users\RSFBioL\anaconda3\envs\my_satpy_env\lib\site-packages\satpy\scene.py", line 157, in _create_reader_instances
    return load_readers(filenames=filenames,
  File "C:\Users\RSFBioL\anaconda3\envs\my_satpy_env\lib\site-packages\satpy\readers\__init__.py", line 546, in load_readers
    raise ValueError("'filenames' was provided but is empty.")
ValueError: 'filenames' was provided but is empty.

我使用了Github的代码,他上传了代码“https://github.com/gSasikala/ftp-himawari8-hsd/blob/main/examples/Processing_Satellite_Imagery.ipynb

我用的是编辑器,vs code,写的python版本是3.9.7,电脑上安装了anaconda和satpy

抱歉,我是 Python 和 Himawari-8 标准数据的新手,如果有任何遗漏请提醒我。 感谢您对我的任何回复或推荐。

该错误消息表示您正在将一个空列表传递给 Scene 对象。所以在这行代码中(你可以在错误回溯中看到它):

scn = Scene(filenames=files,  reader='ahi_hsd',filter_parameters={'start_time': datetime(2021,5,25,2,00), 'end_time': datetime(2021,5,25,2,10)})

您的 files 变量是一个空列表 ([])。 Satpy 无法加载任何东西,因为它没有被赋予任何文件。您链接到的笔记本使用以下代码行创建 files 变量:

files = glob.glob(r'D:\ftp_h8_hsd_25Jul\*.dat')

这意味着获取目录D:\ftp_h8_hsd_25Jul\中所有以.dat结尾的文件的列表。这是笔记本作者Windows机器上的一个目录(文件夹)。如果您的本地计算机上没有这些数据文件,那么您需要从某个地方下载它们。如果您有这些文件,则需要更改代码的 D:\ftp_h8_hsd_25Jul\*.dat 部分以匹配您的下载位置。例如,如果您在 linux 上并使用浏览器下载文件,它们可能位于 /home/<username>/Downloads/*.dat.

我不清楚你想做什么或你的出发点是什么,所以我不确定我能提供更多帮助。 Whosebug 并不是最广泛使用的 Satpy 问题支持论坛。如果您想聊更多,我建议加入 Pytroll slack(参见 http://pytroll.github.io/#getting-in-touch),我们很乐意提供帮助。