Построение изогнутой линии в базовой карте Python - PullRequest
4 голосов
/ 15 декабря 2010

Я бы хотел изобразить изогнутые / дугообразные линии на карте базовой карты.Я могу построить прямую линию, используя map.plot (x, y, ..), но как мне сделать ее изогнутой / иметь стрелки?

В matplotlib это можно сделать с помощью annotate (..),но у Basemap нет этого метода.

Есть идеи?

1 Ответ

3 голосов
/ 16 июля 2012

Это очень старый вопрос, но я подумал, что было бы неплохо ответить в любом случае. Когда вы произносили изогнутые линии, я предполагал, что вы хотите нарисовать большой круг . Вот пример того, как это сделать, в документации basemap , которую я модифицировал, чтобы немного проще изменить себя:

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

m = Basemap(projection='cyl')

p0_ll =  -73.98, 40.78
p1_ll = 0.08, 51.53

m.drawgreatcircle(p0_ll[0], p0_ll[1], p1_ll[0], p1_ll[1], 
                  linewidth=2, color='b')
m.drawcoastlines()
m.fillcontinents()

plt.show()

enter image description here

Обратите внимание, что метод большого круга не может обрабатывать пересечение краев карты (, как упомянуто в документации ), что, хотя и четко задокументировано, является довольно серьезным недостатком ИМХО.

Надеюсь, это кому-нибудь поможет,

...