Revision: 6514
          http://matplotlib.svn.sourceforge.net/matplotlib/?rev=6514&view=rev
Author:   jswhit
Date:     2008-12-08 17:00:12 +0000 (Mon, 08 Dec 2008)

Log Message:
-----------
fix drawlsmask so it works for cylindrical projections that have limits 
outside -180,180

Modified Paths:
--------------
    trunk/toolkits/basemap/Changelog
    trunk/toolkits/basemap/lib/mpl_toolkits/basemap/__init__.py

Modified: trunk/toolkits/basemap/Changelog
===================================================================
--- trunk/toolkits/basemap/Changelog    2008-12-08 16:31:48 UTC (rev 6513)
+++ trunk/toolkits/basemap/Changelog    2008-12-08 17:00:12 UTC (rev 6514)
@@ -1,4 +1,6 @@
 version 0.99.2 (not yet released)
+           * fix drawlsmask method so that it works for cylindrical
+             projections with limits outside (-180,180).
            * added 'scale' keyword to bluemarble and warpimage methods to
              downsample image background.
            * Made lat_ts default to 0 for mercator.

Modified: trunk/toolkits/basemap/lib/mpl_toolkits/basemap/__init__.py
===================================================================
--- trunk/toolkits/basemap/lib/mpl_toolkits/basemap/__init__.py 2008-12-08 
16:31:48 UTC (rev 6513)
+++ trunk/toolkits/basemap/lib/mpl_toolkits/basemap/__init__.py 2008-12-08 
17:00:12 UTC (rev 6514)
@@ -3082,12 +3082,25 @@
                 lsmask_lats = np.arange(-90.+0.5*delta,90.,delta)
                 lsmask = 
np.reshape(np.fromstring(lsmaskf.read(),np.uint8),(nlats,nlons))
                 lsmaskf.close()
-        # instance variable lsmask is set on first invocation,
-        # it contains the land-sea mask interpolated to the native
-        # projection grid.  Further calls to drawlsmask will not
-        # redo the interpolation (unless a new land-sea mask is passed
-        # in via the lsmask, lsmask_lons, lsmask_lats keywords).
+            # instance variable lsmask is set on first invocation,
+            # it contains the land-sea mask interpolated to the native
+            # projection grid.  Further calls to drawlsmask will not
+            # redo the interpolation (unless a new land-sea mask is passed
+            # in via the lsmask, lsmask_lons, lsmask_lats keywords).
 
+            # is it a cylindrical projection whose limits lie 
+            # outside the limits of the image?
+            cylproj =  self.projection in _cylproj and \
+                      (self.urcrnrlon > lsmask_lons[-1] or \
+                       self.llcrnrlon < lsmask_lons[0])
+            if cylproj:
+                # stack grids side-by-side (in longitiudinal direction), so
+                # any range of longitudes may be plotted on a world map.
+                lsmask_lons = \
+                np.concatenate((lsmask_lons,lsmask_lons+360),1)
+                lsmask = \
+                np.concatenate((lsmask,lsmask),1)
+
         # transform mask to nx x ny regularly spaced native projection grid
         # nx and ny chosen to have roughly the same horizontal
         # resolution as mask.
@@ -3097,7 +3110,7 @@
             if self.projection == 'cyl':
                 dx = lsmask_lons[1]-lsmask_lons[0]
             else:
-                dx = 2.*math.pi*self.rmajor/float(nlons)
+                dx = (np.pi/180.)*(lsmask_lons[1]-lsmask_lons[0])*self.rmajor
             nx = int((self.xmax-self.xmin)/dx)+1; ny = 
int((self.ymax-self.ymin)/dx)+1
         # interpolate rgba values from proj='cyl' (geographic coords)
         # to a rectangular map projection grid.


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

------------------------------------------------------------------------------
SF.Net email is Sponsored by MIX09, March 18-20, 2009 in Las Vegas, Nevada.
The future of the web can't happen without you.  Join us at MIX09 to help
pave the way to the Next Web now. Learn more and register at
http://ad.doubleclick.net/clk;208669438;13503038;i?http://2009.visitmix.com/
_______________________________________________
Matplotlib-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/matplotlib-checkins

Reply via email to