Search code examples
pythonopenstreetmapcartopy

ValueError: A non-empty list of tiles should be provided to merge


Can someone help me figure out the error message while using cartopy?

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid.inset_locator import inset_axes
import cartopy.crs as ccrs
import cartopy.io.img_tiles as cimgt

import windrose

ws = np.random.random(500) * 6
wd = np.random.random(500) * 360

minlon, maxlon, minlat, maxlat = (6.5, 7.0, 45.85, 46.05)

proj = ccrs.PlateCarree()
fig = plt.figure(figsize=(12, 6))
# Draw main ax on top of which we will add windroses
main_ax = fig.add_subplot(1, 1, 1, projection=proj)
main_ax.set_extent([minlon, maxlon, minlat, maxlat], crs=proj)
main_ax.gridlines(draw_labels=True)
main_ax.coastlines()

request = cimgt.OSM()
main_ax.add_image(request, 12)

The error I receive is ValueError: A non-empty list of tiles should be provided to merge. and can't seem to figure out what's the issue.


Solution

  • Your request is rejected by OSM server. To get around it, you need to use image_spoof() as demonstrated in this link.

    With image_spoof() in place, your relevant code should be:-

    # reformat web request for street map spoofing
    cimgt.OSM.get_image = image_spoof
    # continued with your code
    request = cimgt.OSM() # spoofed