@@ -47,7 +47,7 @@ def haversine_distance_vector(lon1, lat1, lon2, lat2):
4747    lat1  =  np .asfortranarray (lat1 .copy ())
4848    lon2  =  np .asfortranarray (lon2 .copy ())
4949    lat2  =  np .asfortranarray (lat2 .copy ())
50-     dist  =  np .asfortranarray (np .empty_like (lon1 ))
50+     dist  =  np .asfortranarray (np .empty (lon1 . shape ))
5151    hav .haversine_distvec (lon1 , lat1 , lon2 , lat2 , dist )
5252    return  dist 
5353
@@ -57,28 +57,41 @@ def newPosition(lonin, latin, angle, distance):
5757    Given the inputs (base lon, base lat, angle, distance) return 
5858     the lon, lat of the new position... 
5959    ''' 
60-     lonin  =  np .asfortranarray (np .copy (lonin ))
61-     latin  =  np .asfortranarray (np .copy (latin ))
62-     angle  =  np .asfortranarray (np .copy (angle ))
63-     distance  =  np .asfortranarray (np .copy (distance ))
64-     lon  =  np .asfortranarray (np .empty_like (lonin ))
65-     lat  =  np .asfortranarray (np .empty_like (lonin ))
66-     hav .waypoint_vec (lonin ,  latin , angle , distance , lon ,  lat )
67-     return  lon , lat 
60+     lon  =  np .asfortranarray (lonin .copy ())
61+     lat  =  np .asfortranarray (latin .copy ())
62+     angle  =  np .asfortranarray (angle .copy ())
63+     distance  =  np .asfortranarray (distance .copy ())
64+     lonout  =  np .asfortranarray (np .empty (lonin . shape ))
65+     latout  =  np .asfortranarray (np .empty (lonin . shape ))
66+     hav .waypoint_vec (lon ,  lat , angle , distance , lonout ,  latout )
67+     return  lon [ 0 ] , lat [ 0 ] 
6868
6969
70- def  nearest (lon_pt , lat_pt , lon2d , lat2d ):
70+ #def nearest(lon_pt, lat_pt, lon2d, lat2d): 
71+     #""" 
72+     #Return the nearest i, j point to a given lon, lat point 
73+     #in a lat/lon grid 
74+     #""" 
75+     #lon2d, lat2d = lon2d.copy(), lat2d.copy() 
76+     #lon2d -= lon_pt 
77+     #lat2d -= lat_pt 
78+     #d = np.hypot(lon2d, lat2d) 
79+     #j, i = np.unravel_index(d.argmin(), d.shape) 
80+     #return i, j 
81+     
82+ 
83+ def  nearest (lon_pt , lat_pt , lon2d , lat2d , theshape ):
7184    """ 
7285    Return the nearest i, j point to a given lon, lat point 
7386    in a lat/lon grid 
7487    """ 
75-     lon2d ,  lat2d   =   lon2d . copy ( ), lat2d . copy () 
76-     lon2d   -=   lon_pt 
77-     lat2d   -=   lat_pt 
78-     d  =  np .hypot ( lon2d ,  lat2d )
79-     j , i  =  np .unravel_index (d .argmin (), d . shape )
88+     #print type(lon_pt ), lon_pt 
89+     lon_pt   +=   - lon2d 
90+     lat_pt   +=   - lat2d 
91+     d  =  np .sqrt ( lon_pt ** 2   +   lat_pt ** 2 )
92+     j , i  =  np .unravel_index (d .argmin (), theshape )
8093    return  i , j 
81-      
94+ 
8295
8396def  uniform_resample (x , y , num_fac = 2 , kind = 'linear' ):
8497    ''' 
@@ -1111,17 +1124,18 @@ def get_angle(deg, ang):
11111124            return  deg  -  np .rad2deg (ang )
11121125
11131126        grdangle  =  grd .angle ()[j ,i ]
1114-         
1127+         #print type(centlon), type(centlat) 
11151128        a_lon , a_lat  =  newPosition (centlon , centlat , get_angle (0 , grdangle ), radius )
11161129        b_lon , b_lat  =  newPosition (centlon , centlat , get_angle (90 , grdangle ), radius )
11171130        c_lon , c_lat  =  newPosition (centlon , centlat , get_angle (180 , grdangle ), radius )
11181131        d_lon , d_lat  =  newPosition (centlon , centlat , get_angle (270 , grdangle ), radius )
11191132
11201133        # Get i,j of bounding box around eddy 
1121-         a_i , a_j  =  nearest (a_lon , a_lat , grd .lon (), grd .lat ())
1122-         b_i , b_j  =  nearest (b_lon , b_lat , grd .lon (), grd .lat ())
1123-         c_i , c_j  =  nearest (c_lon , c_lat , grd .lon (), grd .lat ())
1124-         d_i , d_j  =  nearest (d_lon , d_lat , grd .lon (), grd .lat ())
1134+         #print grd.lon().shape, grd.lat().shape, grd.shape 
1135+         a_i , a_j  =  nearest (a_lon , a_lat , grd .lon (), grd .lat (), grd .shape )
1136+         b_i , b_j  =  nearest (b_lon , b_lat , grd .lon (), grd .lat (), grd .shape )
1137+         c_i , c_j  =  nearest (c_lon , c_lat , grd .lon (), grd .lat (), grd .shape )
1138+         d_i , d_j  =  nearest (d_lon , d_lat , grd .lon (), grd .lat (), grd .shape )
11251139
11261140        self .imin  =  np .maximum (np .min ([a_i , b_i , c_i , d_i ]) -  5 , 0 ) # Must not go 
11271141        self .jmin  =  np .maximum (np .min ([a_j , b_j , c_j , d_j ]) -  5 , 0 ) # below zero 
0 commit comments