def _create_coord_list(self): from cis.data_io.Coord import Coord, CoordList from cis.data_io.ungridded_data import Metadata from cis.time_util import cis_standard_time_unit as cstu # These implement a lot of what is necessary, but aren't in CIS style from acp_utils import rolling_window from orbit import ATSR lat_data = [] lon_data = [] time_data = [] for fname in self.filenames: prod = ATSR(fname) lat_data.append(prod.lat) lon_data.append(prod.lon) time_data.append(prod.get_time()) # TODO: Properly define metadata lat_meta = Metadata(standard_name="latitude", units="degrees") lon_meta = Metadata(standard_name="longitude", units="degrees") time_meta = Metadata(standard_name="time", units=cstu) lat = Coord(concatenate(lat_data), lat_meta, "Y") lat.update_shape() lat.update_range() lon = Coord(concatenate(lon_data), lon_meta, "Y") lon.update_shape() lon.update_range() time = Coord(concatenate(time_data), time_meta, "T") time.update_shape() time.update_range() return CoordList([lat, lon, time])
def _create_coord_list(self): """Read file coordinates into a CIS object""" from cis.data_io.Coord import Coord, CoordList from reame.utils import ncdf_read try: lon_data, lon_metadata = ncdf_read(self.filenames, "longitude") lat_data, lat_metadata = ncdf_read(self.filenames, "latitude") except IndexError: lon_data, lon_metadata = ncdf_read(self.filenames, "lon") lat_data, lat_metadata = ncdf_read(self.filenames, "lat") lat = Coord(lat_data, lat_metadata, "Y") lat.update_shape() lat.update_range() lon = Coord(lon_data, lon_metadata, "X") lon.update_shape() lat.update_range() time_data, time_metadata = ncdf_read(self.filenames, "time") # Ensure the standard name is set time_metadata.standard_name = "time" time = Coord(time_data, time_metadata, "T") time.convert_TAI_time_to_std_time(ATSR_REFERENCE_TIME) time.update_shape() time.update_range() return CoordList([lat, lon, time])
def _create_bounded_coord_list(self): from cis.data_io.Coord import Coord, CoordList from cis.data_io.ungridded_data import Metadata from cis.time_util import cis_standard_time_unit as cstu # These implement a lot of what is necessary, but aren't in CIS style from acp_utils import rolling_window from orbit import MODIS lat_data = [] lat_bounds = [] lon_data = [] lon_bounds = [] time_data = [] time_bounds = [] for fname in self.filenames: prod = MODIS(fname) lat_data.append(prod.lat) lon_data.append(prod.lon) lat_c = rolling_window(prod.lat_corner, (2, 2)) lat_bounds.append(lat_c.reshape(prod.shape + (4, ))) lon_c = rolling_window(prod.lon_corner, (2, 2)) lon_bounds.append(lon_c.reshape(prod.shape + (4, ))) t = prod.get_time() time_data.append(t) b = np.stack([t, np.roll(t, -1)], axis=2) b[-1, :, 1] = 2 * t[-1, :] - t[-2, :] time_bounds.append(b) # TODO: Properly define metadata lat_meta = Metadata(standard_name="latitude", units="degrees") lon_meta = Metadata(standard_name="longitude", units="degrees") time_meta = Metadata(standard_name="time", units=cstu) lat = Coord(concatenate(lat_data), lat_meta, "Y") lat.update_shape() lat.update_range() lat.bounds = concatenate(lat_bounds).reshape(lat.shape + (4, )) lat.bounds[..., 2:4] = lat.bounds[..., [3, 2]] lon = Coord(concatenate(lon_data), lon_meta, "Y") lon.update_shape() lon.update_range() lon.bounds = concatenate(lon_bounds).reshape(lon.shape + (4, )) lon.bounds[..., 2:4] = lon.bounds[..., [3, 2]] time = Coord(concatenate(time_data), time_meta, "T") time.update_shape() time.update_range() time.bounds = concatenate(time_bounds) return CoordList([lat, lon, time])
def _create_coord_list(self): """Read data coordinates into CIS object""" from cis.data_io.Coord import Coord, CoordList from reame.utils import hdf_read lon_data, lon_metadata = hdf_read(self.filenames, "Longitude") lon = Coord(lon_data, lon_metadata, "X") lon.update_shape() lon.update_range() lat_data, lat_metadata = hdf_read(self.filenames, "Latitude") lat = Coord(lat_data, lat_metadata, "Y") lat.update_shape() lat.update_range() time_data, time_metadata = hdf_read(self.filenames, "Scan_Start_Time") # Ensure the standard name is set time_metadata.standard_name = "time" time = Coord(time_data, time_metadata, "T") time.convert_TAI_time_to_std_time(MODIS_REFERENCE_TIME) time.update_shape() time.update_range() return CoordList([lat, lon, time])