From: <js...@us...> - 2008-12-08 16:31:53
|
Revision: 6513 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=6513&view=rev Author: jswhit Date: 2008-12-08 16:31:48 +0000 (Mon, 08 Dec 2008) Log Message: ----------- added 'scale' keyword to bluemarble and warpimage to downsample background image (replaces 'resolution' keyword from previous commit). Modified Paths: -------------- trunk/toolkits/basemap/Changelog trunk/toolkits/basemap/examples/warpimage.py trunk/toolkits/basemap/lib/mpl_toolkits/basemap/__init__.py Removed Paths: ------------- trunk/toolkits/basemap/lib/mpl_toolkits/basemap/data/bmng_low.jpg Modified: trunk/toolkits/basemap/Changelog =================================================================== --- trunk/toolkits/basemap/Changelog 2008-12-08 16:10:50 UTC (rev 6512) +++ trunk/toolkits/basemap/Changelog 2008-12-08 16:31:48 UTC (rev 6513) @@ -1,5 +1,6 @@ version 0.99.2 (not yet released) - * added half resolution blue marble image (resolution='low') + * added 'scale' keyword to bluemarble and warpimage methods to + downsample image background. * Made lat_ts default to 0 for mercator. * Now can specify just lon_0 for all cylindrical projections (to produce global map centered on lon_0). Modified: trunk/toolkits/basemap/examples/warpimage.py =================================================================== --- trunk/toolkits/basemap/examples/warpimage.py 2008-12-08 16:10:50 UTC (rev 6512) +++ trunk/toolkits/basemap/examples/warpimage.py 2008-12-08 16:31:48 UTC (rev 6513) @@ -24,7 +24,7 @@ fig=plt.figure() # define projection centered on North America. m = Basemap(projection='mbtfpq',lon_0=-100,resolution='l') -m.bluemarble(resolution='low') +m.bluemarble(scale=0.5) # draw coastlines. m.drawcoastlines(linewidth=0.5,color='0.5') # draw lat/lon grid lines every 30 degrees. @@ -38,7 +38,7 @@ # define cylindrical equidistant projection. m = Basemap(projection='cyl',llcrnrlon=-180,llcrnrlat=-90,urcrnrlon=180,urcrnrlat=90,resolution='l') # plot (unwarped) rgba image. -im = m.bluemarble(resolution='low') +im = m.bluemarble(scale=0.5) # draw coastlines. m.drawcoastlines(linewidth=0.5,color='0.5') # draw lat/lon grid lines. @@ -52,7 +52,7 @@ # define cylindrical equidistant projection. m = Basemap(projection='cyl',llcrnrlon=0,llcrnrlat=-60,urcrnrlon=360,urcrnrlat=60,resolution='l') # plot (unwarped) rgba image. -im = m.bluemarble(resolution='low') +im = m.bluemarble(scale=0.5) # draw coastlines. m.drawcoastlines(linewidth=0.5,color='0.5') # draw lat/lon grid lines. @@ -81,7 +81,7 @@ m = Basemap(llcrnrlon=-145.5,llcrnrlat=1.,urcrnrlon=-2.566,urcrnrlat=46.352,\ rsphere=(6378137.00,6356752.3142),lat_1=50.,lon_0=-107.,\ resolution='i',area_thresh=1000.,projection='lcc') -im = m.bluemarble(resolution='low') +im = m.bluemarble(scale=0.5) # draw coastlines. m.drawcoastlines(linewidth=0.5,color='0.5') # draw parallels and meridians. @@ -100,7 +100,7 @@ resolution=None,projection='omerc',\ lon_0=-100,lat_0=15,lon_2=-120,lat_2=65,lon_1=-50,lat_1=-55) # plot warped rgba image. -im = m.bluemarble(resolution='low') +im = m.bluemarble(scale=0.5) # draw lat/lon grid lines every 20 degrees. m.drawmeridians(np.arange(0,360,20),color='0.5') m.drawparallels(np.arange(-80,81,20),color='0.5') Modified: trunk/toolkits/basemap/lib/mpl_toolkits/basemap/__init__.py =================================================================== --- trunk/toolkits/basemap/lib/mpl_toolkits/basemap/__init__.py 2008-12-08 16:10:50 UTC (rev 6512) +++ trunk/toolkits/basemap/lib/mpl_toolkits/basemap/__init__.py 2008-12-08 16:31:48 UTC (rev 6513) @@ -3135,17 +3135,20 @@ im = self.imshow(rgba,interpolation='nearest',ax=ax,**kwargs) return im - def bluemarble(self,ax=None,resolution='high'): + def bluemarble(self,ax=None,scale=None): """ display blue marble image (from http://visibleearth.nasa.gov) as map background. + Default image size is 5400x2700, which can be quite slow and + use quite a bit of memory. The ``scale`` keyword can be used + to downsample the image (``scale=0.5`` downsamples to 2700x1350). """ if ax is not None: - self.warpimage(image='bluemarble',ax=ax,resolution=resolution) + self.warpimage(image='bluemarble',ax=ax,scale=scale) else: - self.warpimage(image='bluemarble',resolution=resolution) + self.warpimage(image='bluemarble',scale=scale) - def warpimage(self,image="bluemarble",resolution='high',**kwargs): + def warpimage(self,image="bluemarble",scale=None,**kwargs): """ Display an image (filename given by ``image`` keyword) as a map background. If image is a URL (starts with 'http'), it is downloaded to a temp @@ -3159,6 +3162,10 @@ Works with the global images from http://earthobservatory.nasa.gov/Features/BlueMarble/BlueMarble_monthlies.php. + The ``scale`` keyword can be used to downsample (rescale) the image. + Values less than 1.0 will speed things up at the expense of image + resolution. + Extra keyword ``ax`` can be used to override the default axis instance. \**kwargs passed on to :meth:`imshow`. @@ -3181,10 +3188,7 @@ # default image file is blue marble next generation # from NASA (http://visibleearth.nasa.gov). if image == "bluemarble": - if resolution == 'low': - file = os.path.join(basemap_datadir,'bmng_low.jpg') - else: - file = os.path.join(basemap_datadir,'bmng.jpg') + file = os.path.join(basemap_datadir,'bmng.jpg') else: file = image # if image is same as previous invocation, used cached data. @@ -3206,6 +3210,11 @@ # read in jpeg image to rgba array of normalized floats. if not hasattr(self,'_bm_rgba') or newfile: pilImage = Image.open(self._bm_file) + if scale is not None: + w, h = pilImage.size + width = int(np.round(w*scale)) + height = int(np.round(h*scale)) + pilImage = pilImage.resize((width,height),Image.ANTIALIAS) self._bm_rgba = pil_to_array(pilImage) # define lat/lon grid that image spans. nlons = self._bm_rgba.shape[1]; nlats = self._bm_rgba.shape[0] Deleted: trunk/toolkits/basemap/lib/mpl_toolkits/basemap/data/bmng_low.jpg =================================================================== (Binary files differ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |