当我有一段跨越反子午线的未网格纬度/经度/数据对时,经度从 -180 交换到 +180,如何防止 cartopy 绘制pcolor(mesh)填充整个地球的网格单元?我的问题与此处的问题相同,只是我使用的是cartopy而不是basemap. 对链接问题(关于basemap)的一条近 5 年的评论声称有一个cartopy解决方案,但尚未发布。
示例代码:
\n\n#!/usr/bin/env python3.6\n\nimport numpy\nimport matplotlib.pyplot\nimport cartopy.crs\n\nlons = numpy.array([[-174.719, -175.297, -175.883],\n [-175.164, -175.734, -176.312],\n [-175.594, -176.164, -176.734],\n [-176.016, -176.578, -177.148],\n [-176.43 , -176.984, -177.547],\n [-176.836, -177.383, -177.938],\n [-177.227, -177.773, -178.312],\n [-177.609, -178.148, -178.688],\n [-177.984, -178.516, -179.047],\n [-178.352, -178.875, -179.398],\n [-179.727, 179.766, 179.266],\n [ 179.945, 179.445, 178.945],\n [ 179.625, 179.133, 178.641],\n [ 179.312, 178.828, 178.336],\n [ 179.008, 178.523, 178.039],\n …Run Code Online (Sandbox Code Playgroud) 我试图绘制一个卫星地面轨道.我有一个度数的纬度和经度列表.经度值均为-180至+180度.我的第一个问题是使用latlon关键字(顺便说一句,我通过PyCall.jl包在Julia中使用它,所以请原谅看起来很奇怪的语法):
map = Basemap.Basemap(projection="mill",lon_0=0)
map[:drawcoastlines]()
map[:drawparallels](-90:30:90,labels=[1,0,0,0])
map[:drawmeridians](map[:lonmin]:60:map[:lonmax]+30,labels=[0,0,0,1])
map[:plot](lon,lat,color="red",latlon=true)
Run Code Online (Sandbox Code Playgroud)
这是......不应该是什么样子.我不确定问题是什么.但是,如果我先转换为地图坐标:
xx,yy = map(lon,lat)
map[:plot](xx,yy,color="red")
Run Code Online (Sandbox Code Playgroud)
这要好得多,除了经度从+180到-180之间的线.有什么建议使这看起来更好?
可以在此处找到用于生成这些图的纬度,经度对(以度为单位).