0

示例文件可以从https://noaa-goes17.s3.amazonaws.com/ABI-L1b-RadF/2021/213/00/OR_ABI-L1b-RadF-M6C13_G17_s20212130000319_e20212130009396_c20212130009445.nc下载

我正在尝试将投影转换为板 carree。

我使用 Satpy 加载了 netcdf。

from satpy import Scene
from glob import glob
goes17 = glob('./samplefile/*')
goes17_scene = Scene(reader="abi_l1b", filenames=goes17)

然后我想使用https://satpy.readthedocs.io/en/stable/resample.html#create-custom-area-definition将其重新采样到 Plate carree, 但没有示例代码。

4

1 回答 1

0

该文档肯定可以改进(我没有抱怨,我是作者之一)。一方面,它应该指向 pyresample 中关于如何制作自定义区域定义的文档:

https://pyresample.readthedocs.io/en/latest/geometry_utils.html

对于您想要重新采样到板 carree(equirectangular)投影的情况,您可以尝试这样的事情:

from pyresample import create_area_def
area_def = create_area_def("my_area_def", "+proj=eqc +datum=WGS84", resolution=2000)

这将使所谓的 a DynamicAreaDefinitionwhich is anAreaDefinition没有定义其所有参数。例如,该区域没有范围/界限。我确实将其定义为每像素 2 公里的分辨率。我们可以向 Satpy 提供这个动态区域定义,它将使用来自 ABI 数据的地理位置“冻结”它。因此,您的代码将如下所示:


from satpy import Scene
from glob import glob
from pyresample import create_area_def

area_def = create_area_def("my_area_def", "+proj=eqc +datum=WGS84", resolution=2000)
goes17 = glob('./samplefile/*')
goes17_scene = Scene(reader="abi_l1b", filenames=goes17)
goes17_scene.load(['C13']) 
new_scn = goes17_scene.resample(area_def)

# save to geotiffs
new_scn.save_datasets()

请注意,如果您在调用时知道您所在区域的确切边界,create_area_def则可以创建一个完全合格的AreaDefinition,并且在重新采样时会表现得更好(因为 Satpy 不必计算动态区域的边界)。

于 2022-02-22T01:39:14.103 回答