import folium
import matplotlib.pyplot as plt
import numpy as np
import mplleaflet
url = 'https://server.arcgisonline.com/ArcGIS/rest/services/Specialty/DeLorme_World_Base_Map/MapServer/tile/{z}/{y}/{x}'
m = folium.Map(location=(38, -94), zoom_start=4, tiles=None)
folium.TileLayer(url, attr='Tiles © Esri — Copyright: ©2012 DeLorme', name='DeLorme').add_to(m)
def add_gif(my_map, name, gif_file, bounds):
feature_group = folium.FeatureGroup(name=name)
image_overlay = folium.raster_layers.ImageOverlay(gif_file, bounds=bounds, opacity=0.6)
feature_group.add_child(image_overlay)
feature_group.add_to(m)
add_gif(m, 'Low Atmosphere Wind', 'low_atmo.gif', [[23, -127], [50, -63]])
# add_gif(m, 'High Atmosphere Wind', 'high_atmo.gif', [[23, -127], [50, -63]])
# add_gif(m, 'Surface Rain', 'rain.gif', [[18, -129], [50, -63]])
# add_gif(m, 'Temperature (2m)', 'temp.gif', [[23, -129], [53, -62]])
folium.LayerControl().add_to(m)
m.save('map_complete2.html')
Это выглядит так: я вставляю gif в карту
Однако, когда я увеличиваю карту, стрелка будет искажена. Могу ли я сохранить форму стрелки при увеличении? Я создаю gif на основе нескольких png.
Если я просто помещу на карту одно изображение вместо gif, оно отобразится нормально.
Что я пытаюсь: я пытаюсь улучшить квалификацию gif с помощью другого метода, такого как imagemagick, и использую следующий код
gif_name = name+".gif"
frames = []
filename = 'noaa_images/%s/*.png' % name
imgs = glob.glob(filename) # Get all the pngs
for i in imgs:
new_frame = Image.open(i)
frames.append(new_frame)
# Save into a GIF file that loops forever
frames[0].save(gif_name, format='GIF',transparency=0,
append_images=frames[1:],
save_all=True,
duration=400, loop=0)
Затем я решаю однако реализовать на карте videoLayer, что вызовет другую проблему. Пока я смотрю на inte rnet, не так много людей задают вопросы о videoLayer в folium. Возможно, это не обычный способ реализации этой функции. Спасибо за любую помощь !!!