Я пытаюсь нанести круги на карту проекции Миллера, используя центральную широту, долготу и радиус.Я не могу заставить круги отображаться на карте.Я попытался построить их, используя различные методы, как показано в ссылках.
Как нарисовать круг в базовой карте или добавить артист
Как сделать сглаживаниекруги на проекциях базовой карты
Вот мой код:
def plot_notams(dict_of_filtered_notams):
''' Create a map of the US and plot all NOTAMS from a given time period.'''
'''Create the map'''
fig = plt.figure(figsize=(8,6), dpi=200)
ax = fig.add_subplot(111)
m = Basemap(projection='mill',llcrnrlat=20, urcrnrlat=55, llcrnrlon=-135, urcrnrlon=-60, resolution='h')
m.drawcoastlines()
m.drawcountries(linewidth=2)
m.drawstates()
m.fillcontinents(color='coral', lake_color='aqua')
m.drawmapboundary(fill_color='aqua')
m.drawmeridians(np.arange(-130, -65, 10), labels=[1,0,0,1], textcolor='black')
m.drawparallels(np.arange(20, 60, 5), labels=[1,0,0,1], textcolor='black')
''' Now add the NOTAMS to the map '''
notam_data = dict_of_filtered_notams['final_notam_list']
for line in notam_data:
notam_lat = float(line.split()[0])
notam_lon = float(line.split()[1])
coords = convert_coords(notam_lon, notam_lat)
notam_lon, notam_lat = coords[0], coords[1]
FL400_radius = np.radians(float(line.split()[2]))
x,y = m(notam_lon, notam_lat)
print("notam_lon = ",notam_lon, "notam_lat = ", notam_lat,"\n")
print("x,y values = ",'%.3f'%x,",",'%.3f'%y,"\n")
print("FL400_radius = ",('% 3.2f' % FL400_radius))
print("")
cir = plt.Circle((x,y), FL400_radius, color="white", fill=False)
ax.add_patch(cir)
(Функция convert_coords просто форматирует значения notam_lon / notam_lat в пригодный для использования формат, как показано в данных ниже.)
Вот как выглядят мои данные (вы можете увидеть, где они печатаются в приведенном выше коде):
notam_lon = -117.7839 notam_lat = 39.6431
x, y значения = 1914342,075, 2398770,441
FL400_radius = 6,98
Вот изображение того, что мой код дает выше:
Я также попытался использовать функцию map.plot () (в частности, m.plot (x, y, "o")) вместо "ax.add_patch (cir)".Это сработало, но наметил точки или «о», конечно.Вот изображение, полученное путем замены "ax.add_patch (cir)" на "m.plot (x, y," o ")."
И какпоследнее замечание, я использую базовую карту 1.2.0-1 и matplotlib 3.0.3.Я не нашел никаких признаков того, что эти версии несовместимы.Кроме того, эта неспособность построить круг не была проблемой 2 месяца назад, когда я делал это в последний раз.Я в недоумении здесь.Я ценю любые отзывы.Спасибо.