Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit eaa3711

Browse files
committed
Fix vector rotation; southern hemisphere vectors were reversed
svn path=/trunk/toolkits/basemap/; revision=4002
1 parent 7ecd973 commit eaa3711

File tree

1 file changed

+7
-10
lines changed

1 file changed

+7
-10
lines changed

lib/matplotlib/toolkits/basemap/basemap.py

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
from proj import Proj
1313
import matplotlib.numerix as NX
1414
from matplotlib.numerix import ma
15-
from matplotlib.mlab import linspace
15+
from numpy import linspace
1616
from matplotlib.numerix.mlab import squeeze
1717
from matplotlib.cbook import popd, is_scalar
1818
from shapelib import ShapeFile
@@ -2175,12 +2175,11 @@ def transform_vector(self,uin,vin,lons,lats,nx,ny,returnxy=False,checkbounds=Fal
21752175
uin = interp(uin,lons,lats,lonsout,latsout,checkbounds=checkbounds,order=order,masked=masked)
21762176
vin = interp(vin,lons,lats,lonsout,latsout,checkbounds=checkbounds,order=order,masked=masked)
21772177
# rotate from geographic to map coordinates.
2178-
delta = 0.1 # incement in latitude used to estimate derivatives.
2178+
delta = 0.1 # increment in latitude used to estimate derivatives.
21792179
xn,yn = self(lonsout,NX.where(latsout+delta<90.,latsout+delta,latsout-delta))
2180-
dxdlat = NX.where(latsout+delta<90.,(xn-x)/(latsout+delta),(x-xn)/(latsout+delta))
2181-
dydlat = NX.where(latsout+delta<90.,(yn-y)/(latsout+delta),(y-yn)/(latsout+delta))
21822180
# northangle is the angle between true north and the y axis.
2183-
northangle = NX.arctan2(dxdlat,dydlat)
2181+
northangle = NX.where(lats+delta<90, NX.arctan2(xn-x, yn-y),
2182+
NX.arctan2(x-xn, y-yn))
21842183
uout = uin*NX.cos(northangle) + vin*NX.sin(northangle)
21852184
vout = vin*NX.cos(northangle) - uin*NX.sin(northangle)
21862185
if returnxy:
@@ -2211,12 +2210,10 @@ def rotate_vector(self,uin,vin,lons,lats,returnxy=False):
22112210
"""
22122211
x, y = self(lons, lats)
22132212
# rotate from geographic to map coordinates.
2214-
delta = 0.1 # incement in latitude used to estimate derivatives.
2213+
delta = 0.1 # increment in latitude used to estimate derivatives.
22152214
xn,yn = self(lons,NX.where(lats+delta<90.,lats+delta,lats-delta))
2216-
dxdlat = NX.where(lats+delta<90.,(xn-x)/(lats+delta),(x-xn)/(lats+delta))
2217-
dydlat = NX.where(lats+delta<90.,(yn-y)/(lats+delta),(y-yn)/(lats+delta))
2218-
# northangle is the angle between true north and the y axis.
2219-
northangle = NX.arctan2(dxdlat,dydlat)
2215+
northangle = NX.where(lats+delta<90, NX.arctan2(xn-x, yn-y),
2216+
NX.arctan2(x-xn, y-yn))
22202217
uout = uin*NX.cos(northangle) + vin*NX.sin(northangle)
22212218
vout = vin*NX.cos(northangle) - uin*NX.sin(northangle)
22222219
if returnxy:

0 commit comments

Comments
 (0)