问题描述
所以我有两个不同的数据集。我有一颗极地轨道卫星,它从北极附近开始向非洲下坠,然后越过南极并返回大西洋。我还拥有许多对地静止卫星的全球合成。该网格是从-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)
解决方法
我认为您遇到了烦人的问题,但很难找到bug in CartoPy。基本上,在变换轮廓并将其裁剪到地图范围时,它会错误地生成一些Shapely几何形状。解决该问题(无法解决)的一些措施包括稍微调整地图边界和调整轮廓线水平。