gpt4 book ai didi

matplotlib - 如何在cartopy中的 map 上绘制填充多边形

转载 作者:行者123 更新时间:2023-12-03 08:50:54 25 4
gpt4 key购买 nike

已编辑,添加答案中的建议

我有一个纬度/经度顶点列表,用于定义 map 上多边形的角点。我想使用 cartopy 在 map 上绘制该多边形,其中边缘是大圆。我尝试按照 https://scitools.org.uk/cartopy/docs/v0.5/matplotlib/introductory_examples/02.polygon.html 中的示例进行操作,但我无法让它工作。这是我到目前为止所尝试过的:

import numpy as np
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
import matplotlib.patches as mpatches

map_proj = ccrs.Orthographic(central_latitude=0.0, central_longitude=80.0)
ax = plt.axes(projection=map_proj)

ax.set_global() # added following an answer to my question
ax.gridlines()

ax.coastlines(linewidth=0.5, color='k', resolution='50m')

lat_corners = np.array([-20., 0., 50., 30.])
lon_corners = np.array([ 20., 90., 90., 30.]) + 15.0 # offset from gridline for clarity

poly_corners = np.zeros((len(lat_corners), 2), np.float64)
poly_corners[:,0] = lon_corners
poly_corners[:,1] = lat_corners

poly = mpatches.Polygon(poly_corners, closed=True, ec='r', fill=False, lw=1, fc=None, transform=ccrs.Geodetic())
ax.add_patch(poly)

Output image

请注意,这些线不是大圆,并且似乎有四个以上的顶点。我觉得这是一件如此简单的事情,一定有一种方法,但我无法从 cartopy 文档中弄清楚这一点。

最佳答案

我认为这可能是因为 Cartopy 的默认变换分辨率对于此投影来说太低。您可以通过强制使用更高的分辨率来解决此问题:

map_proj = ccrs.Orthographic(central_latitude=0.0, central_longitude=80.0)
map_proj._threshold /= 100.
...

这会产生漂亮的大圆弧。

关于matplotlib - 如何在cartopy中的 map 上绘制填充多边形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59020032/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com