如何解决绘制跨越子午线和日期线的全局轮廓数据
所以我有两个不同的数据集。我有一颗极地轨道卫星,它从北极附近开始向非洲下坠,然后越过南极并返回大西洋。我还拥有许多对地静止卫星的全球合成。该网格是从-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几何形状。解决该问题(无法解决)的一些措施包括稍微调整地图边界和调整轮廓线水平。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。