You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将EUMETSAT卫星GEOS投影数据重采样为墨卡托投影的问题

GEOS投影转墨卡托投影:保持真实比例且无需手动指定宽高的实现方法

问题背景

我有一个EUMETSAT卫星的scene对象,感兴趣区域经纬度范围为**[40, -10, 105, 40]**(西经40°、南纬10°、东经105°、北纬40°),原始数据采用GEOS投影,区域定义如下:

Area ID: msg_seviri_unknown_3km
Description: MSG SEVIRI unknown area definition with 3 km resolution
Projection: {'a': '6378169', 'h': '35785831', 'lon_0': '45.5', 'no_defs': 'None', 'proj': 'geos', 'rf': '295.488065897014', 'type': 'crs', 'units': 'm', 'x_0': '0', 'y_0': '0'}
Number of columns: 1848
Number of rows: 1665
Area extent: (-604581.2379, -1096647.3571, 4940163.8125, 3899023.914)

尝试转墨卡托投影时遇到两个问题:

  1. 使用原始场景的区域参数创建墨卡托投影定义,重采样后投影正常但区域被裁剪:
my_area = create_area_def('my_area', {'proj': 'merc', 'lon_0': 45.5},
                        width=1848, height=1665,
                        area_extent= (-604581.2379, -1096647.3571, 4940163.8125, 3899023.914))

new_scn = scn.resample(my_area)
new_scn.show('natural_color')
  1. 显式指定经纬度范围作为area_extent,图像显示完整但水平方向压缩变形(推测是手动指定宽高导致),且原始场景右上角坐标转经纬度得到(inf, inf)(应为卫星视野边缘的太空区域NaN值),新墨卡托区域右上角经纬度与预期不符。

需求:实现GEOS转墨卡托投影时,无需手动指定宽高,生成保持真实比例(类似谷歌地图的最佳实践)的图像。


解决方案:基于目标经纬度范围自动计算匹配比例的墨卡托区域

核心思路是:先将感兴趣的经纬度范围转换为墨卡托投影坐标,再结合原始数据分辨率自动推导宽高,避免手动指定导致的比例失调。

代码实现

import pyproj
from pyresample import create_area_def

# 假设已加载原始scene对象:scn = Scene(...)

# 1. 定义感兴趣的经纬度范围 [西, 南, 东, 北]
lon_min, lat_min, lon_max, lat_max = 40, -10, 105, 40

# 2. 初始化投影转换器:经纬度 -> 目标墨卡托投影
merc_proj = pyproj.CRS({'proj': 'merc', 'lon_0': 45.5, 'ellps': 'WGS84'})
lonlat_to_merc = pyproj.Transformer.from_crs("EPSG:4326", merc_proj, always_xy=True)

# 转换区域四个角点的坐标
x1, y1 = lonlat_to_merc.transform(lon_min, lat_min)
x2, y2 = lonlat_to_merc.transform(lon_max, lat_max)

# 3. 自动计算宽高:沿用原始3km分辨率,保证比例与清晰度
resolution = 3000  # 单位:米
area_extent_merc = (x1, y1, x2, y2)

width = int((x2 - x1) / resolution)
height = int((y2 - y1) / resolution)

# 4. 创建墨卡托区域定义并重采样
my_area = create_area_def(
    'my_merc_area',
    merc_proj.to_dict(),
    width=width,
    height=height,
    area_extent=area_extent_merc
)

new_scn = scn.resample(my_area)
new_scn.show('natural_color')

关键说明

  • 比例自动匹配:通过分辨率推导宽高,确保墨卡托投影区域的像素比例与真实地理范围一致,杜绝拉伸/压缩变形
  • 边缘NaN处理:仅针对感兴趣经纬度范围创建区域,原始GEOS投影边缘的太空NaN区域会被自动排除,无需额外处理
  • 通用基准对齐:采用WGS84椭球体的墨卡托投影,与谷歌地图等通用平面地图标准一致,符合最佳实践

内容的提问来源于stack exchange,提问作者Rex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 04:50:03