Esempio n. 1
0
    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'],
        )
Esempio n. 2
0
    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))
Esempio n. 3
0
    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)
Esempio n. 4
0
 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)
Esempio n. 5
0
 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)
Esempio n. 6
0
 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'])
Esempio n. 7
0
 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)