On 8/1/12 4:09 PM, Scott Henderson wrote:
> Hi Jeff,
>
> I'm continuing to enjoy using basemap, but have a question about the shaded 
> relief background. I frequently use greyscale shaded relief on the 
> continents, but blue or white for the oceans. the shadedrelief() function is 
> really convenient, but it includes shading for the oceans. Is there a way to 
> afterwards just shade oceans? I've included my modified shaded_relief 
> function in this email that uses some of the other natural earth products in 
> case you need to see it.
>
> Example:
> bmap.drawmapboundary(fill_color='aqua')
> bmap.shadedrelief()
>
> Or something like:
> bmap.shadedrelief()
> **bmap.filloceans('aqua')
>
>
> Thanks,
> Scott

Scott:  You could overlay the shaded relief image on a land-sea mask, 
where the land part of the mask is transparent.  Like this:

from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
import numpy as np
bmap = Basemap(projection='ortho',lat_0=45,lon_0=-100,resolution='l')
bmap.drawmapboundary()
bmap.drawmeridians(np.arange(0,360,30))
bmap.drawparallels(np.arange(-90,90,30))
bmap.shadedrelief()
bmap.drawlsmask(ocean_color='aqua',land_color=(255,255,255,1))
plt.show()

>
> PS. is there a basemap mailing list I should send questions like this to?

No - just send questions to matplotlib-users (I've cc'ed the list)

-Jeff
>
>
> from PIL import Image
> from matplotlib.image import pil_to_array
>
>      def shadedrelief_highres(self,style='hypsometric', region=(-75.0, -35.0, 
> -65.0, -15.0),ax=None,scale=None,**kwargs):
>          ''' can avoid Memory Error with warpimage() by pre-cutting high-res 
> arrays with GDAL?
>              region = (minLon, minLat, maxLon, maxLat)'''
>          print 'NOTE: only set up for cyl coordinates with extent defined by 
> region'
>          basedir = '/Users/scotthenderson/data/natural_earth/'
>          if style == 'hypsometric':
>              path = os.path.join(basedir,'HYP_HR_SR_OB_DR.tif')
>          elif style == 'natural':
>              path = os.path.join(basedir,'NE1_HR_LC_SR_W_DR.tif')
>          elif style == 'hillshade':
>              path = os.path.join(basedir,'SR_HR.tif')
>
>          outfile = os.path.join(basedir,'tmp.tif')
>          if os.path.isfile(outfile): os.remove(outfile)
>          os.system('gdalwarp -te {0} {1} {2} {3} {infile} 
> {out}'.format(*region, infile=path, out=outfile))
>
>          #copy only relevant commands from warpimage imshow() overrides 
> colorbar for rgb or PIL arrays
>          pilImage = Image.open(outfile)
>          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)
>          # if pil_to_array returns a 2D array, it's a grayscale image.
>          # create an RGB image, with R==G==B.
>          if self._bm_rgba.ndim == 2:
>              tmp = np.empty(self._bm_rgba.shape+(3,),np.uint8)
>              for k in range(3):
>                  tmp[:,:,k] = self._bm_rgba
>              self._bm_rgba = tmp
>
>          im = self.imshow(self._bm_rgba, ax=ax, **kwargs)
>          return im


-- 
Jeffrey S. Whitaker         Phone  : (303)497-6313
Meteorologist               FAX    : (303)497-6449
NOAA/OAR/PSD  R/PSD1        Email  : jeffrey.s.whita...@noaa.gov
325 Broadway                Office : Skaggs Research Cntr 1D-113
Boulder, CO, USA 80303-3328 Web    : http://tinyurl.com/5telg


------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to