如何提高 Cartopy 中的测地线分辨率/精度/平滑度
在我们的上一篇文章中,我们详细介绍了如何在 Cartopy 中绘制测地线。然而,正如你在结果地图中所见,测地线被分成几个清晰可见的段:
为了修复此问题,我们需要子类化绘图的原始投影。在此示例中,我们子类化 ccrs.Mollweide():
cartopy_highres_mollweide.py
import cartopy.crs as ccrs
class HighResMollweide(ccrs.Mollweide):
@property
def threshold(self): return 100.0注意 Mollweide 投影的默认阈值是 100000.0 - 你可以使用 print(ccrs.Mollweide().threshold) 自行检查
现在我们可以在 plt.axes() 中使用该投影:
cartopy_axes_highres.py
ax = plt.axes(projection=HighResMollweide())完整示例代码
此代码重现上面显示的高分辨率测地线图像:
cartopy_highres_complete_example.py
import cartopy.crs as ccrs
import cartopy.feature as cf
from matplotlib import pyplot as plt
class HighResMollweide(ccrs.Mollweide):
@property
def threshold(self): return 100.0
ax = plt.axes(projection=HighResMollweide())
ax.stock_img()
ax.add_feature(cf.BORDERS)
# 在两点之间添加测地线
# 格式:plot([lon1, lon2], [lat1, lat2])
plt.plot([-75, 77.23], [43, 28.61],
color='blue', linewidth=2,
transform=ccrs.Geodetic()
)
# 使图更大
plt.gcf().set_size_inches(20, 10)
# 将图保存为 SVG
plt.savefig("Cartopy-Geodetic-HiRes.svg")感谢 StackOverflow 上的 @ajdawson 提供的有关如何解决此问题的原始提示!
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow