Revision: 6136
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=6136&view=rev
Author: jswhit
Date: 2008-09-30 17:29:03 +0000 (Tue, 30 Sep 2008)
Log Message:
-----------
added two new projections ('mbtfpq' and 'gall')
Modified Paths:
--------------
trunk/toolkits/basemap/Changelog
trunk/toolkits/basemap/examples/plot_tissot.py
trunk/toolkits/basemap/examples/test.py
trunk/toolkits/basemap/examples/warpimage.py
trunk/toolkits/basemap/lib/mpl_toolkits/basemap/__init__.py
trunk/toolkits/basemap/lib/mpl_toolkits/basemap/proj.py
Modified: trunk/toolkits/basemap/Changelog
===================================================================
--- trunk/toolkits/basemap/Changelog 2008-09-30 11:18:10 UTC (rev 6135)
+++ trunk/toolkits/basemap/Changelog 2008-09-30 17:29:03 UTC (rev 6136)
@@ -1,4 +1,7 @@
version 0.99.2 (not yet released)
+ * Added McBryde-Thomas Flat Polar Quartic (projection =
+ 'mbtfpq') and Gall Stereographic Cylindrical (projection =
+ 'gall').
* fix warpimage and bluemarble methods for projection = 'cyl',
'robin', 'moll' and 'sinu'.
* bugfix patch for rotate_vector from David Huard. David
Modified: trunk/toolkits/basemap/examples/plot_tissot.py
===================================================================
--- trunk/toolkits/basemap/examples/plot_tissot.py 2008-09-30 11:18:10 UTC
(rev 6135)
+++ trunk/toolkits/basemap/examples/plot_tissot.py 2008-09-30 17:29:03 UTC
(rev 6136)
@@ -25,8 +25,9 @@
m5 = Basemap(lon_0=270,lat_0=90,boundinglat=10,projection='nplaea')
m6 = Basemap(lon_0=0,projection='moll')
m7 = Basemap(lon_0=0,projection='robin')
+m8 = Basemap(lon_0=0,projection='mbtfpq')
-for m in [m1,m2,m3,m4,m5,m6,m7]:
+for m in [m1,m2,m3,m4,m5,m6,m7,m8]:
# make a new figure.
fig = plt.figure()
# draw "circles" at specified longitudes and latitudes.
Modified: trunk/toolkits/basemap/examples/test.py
===================================================================
--- trunk/toolkits/basemap/examples/test.py 2008-09-30 11:18:10 UTC (rev
6135)
+++ trunk/toolkits/basemap/examples/test.py 2008-09-30 17:29:03 UTC (rev
6136)
@@ -75,6 +75,26 @@
# create new figure
fig=plt.figure()
+# setup gall stereographic cylindrical map projection.
+m = Basemap(llcrnrlon=-180.,llcrnrlat=-90,urcrnrlon=180.,urcrnrlat=90.,\
+ resolution='c',area_thresh=10000.,projection='gall')
+# transform to nx x ny regularly spaced native projection grid
+nx = len(lons); ny = len(lats)
+topodat = m.transform_scalar(topoin,lons,lats,nx,ny)
+fig.add_axes([0.1,0.1,0.75,0.75])
+# plot image over map.
+im = m.imshow(topodat,plt.cm.jet)
+m.drawcoastlines()
+# draw parallels
+m.drawparallels(circles,labels=[1,1,1,1])
+# draw meridians
+m.drawmeridians(meridians,labels=[1,1,1,1])
+plt.title('Gall Stereographic Cylindrical',y=1.1)
+print 'plotting Gall Stereographic Cylindrical example ...'
+print m.proj4string
+
+# create new figure
+fig=plt.figure()
# setup mercator map projection (-80 to +80).
m = Basemap(llcrnrlon=-180.,llcrnrlat=-80,urcrnrlon=180.,urcrnrlat=80.,\
resolution='c',area_thresh=10000.,projection='merc',\
@@ -615,6 +635,33 @@
plt.title('Robinson')
print 'plotting Robinson example ...'
print m.proj4string
+
+# create new figure
+fig=plt.figure()
+# setup of basemap ('mbtfpq' = McBryde-Thomas Flat Polar Quartic projection)
+m = Basemap(projection='mbtfpq',
+ resolution='c',area_thresh=10000.,lon_0=0.5*(lonsin[0]+lonsin[-1]))
+ax = fig.add_axes([0.1,0.1,0.7,0.7])
+# plot image over map with pcolormesh.
+x,y = m(*np.meshgrid(lonsin,latsin))
+p = m.pcolormesh(x,y,topodatin,shading='flat')
+pos = ax.get_position()
+l, b, w, h = pos.bounds
+cax = plt.axes([l+w+0.05, b, 0.05, h]) # setup colorbar axes.
+plt.colorbar(cax=cax) # draw colorbar
+plt.axes(ax) # make the original axes current again
+# draw coastlines and political boundaries.
+m.drawcoastlines()
+# draw parallels and meridians
+parallels = np.arange(-60.,90,30.)
+m.drawparallels(parallels,labels=[1,0,0,0])
+meridians = np.arange(0.,360.,60.)
+m.drawmeridians(meridians,labels=[0,0,0,1],fontsize=8)
+# draw boundary around map region.
+m.drawmapboundary()
+plt.title('McBryde-Thomas Flat Polar Quartic')
+print 'plotting McBryde-Thomas Flat Polar Quartic example ...'
+print m.proj4string
plt.show()
Modified: trunk/toolkits/basemap/examples/warpimage.py
===================================================================
--- trunk/toolkits/basemap/examples/warpimage.py 2008-09-30 11:18:10 UTC
(rev 6135)
+++ trunk/toolkits/basemap/examples/warpimage.py 2008-09-30 17:29:03 UTC
(rev 6136)
@@ -22,16 +22,16 @@
# create new figure
fig=plt.figure()
-# define orthographic projection centered on North America.
-m = Basemap(projection='robin',lon_0=-100,resolution='l')
+# define projection centered on North America.
+m = Basemap(projection='mbtfpq',lon_0=-100,resolution='l')
m.bluemarble()
# draw coastlines.
m.drawcoastlines(linewidth=0.5,color='0.5')
# draw lat/lon grid lines every 30 degrees.
m.drawmeridians(np.arange(0,360,60),color='0.5')
m.drawparallels(np.arange(-90,90,30),color='0.5')
-plt.title("Blue Marble image warped from 'cyl' to 'robinson'
projection",fontsize=12)
-print 'warp to robinson map ...'
+plt.title("Blue Marble image warped from 'cyl' to 'mbtfpq'
projection",fontsize=12)
+print 'warp to McBryde-Thomas Flat-Polar Quartic map ...'
# create new figure
fig=plt.figure()
Modified: trunk/toolkits/basemap/lib/mpl_toolkits/basemap/__init__.py
===================================================================
--- trunk/toolkits/basemap/lib/mpl_toolkits/basemap/__init__.py 2008-09-30
11:18:10 UTC (rev 6135)
+++ trunk/toolkits/basemap/lib/mpl_toolkits/basemap/__init__.py 2008-09-30
17:29:03 UTC (rev 6136)
@@ -49,6 +49,7 @@
'tmerc' : 'Transverse Mercator',
'omerc' : 'Oblique Mercator',
'mill' : 'Miller Cylindrical',
+ 'gall' : 'Gall Stereographic Cylindrical',
'lcc' : 'Lambert Conformal',
'laea' : 'Lambert Azimuthal Equal Area',
'nplaea' : 'North-Polar Lambert Azimuthal',
@@ -68,6 +69,7 @@
'sinu' : 'Sinusoidal',
'moll' : 'Mollweide',
'robin' : 'Robinson',
+ 'mbtfpq' : 'McBryde-Thomas Flat-Polar Quartic',
'gnom' : 'Gnomonic',
}
supported_projections = []
@@ -75,12 +77,16 @@
supported_projections.append(" %-17s%-40s\n" % (_items))
supported_projections = ''.join(supported_projections)
+_cylproj = ['cyl','merc','mill','gall']
+_pseudocyl = ['moll','robin','sinu','mbtfpq']
+
# projection specific parameters.
projection_params = {'cyl' : 'corners only (no width/height)',
'merc' : 'corners plus lat_ts (no width/height)',
'tmerc' : 'lon_0,lat_0',
'omerc' : 'lon_0,lat_0,lat_1,lat_2,lon_1,lon_2,no_rot',
'mill' : 'corners only (no width/height)',
+ 'gall' : 'corners only (no width/height)',
'lcc' : 'lon_0,lat_0,lat_1,lat_2',
'laea' : 'lon_0,lat_0',
'nplaea' : 'bounding_lat,lon_0,lat_0,no corners or
width/height',
@@ -100,6 +106,7 @@
'sinu' : 'lon_0,lat_0,no corners or width/height',
'moll' : 'lon_0,lat_0,no corners or width/height',
'robin' : 'lon_0,lat_0,no corners or width/height',
+ 'mbtfpq' : 'lon_0,lat_0,no corners or width/height',
'gnom' : 'lon_0,lat_0',
}
@@ -160,7 +167,7 @@
============== ====================================================
For ``sinu``, ``moll``, ``npstere``, ``spstere``, ``nplaea``, ``splaea``,
- ``npaeqd``, ``spaeqd`` or ``robin``, the values of
+ ``npaeqd``, ``spaeqd``, ``robin`` or ``mbtfpq``, the values of
llcrnrlon, llcrnrlat, urcrnrlon, urcrnrlat, width and height are ignored
(because either they are computed internally, or entire globe is
always plotted).
@@ -588,7 +595,7 @@
self._fulldisk = False
self.llcrnrlon = llcrnrlon; self.llcrnrlat = llcrnrlat
self.urcrnrlon = urcrnrlon; self.urcrnrlat = urcrnrlat
- elif projection in ['moll','robin','sinu']:
+ elif projection in _pseudocyl:
if lon_0 is None:
raise ValueError, 'must specify lon_0 for Robinson, Mollweide,
or Sinusoidal basemap'
if width is not None or height is not None:
@@ -630,7 +637,7 @@
llcrnrlon,llcrnrlat,urcrnrlon,urcrnrlat =
_choosecorners(width,height,**projparams)
self.llcrnrlon = llcrnrlon; self.llcrnrlat = llcrnrlat
self.urcrnrlon = urcrnrlon; self.urcrnrlat = urcrnrlat
- elif projection == 'mill':
+ elif projection in ['mill','gall']:
if not using_corners:
llcrnrlon = -180.
llcrnrlat = -90.
@@ -710,10 +717,10 @@
self.urcrnrx = proj.urcrnrx
self.urcrnry = proj.urcrnry
# set min/max lats for projection domain.
- if projection in ['mill','cyl','merc']:
+ if projection in _cylproj:
self.latmin = self.llcrnrlat
self.latmax = self.urcrnrlat
- elif projection in ['ortho','geos','moll','robin','sinu']:
+ elif projection in ['ortho','geos'] + _pseudocyl:
self.latmin = -90.
self.latmax = 90.
else:
@@ -759,7 +766,7 @@
yd = (y[1:]-y[0:-1])**2
dist = np.sqrt(xd+yd)
split = dist > 5000000.
- if np.sum(split) and self.projection not in
['merc','cyl','mill']:
+ if np.sum(split) and self.projection not in _cylproj:
ind =
(np.compress(split,np.squeeze(split*np.indices(xd.shape)))+1).tolist()
iprev = 0
ind.append(len(xd))
@@ -838,8 +845,7 @@
containsPole = hasNP or hasSP
# these projections cannot cross pole.
if containsPole and\
- self.projection in
['merc','mill','cyl','robin','moll','sinu','geos']:
- #self.projection in
['tmerc','omerc','cass','merc','mill','cyl','robin','moll','sinu','geos']:
+ self.projection in _cylproj + _pseudocyl + ['geos']:
raise ValueError('%s projection cannot cross
pole'%(self.projection))
# make sure orthographic or gnomonic projection has containsPole=True
# we will compute the intersections in stereographic
@@ -1068,7 +1074,7 @@
projparms['x_0']=-llcrnrx
projparms['y_0']=-llcrnry
maptran = pyproj.Proj(projparms)
- elif self.projection in ['moll','robin','sinu']:
+ elif self.projection in _pseudocyl:
# quasi-elliptical region.
lon_0 = self.projparams['lon_0']
# left side
@@ -1110,7 +1116,7 @@
b[:,0]=[self.xmin,self.xmin,self.xmax,self.xmax]
b[:,1]=[self.ymin,self.ymax,self.ymax,self.ymin]
boundaryxy = _geoslib.Polygon(b)
- if self.projection in ['mill','merc','cyl']:
+ if self.projection in _cylproj:
# make sure map boundary doesn't quite include pole.
if self.urcrnrlat > 89.9999:
urcrnrlat = 89.9999
@@ -1127,7 +1133,7 @@
b[:,0]=x; b[:,1]=y
boundaryxy = _geoslib.Polygon(b)
else:
- if self.projection not in ['moll','robin','sinu']:
+ if self.projection not in _pseudocyl:
lons, lats = maptran(x,y,inverse=True)
# fix lons so there are no jumps.
n = 1
@@ -1198,7 +1204,7 @@
limb.set_clip_on(False)
if zorder is not None:
limb.set_zorder(zorder)
- elif self.projection in ['moll','robin','sinu']: # elliptical region.
+ elif self.projection in _pseudocyl: # elliptical region.
nx = 100; ny = 100
# quasi-elliptical region.
lon_0 = self.projparams['lon_0']
@@ -1738,7 +1744,7 @@
if xoffset is None:
xoffset = (self.urcrnrx-self.llcrnrx)/100.
- if self.projection in ['merc','cyl','mill','moll','robin','sinu']:
+ if self.projection in _cylproj + _pseudocyl:
lons = np.arange(self.llcrnrlon,self.urcrnrlon+0.01,0.01)
elif self.projection in ['tmerc']:
lon_0 = self.projparams['lon_0']
@@ -1751,7 +1757,7 @@
circlesl = circles.tolist()
except:
circlesl = circles
- if self.projection not in ['merc','cyl','mill','moll','robin','sinu']:
+ if self.projection not in _cylproj + _pseudocyl:
if max(circlesl) > 0 and latmax not in circlesl:
circlesl.append(latmax)
if min(circlesl) < 0 and -latmax not in circlesl:
@@ -1780,7 +1786,7 @@
yd = (y[1:]-y[0:-1])**2
dist = np.sqrt(xd+yd)
split = dist > 500000.
- if np.sum(split) and self.projection not in
['merc','cyl','mill','moll','robin','sinu']:
+ if np.sum(split) and self.projection not in _cylproj +
_pseudocyl:
ind =
(np.compress(split,np.squeeze(split*np.indices(xd.shape)))+1).tolist()
xl = []
yl = []
@@ -1816,12 +1822,12 @@
# if so, find x,y location of intersection and draw a label there.
dx = (self.xmax-self.xmin)/1000.
dy = (self.ymax-self.ymin)/1000.
- if self.projection in ['moll','robin','sinu']:
+ if self.projection in _pseudocyl:
lon_0 = self.projparams['lon_0']
for dolab,side in zip(labels,['l','r','t','b']):
if not dolab: continue
# for cylindrical projections, don't draw parallels on top or
bottom.
- if self.projection in ['cyl','merc','mill','moll','robin','sinu']
and side in ['t','b']: continue
+ if self.projection in _cylproj + _pseudocyl and side in ['t','b']:
continue
if side in ['l','r']:
nmax = int((self.ymax-self.ymin)/dy+1)
yy = np.linspace(self.llcrnry,self.urcrnry,nmax)
@@ -1897,14 +1903,14 @@
if n >= 0:
t = None
if side == 'l':
- if self.projection in ['moll','robin','sinu']:
+ if self.projection in _pseudocyl:
xlab,ylab = self(lon_0-179.9,lat)
else:
xlab = self.llcrnrx
xlab = xlab-xoffset
t =
ax.text(xlab,yy[n],latlab,horizontalalignment='right',verticalalignment='center',**kwargs)
elif side == 'r':
- if self.projection in ['moll','robin','sinu']:
+ if self.projection in _pseudocyl:
xlab,ylab = self(lon_0+179.9,lat)
else:
xlab = self.urcrnrx
@@ -1994,7 +2000,7 @@
if xoffset is None:
xoffset = (self.urcrnrx-self.llcrnrx)/100.
- if self.projection not in ['merc','cyl','mill','moll','robin','sinu']:
+ if self.projection not in _cylproj + _pseudocyl:
lats = np.arange(-latmax,latmax+0.01,0.01)
else:
lats = np.arange(-90,90.01,0.01)
@@ -2022,7 +2028,7 @@
yd = (y[1:]-y[0:-1])**2
dist = np.sqrt(xd+yd)
split = dist > 500000.
- if np.sum(split) and self.projection not in
['merc','cyl','mill','moll','robin','sinu']:
+ if np.sum(split) and self.projection not in _cylproj +
_pseudocyl:
ind =
(np.compress(split,np.squeeze(split*np.indices(xd.shape)))+1).tolist()
xl = []
yl = []
@@ -2062,14 +2068,14 @@
# if so, find x,y location of intersection and draw a label there.
dx = (self.xmax-self.xmin)/1000.
dy = (self.ymax-self.ymin)/1000.
- if self.projection in ['moll','sinu','robin']:
+ if self.projection in _pseudocyl:
lon_0 = self.projparams['lon_0']
xmin,ymin = self(lon_0-179.9,-90)
xmax,ymax = self(lon_0+179.9,90)
for dolab,side in zip(labels,['l','r','t','b']):
if not dolab: continue
# for cylindrical projections, don't draw meridians on left or
right.
- if self.projection in ['cyl','merc','mill','sinu','robin','moll']
and side in ['l','r']: continue
+ if self.projection in _cylproj + _pseudocyl and side in ['l','r']:
continue
if side in ['l','r']:
nmax = int((self.ymax-self.ymin)/dy+1)
yy = np.linspace(self.llcrnry,self.urcrnry,nmax)
@@ -2085,7 +2091,10 @@
lons = [(lon+360) % 360 for lon in lons]
else:
nmax = int((self.xmax-self.xmin)/dx+1)
- xx = np.linspace(self.llcrnrx,self.urcrnrx,nmax)
+ if self.projection in _pseudocyl:
+ xx = np.linspace(xmin,xmax,nmax)
+ else:
+ xx = np.linspace(self.llcrnrx,self.urcrnrx,nmax)
if side == 'b':
lons,lats =
self(xx,self.llcrnry*np.ones(xx.shape,np.float32),inverse=True)
lons = lons.tolist(); lats = lats.tolist()
@@ -2141,7 +2150,7 @@
for i,n in enumerate([nl,nr]):
lat = lats[n]/100.
# no meridians > latmax for projections other than
merc,cyl,miller.
- if self.projection not in ['merc','cyl','mill'] and lat >
latmax: continue
+ if self.projection not in _cylproj and lat > latmax:
continue
# don't bother if close to the first label.
if i and abs(nr-nl) < 100: continue
if n >= 0:
@@ -2151,11 +2160,9 @@
elif side == 'r':
t =
ax.text(self.urcrnrx+xoffset,yy[n],lonlab,horizontalalignment='left',verticalalignment='center',**kwargs)
elif side == 'b':
- if self.projection != 'robin' or (xx[n] > xmin and
xx[n] < xmax):
- t =
ax.text(xx[n],self.llcrnry-yoffset,lonlab,horizontalalignment='center',verticalalignment='top',**kwargs)
+ t =
ax.text(xx[n],self.llcrnry-yoffset,lonlab,horizontalalignment='center',verticalalignment='top',**kwargs)
else:
- if self.projection != 'robin' or (xx[n] > xmin and
xx[n] < xmax):
- t =
ax.text(xx[n],self.urcrnry+yoffset,lonlab,horizontalalignment='center',verticalalignment='bottom',**kwargs)
+ t =
ax.text(xx[n],self.urcrnry+yoffset,lonlab,horizontalalignment='center',verticalalignment='bottom',**kwargs)
if t is not None: linecolls[lon][1].append(t)
# set axes limits to fit map region.
@@ -2313,7 +2320,7 @@
if min(delon) < 0. or min(delat) < 0.:
raise ValueError, 'lons and lats must be increasing!'
# check that lons in -180,180 for non-cylindrical projections.
- if self.projection not in ['cyl','merc','mill']:
+ if self.projection not in _cylproj:
lonsa = np.array(lons)
count = np.sum(lonsa < -180.00001) + np.sum(lonsa > 180.00001)
if count > 1:
@@ -2384,7 +2391,7 @@
if min(delon) < 0. or min(delat) < 0.:
raise ValueError, 'lons and lats must be increasing!'
# check that lons in -180,180 for non-cylindrical projections.
- if self.projection not in ['cyl','merc','mill']:
+ if self.projection not in _cylproj:
lonsa = np.array(lons)
count = np.sum(lonsa < -180.00001) + np.sum(lonsa > 180.00001)
if count > 1:
@@ -2516,7 +2523,7 @@
ax.set_xlim((self.llcrnrx, self.urcrnrx))
ax.set_ylim((self.llcrnry, self.urcrnry))
# turn off axes frame for non-rectangular projections.
- if self.projection in ['moll','robin','sinu']:
+ if self.projection in _pseudocyl:
ax.set_frame_on(False)
if self.projection in ['ortho','geos'] and self._fulldisk:
ax.set_frame_on(False)
@@ -2782,7 +2789,7 @@
# print warning suggesting that the data be shifted in longitude
# with the shiftgrid function.
# only do this check for global projections.
- if self.projection in ['merc','cyl','mill','moll','robin','sinu']:
+ if self.projection in _cylproj + _pseudocyl:
xx = x[x.shape[0]/2,:]
condition = (xx >= self.xmin) & (xx <= self.xmax)
xl = xx.compress(condition).tolist()
@@ -2855,7 +2862,7 @@
# print warning suggesting that the data be shifted in longitude
# with the shiftgrid function.
# only do this check for global projections.
- if self.projection in ['merc','cyl','mill','moll','robin','sinu']:
+ if self.projection in _cylproj + _pseudocyl:
xx = x[x.shape[0]/2,:]
condition = (xx >= self.xmin) & (xx <= self.xmax)
xl = xx.compress(condition).tolist()
@@ -3101,7 +3108,7 @@
lsmask_lats,nx,ny,returnxy=True,order=0,masked=255)
# for these projections, points outside the projection
# limb have to be set to transparent manually.
- if self.projection in ['moll','robin','sinu']:
+ if self.projection in _pseudocyl:
lons, lats = self(x, y, inverse=True)
lon_0 = self.projparams['lon_0']
lats = lats[:,nx/2]
@@ -3207,7 +3214,7 @@
self._bm_lats = np.arange(-90.+0.5*delta,90.,delta)
# is it a cylindrical projection whose limits lie
# outside the limits of the image?
- cylproj = self.projection in ['mill','cyl','merc'] and \
+ cylproj = self.projection in _cylproj and \
(self.urcrnrlon > self._bm_lons[-1] or \
self.llcrnrlon < self._bm_lons[0])
# if pil_to_array returns a 2D array, it's a grayscale image.
@@ -3260,8 +3267,8 @@
ma.masked_array(self._bm_rgba_warped,mask=mask)
# make points outside projection limb transparent.
self._bm_rgba_warped = self._bm_rgba_warped.filled(0.)
- # treat mollweide, robinson and sinusoidal.
- elif self.projection in ['moll','robin','sinu']:
+ # treat pseudo-cyl projections such as mollweide, robinson and
sinusoidal.
+ elif self.projection in _pseudocyl:
lonsr,latsr = self(x,y,inverse=True)
mask = ma.zeros((ny,nx,4),np.int8)
lon_0 = self.projparams['lon_0']
Modified: trunk/toolkits/basemap/lib/mpl_toolkits/basemap/proj.py
===================================================================
--- trunk/toolkits/basemap/lib/mpl_toolkits/basemap/proj.py 2008-09-30
11:18:10 UTC (rev 6135)
+++ trunk/toolkits/basemap/lib/mpl_toolkits/basemap/proj.py 2008-09-30
17:29:03 UTC (rev 6136)
@@ -6,6 +6,9 @@
_dg2rad = math.radians(1.)
_rad2dg = math.degrees(1.)
+_cylproj = ['cyl','merc','mill','gall']
+_pseudocyl = ['moll','robin','sinu','mbtfpq']
+
_upper_right_out_of_bounds = (
'the upper right corner of the plot is not in the map projection region')
@@ -67,7 +70,7 @@
self.esq = (self.rmajor**2 - self.rminor**2)/self.rmajor**2
self.llcrnrlon = llcrnrlon
self.llcrnrlat = llcrnrlat
- if self.projection not in ['cyl','ortho','geos','moll','robin','sinu']:
+ if self.projection not in ['ortho','geos','cyl'] + _pseudocyl:
self._proj4 = pyproj.Proj(projparams)
llcrnrx, llcrnry = self(llcrnrlon,llcrnrlat)
elif self.projection == 'cyl':
@@ -119,7 +122,7 @@
llcrnrx, llcrnry = self(llcrnrlon,llcrnrlat)
if llcrnrx > 1.e20 or llcrnry > 1.e20:
raise ValueError(_lower_left_out_of_bounds)
- elif self.projection in ['moll','robin','sinu']:
+ elif self.projection in _pseudocyl:
self._proj4 = pyproj.Proj(projparams)
xtmp,urcrnry = self(projparams['lon_0'],90.)
urcrnrx,xtmp = self(projparams['lon_0']+180.,0)
@@ -140,7 +143,7 @@
if urcrnrislatlon:
self.urcrnrlon = urcrnrlon
self.urcrnrlat = urcrnrlat
- if self.projection not in ['ortho','geos','moll','robin','sinu']:
+ if self.projection not in ['ortho','geos'] + _pseudocyl:
urcrnrx,urcrnry = self(urcrnrlon,urcrnrlat)
elif self.projection == 'ortho':
if self._fulldisk:
@@ -158,7 +161,7 @@
urcrnrx,urcrnry = self(urcrnrlon,urcrnrlat)
if urcrnrx > 1.e20 or urcrnry > 1.e20:
raise ValueError(_upper_right_out_of_bounds)
- elif self.projection in ['moll','robin','sinu']:
+ elif self.projection in _pseudocyl:
xtmp,urcrnry = self(projparams['lon_0'],90.)
urcrnrx,xtmp = self(projparams['lon_0']+180.,0)
else:
@@ -216,7 +219,7 @@
else:
outx,outy = self._proj4(x, y, inverse=inverse)
if inverse:
- if self.projection in ['merc','mill']:
+ if self.projection in ['merc','mill','gall']:
if self.projection == 'merc':
coslat = math.cos(math.radians(self.projparams['lat_ts']))
sinlat = math.sin(math.radians(self.projparams['lat_ts']))
@@ -234,7 +237,7 @@
except: # x a sequence
outx = [_rad2dg*(xi/rcurv) + self.llcrnrlon for xi in
x]
else:
- if self.projection in ['merc','mill']:
+ if self.projection in ['merc','mill','gall']:
if self.projection == 'merc':
coslat = math.cos(math.radians(self.projparams['lat_ts']))
sinlat = math.sin(math.radians(self.projparams['lat_ts']))
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Matplotlib-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/matplotlib-checkins