首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >合并GOES17、EUMETSAT、GK-2A气象卫星图像

合并GOES17、EUMETSAT、GK-2A气象卫星图像
EN

Stack Overflow用户
提问于 2022-02-22 05:53:20
回答 1查看 86关注 0票数 0

我想用GOES17、EUMETSAT和GK-2A生成全球气象卫星图像.我想把它做成carree坐标。(GOES 17 netcdf file convert to Plate Carree)

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

代码语言:javascript
复制
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个图像文件。但是,有什么简单或最简单的方法来生成全球天气图像吗?我的最后一个目标是生成全球卫星图像的数字阵列。

-我的全部代码--

代码语言:javascript
复制
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'])
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-22 15:24:12

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

您的合并选项:

  1. Satpy有一个BackgroundCompositor,您可以将一个图像放在另一个图像上。有一些用于创建自定义组合的文档,您可以在其中创建这样的组合。这些组合中的一系列可以链接在一起,以获得您正在寻找的全局复合。您可以将所有数据集放在同一个场景中,以使事情变得更简单:

代码语言:javascript
复制
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. Use xarray和dask .where函数以及一个定制的掩码数组来说明每个图像应该出现在整个图像中的位置。有些人用太阳天顶角来做这种事情,在图像之间有一个很好的混合,而不是仅仅在每个重放传感器的other.
  3. Create单独的地块上叠加一个,并使用GDAL的gdal_merge.py实用工具将它们连接到一个地点上。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71216490

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档