@@ -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