From: <ef...@us...> - 2007-10-25 16:24:33
|
Revision: 4002 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4002&view=rev Author: efiring Date: 2007-10-25 09:24:28 -0700 (Thu, 25 Oct 2007) Log Message: ----------- Fix vector rotation; southern hemisphere vectors were reversed Modified Paths: -------------- trunk/toolkits/basemap/lib/matplotlib/toolkits/basemap/basemap.py Modified: trunk/toolkits/basemap/lib/matplotlib/toolkits/basemap/basemap.py =================================================================== --- trunk/toolkits/basemap/lib/matplotlib/toolkits/basemap/basemap.py 2007-10-25 14:10:16 UTC (rev 4001) +++ trunk/toolkits/basemap/lib/matplotlib/toolkits/basemap/basemap.py 2007-10-25 16:24:28 UTC (rev 4002) @@ -12,7 +12,7 @@ from proj import Proj import matplotlib.numerix as NX from matplotlib.numerix import ma -from matplotlib.mlab import linspace +from numpy import linspace from matplotlib.numerix.mlab import squeeze from matplotlib.cbook import popd, is_scalar from shapelib import ShapeFile @@ -2175,12 +2175,11 @@ uin = interp(uin,lons,lats,lonsout,latsout,checkbounds=checkbounds,order=order,masked=masked) vin = interp(vin,lons,lats,lonsout,latsout,checkbounds=checkbounds,order=order,masked=masked) # rotate from geographic to map coordinates. - delta = 0.1 # incement in latitude used to estimate derivatives. + delta = 0.1 # increment in latitude used to estimate derivatives. xn,yn = self(lonsout,NX.where(latsout+delta<90.,latsout+delta,latsout-delta)) - dxdlat = NX.where(latsout+delta<90.,(xn-x)/(latsout+delta),(x-xn)/(latsout+delta)) - dydlat = NX.where(latsout+delta<90.,(yn-y)/(latsout+delta),(y-yn)/(latsout+delta)) # northangle is the angle between true north and the y axis. - northangle = NX.arctan2(dxdlat,dydlat) + northangle = NX.where(lats+delta<90, NX.arctan2(xn-x, yn-y), + NX.arctan2(x-xn, y-yn)) uout = uin*NX.cos(northangle) + vin*NX.sin(northangle) vout = vin*NX.cos(northangle) - uin*NX.sin(northangle) if returnxy: @@ -2211,12 +2210,10 @@ """ x, y = self(lons, lats) # rotate from geographic to map coordinates. - delta = 0.1 # incement in latitude used to estimate derivatives. + delta = 0.1 # increment in latitude used to estimate derivatives. xn,yn = self(lons,NX.where(lats+delta<90.,lats+delta,lats-delta)) - dxdlat = NX.where(lats+delta<90.,(xn-x)/(lats+delta),(x-xn)/(lats+delta)) - dydlat = NX.where(lats+delta<90.,(yn-y)/(lats+delta),(y-yn)/(lats+delta)) - # northangle is the angle between true north and the y axis. - northangle = NX.arctan2(dxdlat,dydlat) + northangle = NX.where(lats+delta<90, NX.arctan2(xn-x, yn-y), + NX.arctan2(x-xn, y-yn)) uout = uin*NX.cos(northangle) + vin*NX.sin(northangle) vout = vin*NX.cos(northangle) - uin*NX.sin(northangle) if returnxy: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |