GOES 17 netcdf 文件转换为 Plate Carree
GOES 17 netcdf file convert to Plate Carree
下载
我正在尝试将投影转换为圆盘。
我使用 Satpy 加载了 netcdf。
from satpy import Scene
from glob import glob
goes17 = glob('./samplefile/*')
goes17_scene = Scene(reader="abi_l1b", filenames=goes17)
然后我想将它重新采样到 Plate carree 使用
https://satpy.readthedocs.io/en/stable/resample.html#create-custom-area-definition
但是没有示例代码。
该文档肯定可以改进(我不是在抱怨,我是作者之一)。首先,它应该指向 pyresample 中关于如何制作自定义 AreaDefinition 的文档:
https://pyresample.readthedocs.io/en/latest/geometry_utils.html
对于您想要重采样到板方格(等距柱状)投影的情况,您可以尝试这样的事情:
from pyresample import create_area_def
area_def = create_area_def("my_area_def", "+proj=eqc +datum=WGS84", resolution=2000)
这将生成所谓的 DynamicAreaDefinition
,即未定义所有参数的 AreaDefinition
。例如,这个区域没有extent/bounds。我确实将其定义为每像素 2km 的分辨率。我们可以向 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 不必计算动态区域的边界)。
我正在尝试将投影转换为圆盘。
我使用 Satpy 加载了 netcdf。
from satpy import Scene
from glob import glob
goes17 = glob('./samplefile/*')
goes17_scene = Scene(reader="abi_l1b", filenames=goes17)
然后我想将它重新采样到 Plate carree 使用 https://satpy.readthedocs.io/en/stable/resample.html#create-custom-area-definition 但是没有示例代码。
该文档肯定可以改进(我不是在抱怨,我是作者之一)。首先,它应该指向 pyresample 中关于如何制作自定义 AreaDefinition 的文档:
https://pyresample.readthedocs.io/en/latest/geometry_utils.html
对于您想要重采样到板方格(等距柱状)投影的情况,您可以尝试这样的事情:
from pyresample import create_area_def
area_def = create_area_def("my_area_def", "+proj=eqc +datum=WGS84", resolution=2000)
这将生成所谓的 DynamicAreaDefinition
,即未定义所有参数的 AreaDefinition
。例如,这个区域没有extent/bounds。我确实将其定义为每像素 2km 的分辨率。我们可以向 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 不必计算动态区域的边界)。