Определение наличия береговой линии при использовании базовой карты - PullRequest
0 голосов
/ 22 января 2020

Следующая программа работает, когда я не включаю "drawcoastlines". Большинство точек, которые я картирую, достаточно велики, чтобы включать береговую линию, но на одной конкретной карте никакой береговой линии нет. Когда это происходит, я получаю следующее сообщение об ошибке:

Файл "C: \ ProgramData \ Anaconda3 \ lib \ site-packages \ matplotlib \ path.py", строка 130, в init"'вершины' должны быть 2D списком или массивом с формой Nx2")

ValueError: 'вершины "должны быть 2D списком или массивом с формой 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()

Я хотел бы проверить, содержит ли карта береговую линию. Если он тогда включает код береговой линии, если нет, то обойти код.

Есть предложения?

1 Ответ

0 голосов
/ 23 января 2020

Простое использование «try - кроме» должно работать в вашем случае. Просто оберните строку кода, которая вызывает проблемы, как это:

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

Я пробовал с разрешением = 'c', и получите этот график.

enter image description here

...