首页 > 解决方案 > 在使用底图时确定是否存在海岸线

问题描述

当我不包括“drawcoastlines”时,以下程序有效。我绘制的大多数点都足够大,可以包括海岸线,但在一张特定的地图上,没有海岸线。发生这种情况时,我收到以下错误消息:

文件“C:\ProgramData\Anaconda3\lib\site-packages\matplotlib\path.py”,第 130 行,在init “'vertices' 必须是形状为 Nx2 的 2D 列表或数组”)

ValueError:“顶点”必须是形状为 Nx2 的二维列表或数组

这是该程序的简化版本:

from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt

latMin = 25
latMax = 45
longMin = 95
longMax = 115

m = Basemap(projection='cyl', resolution='h', area_thresh = 0.1,
        llcrnrlat=latMin, urcrnrlat=latMax,
        llcrnrlon=longMin, urcrnrlon=longMax)

m.drawcountries(linewidth=1.00)
m.drawcoastlines(linewidth=0.5)
m.drawstates(linewidth = 0.2)
m.drawrivers(color='#6D5F47', linewidth=.4)
m.shadedrelief()
plt.show()

我想检查地图是否包含海岸线。如果包含,则包含海岸线代码,如果不包含,则绕过该代码。

有什么建议么?

标签: python-3.7matplotlib-basemap

解决方案


简单地使用“try - except”应该适用于您的情况。只需像这样包装导致问题的代码行:

try:
    m.drawcoastlines(linewidth=0.5)
except:
    pass

我试过分辨率='c',并得到这个情节。

在此处输入图像描述


推荐阅读