Source code for coloc_sat.hy2_meta
from .tools import open_nc, correct_dataset
import os
import numpy as np
def extract_wind_speed(smos_dataset):
return smos_dataset.where((np.isfinite(smos_dataset.wind_dir)), drop=True)
[docs]class GetHy2Meta:
def __init__(self, product_path, product_generation=False):
self.product_path = product_path
self.product_name = os.path.basename(self.product_path)
self.product_generation = product_generation
self._time_name = 'time'
self._longitude_name = 'lon'
self._latitude_name = 'lat'
self._dataset = open_nc(product_path).load()
self.dataset = correct_dataset(self.dataset, self.longitude_name)
@property
def start_date(self):
"""
Start acquisition time
Returns
-------
numpy.datetime64
Start time
"""
return min(np.unique(self.dataset[self.time_name]))
@property
def stop_date(self):
"""
Stop acquisition time
Returns
-------
numpy.datetime64
Stop time
"""
return max(np.unique(self.dataset[self.time_name]))
@property
def longitude_name(self):
"""
Get the name of the longitude variable in the dataset
Returns
-------
str
longitude name
"""
return self._longitude_name
@property
def latitude_name(self):
"""
Get the name of the latitude variable in the dataset
Returns
-------
str
latitude name
"""
return self._latitude_name
@property
def time_name(self):
"""
Get the name of the time variable in the dataset
Returns
-------
str
time name
"""
return self._time_name
@property
def mission_name(self):
"""
Get the mission name (ex : RADARSAT-2, RCM, SENTINEL-1, SMOS, SMAP,...)
Returns
-------
str
Mission name
"""
return 'HY2'
@property
def acquisition_type(self):
"""
Gives the acquisition type (swath, truncated_swath,daily_regular_grid, model_regular_grid)
Returns
-------
str
acquisition type
"""
return 'swath'
@property
def dataset(self):
"""
Getter for the acquisition dataset
Returns
-------
xarray.Dataset
Acquisition dataset
"""
return self._dataset
@dataset.setter
def dataset(self, value):
"""
Setter of attribute `self.dataset`
Parameters
----------
value: xarray.Dataset
new Dataset
"""
self._dataset = value
@property
def orbit_segment_name(self):
"""
Gives the name of the variable for orbit segmentation in dataset (Ascending / Descending). If value is None,
so the orbit hasn't orbited segmentation
Returns
-------
str | None
Orbit segmentation variable name in the dataset. None if there isn't one.
"""
return None
@property
def has_orbited_segmentation(self):
"""
True if there is orbit segmentation in the dataset
Returns
-------
bool
Presence or not of an orbit segmentation
"""
if self.orbit_segment_name is not None:
return True
else:
return False
@property
def mission_name(self):
"""
Name of the mission (or model)
Returns
-------
str
Mission name (ex: SMOS, S1, RS2, RCM, SMAP, HY2, ERA5)
"""
return "HY2"
@longitude_name.setter
def longitude_name(self, value):
self._longitude_name = value
@latitude_name.setter
def latitude_name(self, value):
self._latitude_name = value