【发布时间】:2020-08-19 21:57:05
【问题描述】:
所以我有两个不同的数据集。我有一颗极地轨道卫星,它从北极附近开始向非洲下降,然后越过南极并返回大西洋。我也有一些地球同步卫星的全球复合材料。该网格覆盖了从 -90 到 90 纬度以及 0 到 -0.2(日期变更线附近)经度的全球范围。
所以当我绘制我的极地轨道数据时。我在卫星穿过日期变更线的北半球看到一条有趣的条纹。像这样……
我做了一个搜索,发现如果我这样做是为了我的经度值
lons[lons < 0] += 360
然后它会删除奇怪的条纹。我认为它实际上只是将条纹移动到南半球(穿过子午线的地方),但由于该区域都是“缺失”值,因此它不会显示在图上,所以我不在乎。
polar orbiting data - longitudes all positive
所以现在有完整的全球数据集的问题。当我绘制它而不将所有经度转换为正值时,它会出现很多条纹。我相信每个有雨的地方都会越过日期。
当我尝试应用适用于极坐标数据的“修复”时,我得到了一个非常讨厌的非常无信息的错误。
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)
【问题讨论】:
-
将有助于添加您用于生成图像的 matplotlib/cartopy 代码。
-
不太确定代码的哪些部分会有所帮助。除了覆盖全球的数据集本身之外,它是非常标准的东西,但我不能轻易地将这部分包含在代码的复制粘贴中。
-
添加了一些东西。
标签: python matplotlib cartopy