Траектория движется по земному шару, но я хочу увеличить масштаб и, следовательно, прицелиться. чтобы базовая карта обновлялась в зависимости от экстента. Я хочу использовать спутниковые снимки в качестве базовой карты и использую GoogleTiles из cartopy.io.img_tiles.
Однако изображение загружается только в начальном экстенте и не обновляется в дальнейшем. новые кадры. То же самое происходит при использовании «stock_img()». Интересно, что такие функции, как береговые линии и границы, загружаются. Чтобы визуализировать мою проблему, просмотрите прикрепленные изображения.


Моя функция:
Код: Выделить всё
# Function to animate with moving basemaps
def plot_animation_moving(gdf, zoom_level = 8, extent_margin = 4, tail_length = 50, frames_between_points = 10, interval=100):
tiler = GoogleTiles(style="satellite")
mercator = tiler.crs
# Set up the figure and axis
fig, ax = plt.subplots(figsize=(12, 12), subplot_kw={'projection': mercator})
# Initial extent
initial_extent = [gdf.iloc[0]['lon']-extent_margin, gdf.iloc[0]['lon']+extent_margin, gdf.iloc[0]['lat']-extent_margin, gdf.iloc[0]['lat']+extent_margin]
ax.set_extent(initial_extent)
# Add background and features
ax.add_image(tiler, zoom_level)
# ax.stock_img()
ax.add_feature(cfeature.BORDERS, linestyle=':')
ax.coastlines(resolution='10m')
ax.add_feature(cfeature.LAND)
ax.add_feature(cfeature.OCEAN)
ax.add_feature(cfeature.LAKES, alpha=0.5)
ax.add_feature(cfeature.RIVERS)
# Loop through each pair of points and create points in between
lats_list = []
lons_list = []
dates_list = []
for i in range(len(gdf)):
# create lat, lon and date sequences
...
lats_list.append(lats)
lons_list.append(lons)
dates_list.append(dates)
# Concatenate points
lats = np.concatenate(lats_list)
lons = np.concatenate(lons_list)
dates = np.concatenate(dates_list)
# Create a point with tail object on the Basemap
point, = ...
tail, = ...
date_text = ...
# Update the point position
def update(frame):
# Update point, tail and date
point.set_data([lons[frame]], [lats[frame]])
current_date = pd.to_datetime(dates[frame])
date_text.set_text(f'{current_date.strftime("%Y-%m-%d %H:00")}')
# Update the map extent to follow the line
ax.set_extent([lons[frame] - extent_margin, lons[frame] + extent_margin, lats[frame] - extent_margin, lats[frame] + extent_margin])
return point, tail, date_text
# Create the animation
ani = FuncAnimation(fig, update, frames=tqdm.tqdm(range(len(lats)), file=sys.stdout), blit=False, interval=interval),
ax.add_image(tiler, zoom_level) # --> doesn't help
ani.save("example.mp4")
Поэтому у меня вопрос: как мне правильно обновить изображение базовой карты, чтобы оно загружалось, когда точка перемещается по земному шару?
>
Подробнее здесь: https://stackoverflow.com/questions/788 ... canimation