@@ -47,7 +47,7 @@ def haversine_distance_vector(lon1, lat1, lon2, lat2):
47
47
lat1 = np .asfortranarray (lat1 .copy ())
48
48
lon2 = np .asfortranarray (lon2 .copy ())
49
49
lat2 = np .asfortranarray (lat2 .copy ())
50
- dist = np .asfortranarray (np .empty_like (lon1 ))
50
+ dist = np .asfortranarray (np .empty (lon1 . shape ))
51
51
hav .haversine_distvec (lon1 , lat1 , lon2 , lat2 , dist )
52
52
return dist
53
53
@@ -57,28 +57,41 @@ def newPosition(lonin, latin, angle, distance):
57
57
Given the inputs (base lon, base lat, angle, distance) return
58
58
the lon, lat of the new position...
59
59
'''
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 ]
68
68
69
69
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 ):
71
84
"""
72
85
Return the nearest i, j point to a given lon, lat point
73
86
in a lat/lon grid
74
87
"""
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 )
80
93
return i , j
81
-
94
+
82
95
83
96
def uniform_resample (x , y , num_fac = 2 , kind = 'linear' ):
84
97
'''
@@ -1111,17 +1124,18 @@ def get_angle(deg, ang):
1111
1124
return deg - np .rad2deg (ang )
1112
1125
1113
1126
grdangle = grd .angle ()[j ,i ]
1114
-
1127
+ #print type(centlon), type(centlat)
1115
1128
a_lon , a_lat = newPosition (centlon , centlat , get_angle (0 , grdangle ), radius )
1116
1129
b_lon , b_lat = newPosition (centlon , centlat , get_angle (90 , grdangle ), radius )
1117
1130
c_lon , c_lat = newPosition (centlon , centlat , get_angle (180 , grdangle ), radius )
1118
1131
d_lon , d_lat = newPosition (centlon , centlat , get_angle (270 , grdangle ), radius )
1119
1132
1120
1133
# 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 )
1125
1139
1126
1140
self .imin = np .maximum (np .min ([a_i , b_i , c_i , d_i ]) - 5 , 0 ) # Must not go
1127
1141
self .jmin = np .maximum (np .min ([a_j , b_j , c_j , d_j ]) - 5 , 0 ) # below zero
0 commit comments