def satpos(self): """Get actual satellite position in geodetic coordinates (WGS-84). Evaluate orbit polynomials at the start time of the scan. Returns: Longitude [deg east], Latitude [deg north] and Altitude [m] """ start_times_poly = get_cds_time( days=self.nc['orbit_polynomial_start_time_day'].values, msecs=self.nc['orbit_polynomial_start_time_msec'].values) end_times_poly = get_cds_time( days=self.nc['orbit_polynomial_end_time_day'].values, msecs=self.nc['orbit_polynomial_end_time_msec'].values) orbit_polynomials = { 'StartTime': np.array([start_times_poly]), 'EndTime': np.array([end_times_poly]), 'X': self.nc['orbit_polynomial_x'].values, 'Y': self.nc['orbit_polynomial_y'].values, 'Z': self.nc['orbit_polynomial_z'].values, } poly_finder = OrbitPolynomialFinder(orbit_polynomials) orbit_polynomial = poly_finder.get_orbit_polynomial(self.start_time) return get_satpos( orbit_polynomial=orbit_polynomial, time=self.start_time, semi_major_axis=self.mda['projection_parameters']['a'], semi_minor_axis=self.mda['projection_parameters']['b'], )
def test_get_cds_time(self): # Scalar self.assertEqual(get_cds_time(days=21246, msecs=12*3600*1000), np.datetime64('2016-03-03 12:00')) # Array days = np.array([21246, 21247, 21248]) msecs = np.array([12*3600*1000, 13*3600*1000 + 1, 14*3600*1000 + 2]) expected = np.array([np.datetime64('2016-03-03 12:00:00.000'), np.datetime64('2016-03-04 13:00:00.001'), np.datetime64('2016-03-05 14:00:00.002')]) self.assertTrue(np.all(get_cds_time(days=days, msecs=msecs) == expected))
def test_get_cds_time(self): """Test the get_cds_time function.""" # Scalar self.assertEqual(get_cds_time(days=21246, msecs=12*3600*1000), np.datetime64('2016-03-03 12:00')) # Array days = np.array([21246, 21247, 21248]) msecs = np.array([12*3600*1000, 13*3600*1000 + 1, 14*3600*1000 + 2]) expected = np.array([np.datetime64('2016-03-03 12:00:00.000'), np.datetime64('2016-03-04 13:00:00.001'), np.datetime64('2016-03-05 14:00:00.002')]) np.testing.assert_equal(get_cds_time(days=days, msecs=msecs), expected) days = 21246 msecs = 12*3600*1000 expected = np.datetime64('2016-03-03 12:00:00.000') np.testing.assert_equal(get_cds_time(days=days, msecs=msecs), expected)
def _add_scanline_acq_time(self, dataset, dataset_id): if dataset_id['name'] == 'HRV': # TODO: Enable once HRV reading has been fixed. return # days, msecs = self._get_acq_time_hrv() else: days, msecs = self._get_acq_time_visir(dataset_id) acq_time = get_cds_time(days.values, msecs.values) add_scanline_acq_time(dataset, acq_time)
def _add_scanline_acq_time(self, dataset, dataset_id): """Add scanline acquisition time to the given dataset.""" if dataset_id['name'] == 'HRV': tline = self._get_acq_time_hrv() else: tline = self._get_acq_time_visir(dataset_id) acq_time = get_cds_time(days=tline['Days'], msecs=tline['Milliseconds']) add_scanline_acq_time(dataset, acq_time)
def _get_timestamps(self): """Read scanline timestamps from the segment header.""" tline = self.mda['image_segment_line_quality']['line_mean_acquisition'] return get_cds_time(days=tline['days'], msecs=tline['milliseconds'])
def _add_scanline_acq_time(self, dataset): """Add scanline acquisition time to the given dataset.""" tline = self.mda['image_segment_line_quality']['line_mean_acquisition'] acq_time = get_cds_time(days=tline['days'], msecs=tline['milliseconds']) add_scanline_acq_time(dataset, acq_time)