# Try displaying NOAA's OpenStreetMap WMS in Basemap from pylab import * import urllib from PIL import Image import cStringIO from mpl_toolkits.basemap import Basemap from datetime import datetime from owslib.wms import WebMapService # Cylindrical Basemap for Baja California lon_min = -118.8 lon_max = -108.6 lat_min = 22.15 lat_max = 32.34 m = Basemap(llcrnrlon=lon_min, urcrnrlat=lat_max, urcrnrlon=lon_max, llcrnrlat=lat_min, resolution='l', projection='cyl') # OpenStreetMap WMS from NOAA urlbase='http://osm.woc.noaa.gov/mapcache?' wms = WebMapService(urlbase) # What layers are available? list(wms.contents) # What CRS projections are available? wms['osm'].crsOptions # What formats are available? wms.getOperationByName('GetMap').formatOptions # Issue the WMS getmap request img = wms.getmap(service='wms',layers=['osm'],transparent=True,srs='EPSG:4326',bbox=(lon_min,lat_min,lon_max,lat_max),size=(256,256),format='image/jpg') # If I retrieve and store the jpg, imread can read it.... im = Image.open(cStringIO.StringIO(urllib.urlopen(img.url).read())) # plot the image in Basemap figure(figsize=(8,6),frameon=True) cs=m.imshow(im) m.drawcoastlines(linewidth=0.25) parallels = arange(20,36,2.) a=m.drawparallels(parallels,labels=[1,0,0,0],fontsize=10) # draw meridians meridians = np.arange(-120,-100,2.) b=m.drawmeridians(meridians,labels=[0,0,0,1],fontsize=10) img.url