|
23 | 23 | radians,
|
24 | 24 | sin,
|
25 | 25 | unique,
|
26 |
| - where, |
27 | 26 | zeros,
|
28 | 27 | )
|
29 | 28 |
|
@@ -167,19 +166,36 @@ def filled_by_interpolation(self, mask):
|
167 | 166 | or var in self.array_variables
|
168 | 167 | ):
|
169 | 168 | continue
|
170 |
| - # to normalize longitude before interpolation |
171 |
| - if var == "lon": |
172 |
| - lon = self.lon |
173 |
| - first = where(self.n == 0)[0] |
174 |
| - nb_obs = empty(first.shape, dtype="u4") |
175 |
| - nb_obs[:-1] = first[1:] - first[:-1] |
176 |
| - nb_obs[-1] = lon.shape[0] - first[-1] |
177 |
| - lon0 = (lon[first] - 180).repeat(nb_obs) |
178 |
| - self.lon[:] = (lon - lon0) % 360 + lon0 |
179 | 169 | self.obs[var][mask] = interp(
|
180 | 170 | index[mask], index[~mask], self.obs[var][~mask]
|
181 | 171 | )
|
182 | 172 |
|
| 173 | + def normalize_longitude(self): |
| 174 | + """Normalize all longitude |
| 175 | +
|
| 176 | + Normalize longitude field and in the same range : |
| 177 | + - longitude_max |
| 178 | + - contour_lon_e (how to do if in raw) |
| 179 | + - contour_lon_s (how to do if in raw) |
| 180 | + """ |
| 181 | + lon0 = (self.lon[self.index_from_track] - 180).repeat(self.nb_obs_by_track) |
| 182 | + logger.debug("Normalize longitude") |
| 183 | + self.lon[:] = (self.lon - lon0) % 360 + lon0 |
| 184 | + if "lon_max" in self.obs.dtype.names: |
| 185 | + logger.debug("Normalize longitude_max") |
| 186 | + self.lon_max[:] = (self.lon_max - self.lon + 180) % 360 + self.lon - 180 |
| 187 | + if not self.raw_data: |
| 188 | + if "contour_lon_e" in self.obs.dtype.names: |
| 189 | + logger.debug("Normalize effective contour longitude") |
| 190 | + self.contour_lon_e[:] = ( |
| 191 | + (self.contour_lon_e.T - self.lon + 180) % 360 + self.lon - 180 |
| 192 | + ).T |
| 193 | + if "contour_lon_s" in self.obs.dtype.names: |
| 194 | + logger.debug("Normalize speed contour longitude") |
| 195 | + self.contour_lon_s[:] = ( |
| 196 | + (self.contour_lon_s.T - self.lon + 180) % 360 + self.lon - 180 |
| 197 | + ).T |
| 198 | + |
183 | 199 | def extract_longer_eddies(self, nb_min, nb_obs, compress_id=True):
|
184 | 200 | """Select the trajectories longer than nb_min"""
|
185 | 201 | mask = nb_obs >= nb_min
|
|
0 commit comments