将地球同步 GOES 卫星数据重新网格化为笛卡尔网格

Regrid geostationary GOES satellite data to a cartesian grid

我正在使用 GOES 卫星数据,该数据以弧度为单位进行网格化,并具有地球同步标准投影。我知道有几种方法可以重新投影数据,以便可以在笛卡尔意义上绘制数据。但是,我一直找不到任何资源可以让我实际重新网格化数据,使经度和纬度实际上成为数据集的坐标。我想要这种格式的数据,以便我可以轻松地索引数据。关于在这里做什么的任何想法?

示例数据可在此处找到:https://noaa-goes16.s3.amazonaws.com/ABI-L1b-RadC/2020/230/00/OR_ABI-L1b-RadC-M6C07_G16_s20202300001171_e20202300003555_c20202300004038.nc

我正在使用 xarray 加载和处理数据。

免责声明:以下超级有偏见的答案。我是 Satpy 和 Pyresample 包的核心开发人员之一。

Satpy 库将是一个很好的起点,因为它可以让您轻松解决您可能不关心的问题(从辐射率到亮温的转换,从投影 space 到 [=27 的转换) =] space,等等)。请参阅此示例 jupyter 笔记本:https://github.com/pytroll/pytroll-examples/blob/master/satpy/GOES-16%20Mosaic.ipynb

您还可以找到我不久前在 SciPy 会议上教授的教程,其中包含有关重采样的部分:https://github.com/pytroll/tutorial-satpy-half-day/blob/master/notebooks/04_resampling.ipynb

有了这些信息,您应该能够将 ABI 数据重新采样到您自己的自定义网格(pyresample 术语中的 AreaDefinition)。这里有更多关于制作你自己的 pyresample AreaDefinition 的信息:https://pyresample.readthedocs.io/en/latest/geometry_utils.html

下面是您的代码的基本轮廓:

from satpy import Scene
from pyresample import create_area_def

# analyze filenames and what is in them
scn = Scene(reader='abi_l1b', filenames=abi_filenames)

# load a specific band
scn.load(['C07'])

# create a custom area that fits the projection and resolution you want
your_area_def = create_area_def(...)

# resample all the loaded datasets to your area definition
new_scn = scn.resample(your_area_def)

# save data as geotiffs to the current directory
new_scn.save_datasets()

否则,如果您真的有兴趣为此使用 xarray 和 rasterio,您可能需要查看 rioxarray 项目:https://github.com/corteva/rioxarray

在我创建的这个 jupyter notebook I show how to regrid the ABI data (in this case I use the brightness temperature of channel 13). This example is part of tutorial of the GOES 包中。希望例子和GOES包对你有用。