2010-12-15 3 views
4

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

В matplotlib это можно сделать, используя аннотацию (..), но Basemap не имеет этого метода.

Любые идеи?

+0

Хорошо, нашел одно решение, то есть просто рисовать на matplotlib.pyplot вместо объекта карты. Однако это не позволяет мне делать что-то вроде «обертывания» земного шара строкой – Ash 2010-12-17 09:07:55

ответ

3

Это очень старый вопрос, но я думал, что было бы хорошо ответить в любом случае. Когда вы сказали, что изогнутые линии, я предположил, что вы хотели нарисовать great circle. Существует пример делать точно, что в basemap documentation, которые я изменил, чтобы сделать немного более легко изменить себя:

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

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

Надежда, что помогает кому-то,