0

我想使用 GOES17、EUMETSAT 和 GK-2A 生成全球气象卫星图像。我想让它成为 Plate carree 坐标。(GOES 17 netcdf 文件转换为 Plate Carree

首先,使用 Satpy,我制作了盘子 carree 图像。

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()

像这种方法,我想制作其他卫星图像并合并到 1 个图像文件。但是有没有任何简单或最简单的方法来生成全球天气图像?我的最终目标是生成全球卫星图像的 numpy 数组。

-- 我的整个代码 --

from satpy import Scene, MultiScene
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('E:/Global/GOES_17/OR_ABI-L1b-RadF-M6C13_G17_s20212130000319_e20212130009396_c20212130009445.nc')
goes17_scene = Scene(reader="abi_l1b", filenames=goes17)
goes17_scene.load(['C13'])

gk2a = glob('E:/Global/GK-2A/gk2a_ami_le1b_ir105_fd020ge_202108010000.nc')
gk2a_scene = Scene(reader="ami_l1b", filenames=gk2a)
gk2a_scene.load(['IR105'])

eumetsat = glob('E:/Global/EUMETSAT/MSG4-SEVI-MSG15-0100-NA-20210801000010.306000000Z-20210801001259-4774254.nat')
eumetsat_scene = Scene(reader='seviri_l1b_native', filenames=eumetsat)
eumetsat_scene.load(['IR_108'])


from satpy import MultiScene, DataQuery
mscn = MultiScene([goes17_scene, gk2a_scene, eumetsat_scene])


groups = {DataQuery(name='IR_group', wavelength=(10.35, 10.35, 10.8)): ['C13', 'IR105', 'IR_108']}
mscn.group(groups)


from pyresample.geometry import AreaDefinition
resampled = mscn.resample(area_def, reduce_data=False)

resampled.load(['IR_group'])
blended = resampled.blend() 
blended.show(['IR_group'])
4

1 回答 1

0

在 Satpy 中有一些方法可以做到这一点,但通常人们有他们希望将数据连接在一起的特定方法。这是您在选择所需代码之前必须回答的问题。首先,尽管您需要为最终图像中想要的每个单独的卫星图像制作一个场景,并将它们重新采样到相同的网格。DynamicAreaDefinition(正如您现在使用的那样)不适合整个过程,因为每个重新采样的场景都将位于不同的最终区域(基于重新采样的卫星数据“冻结”DynamicAreaDefinition)。

您的合并选项:

  1. Satpy 有一个BackgroundCompositor可以将一张图像放在另一张图像之上的地方。有一些用于创建自定义组合的文档,您可以在其中制作这样的组合。一系列这些复合材料可以链接在一起以获得您正在寻找的整体全球复合材料。您可以将所有数据集放在同一个场景中以使事情变得更容易:
scn = Scene()
scn["C13"] = resampled_goes17_scene["C13"]
... and so on for the other sensors ...
scn.load(["custom_composite"])
  1. 使用 Satpy MultiScene,给它所有重新采样的场景并运行“混合”方法将图像连接在一起。https://satpy.readthedocs.io/en/stable/multiscene.html#blending-scenes-in-multiscene
  2. 使用 xarray 和 dask.where函数以及自定义掩码数组来说明每个图像应该出现在整个图像中的哪个位置。有些人用太阳天顶角做这种事情,图像之间有很好的融合,而不是仅仅将一个叠加在另一个之上。
  3. 为每个重新采样的传感器创建单独的 geotiff,并使用 GDAL 的gdal_merge.py实用程序将它们加入一个 geotiff。
于 2022-02-22T15:24:12.347 回答