绘制跨越子午线和日期线的全球等高线数据

2024-06-16 19:06:18 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我有两个不同的数据集。我有一个是极地轨道卫星,它从北极附近开始向下移动到非洲,然后越过南极,回到大西洋。我还有一个由多颗地球静止卫星组成的全球合成卫星。该网格是一个从-90到90纬度,以及0到-0.2(围绕日期线)经度的完整全球覆盖范围

所以当我绘制极地轨道数据时。我在北半球看到一条有趣的条纹,卫星穿过了日期线。像这样

polar orbiting data

我做了一个搜索,发现如果我这样做,我的经度值

lons[lons < 0] += 360

然后移除奇怪的条纹。我认为它实际上只是将条纹移动到南半球(在那里穿过子午线),但由于该区域都是“缺失”值,所以它不会显示在绘图上,所以我不在乎

polar orbiting data - longitudes all positive

所以现在有一个完整的全局数据集的问题。当我在没有将所有经度转换为正值的情况下绘制它时,它有相当多的条纹。我相信每一个地方都会有雨穿过日期线

Global dataset

当我尝试应用适用于极坐标数据的“修复”时,我得到了一个非常严重的信息错误

IllegalArgumentException: Invalid number of points in LinearRing found 3 - must be 0 or >= 4

Process finished with exit code 139 (interrupted by signal 11: SIGSEGV)

没有回溯或任何东西,所以我甚至不确定它是matplotlib还是cartopy,或者抛出错误的是什么

我尝试使用set_extent()裁剪图像,但它仍然有条纹

有没有办法解决这个问题,或者如何欺骗matplotlib/cartopy正确绘制数据


添加代码,但不确定它实际会有多大帮助。这是相当基本的。问题更多的是,降雨数据覆盖了整个地球

normal_proj = ccrs.PlateCarree(central_longitude=0)
pos_lons = lon_data.copy()
pos_lons[pos_lons < 0] += 360
cs = plt.contourf(pos_lons, lat_data, rr_data, clevs, cmap=cmap,
                      transform=normal_proj, norm=norm)

Tags: 数据pos地球datamatplotlib错误绘制全球
1条回答
网友
1楼 · 发布于 2024-06-16 19:06:18

我想你遇到了一个讨厌但很难找到的问题。基本上,在变换等高线并将其剪裁到地图范围时,会错误地生成一些形状优美的几何图形。一些解决问题(而不是解决问题)的方法包括稍微调整地图边界和调整等高线标高

相关问题 更多 >