Пример #1
0
    def test_getSunSet(self):

        sun = Sun()

        # close to the winter solstice
        dt = date(2011, 12, 25)
        set = TimeAgent.quarter(sun.getSunSet(dt))
        # 22:00 UT
        self.assertEqual(datetime(2011, 12, 25, 22, 0), set) 
        # close to the summer solstice
        dt = date(2012, 6, 25)
        set = TimeAgent.quarter(sun.getSunSet(dt))
        # 00:45 UT ON THE NEXT DAY
        self.assertEqual(datetime(2012, 6, 26, 0, 45), set) 
Пример #2
0
    def test_getSunRise(self):

        sun = Sun()

        # close to the winter solstice
        dt = date(2011, 12, 25)
        rise = TimeAgent.quarter(sun.getSunRise(dt))
        # 12:30 UT
        self.assertEqual(datetime(2011, 12, 25, 12, 30), rise) 
        # close to the summer solstice
        dt = date(2012, 6, 25)
        rise = TimeAgent.quarter(sun.getSunRise(dt))
        # 10 UT
        self.assertEqual(datetime(2012, 6, 25, 10, 0), rise) 
Пример #3
0
    def test_getPTCSRiseSet(self):

        sun = Sun()

        dt = date(2011, 12, 25)
        rise, set = sun.getPTCSRiseSet(dt)
        self.assertEqual(datetime(2011, 12, 25, 12,30)
                       , TimeAgent.quarter(rise)) 
        self.assertEqual(datetime(2011, 12, 26,  1, 0)
                       , TimeAgent.quarter(set)) 
        # close to the summer solstice
        dt = date(2012, 6, 25)
        rise, set = sun.getPTCSRiseSet(dt)
        self.assertEqual(datetime(2012, 6, 25, 10, 0)
                       , TimeAgent.quarter(rise)) 
        self.assertEqual(datetime(2012, 6, 26, 3, 45)
                       , TimeAgent.quarter(set)) 
Пример #4
0
    def test_getRiseSet(self):

        sun = Sun()

        dt = date(2011, 12, 25)
        rise, set = sun.getRiseSet(dt)
        # 12:30 UT
        self.assertEqual(datetime(2011, 12, 25, 12,30)
                       , TimeAgent.quarter(rise)) 
        self.assertEqual(datetime(2011, 12, 25, 22, 0)
                       , TimeAgent.quarter(set)) 
        # close to the summer solstice
        dt = date(2012, 6, 25)
        rise, set = sun.getRiseSet(dt)
        # 00:45 UT ON THE NEXT DAY
        self.assertEqual(datetime(2012, 6, 25, 10, 0)
                       , TimeAgent.quarter(rise)) 
        self.assertEqual(datetime(2012, 6, 26, 0, 45)
                       , TimeAgent.quarter(set)) 

        # close to the summer solstice
        dts = (date(2012, 8, 1)
             , date(2012, 8, 2)
             , date(2012, 8, 3)
             , date(2013, 1, 29)
             , date(2013, 1, 30)
             )
        expected = ((datetime(2012, 8, 1, 10, 21, 31), datetime(2012, 8, 2, 0, 30, 12))
                  , (datetime(2012, 8, 2, 10, 22, 24), datetime(2012, 8, 3, 0, 29, 12))
                  , (datetime(2012, 8, 3, 10, 23, 16), datetime(2012, 8, 4, 0, 28, 10))
                  , (datetime(2013, 1, 29, 12, 26, 38), datetime(2013, 1, 29, 22, 38, 52))
                  , (datetime(2013, 1, 30, 12, 25, 49), datetime(2013, 1, 30, 22, 40, 0))
                    )
        for dt, (exp_rise, exp_set) in zip(dts, expected):
            rise, set = sun.getRiseSet(dt)
            self.assertEqual(exp_rise, rise) 
            self.assertEqual(exp_set, set) 
Пример #5
0
    def adjustForLstDrift(self, dts):
        """
        Assuming the first datetime is the target LST, adjust all 
        datetimes to be on the same LST (when they are on different dates.
        Finally, make sure adjusted dates fall on quarter boundaries.
        """

        if len(dts) == 0:
            return []

        # what's the target LST?
        start = dts[0]
        lst = sla.Absolute2RelativeLST(start)

        # make sure each datetime stays on this lst
        adjusted = [start]
        for dt in dts[1:]:
            newDt = sla.RelativeLST2AbsoluteTime(lst, dt)
            if newDt > dt:
                dt2 = dt - timedelta(days = 1)
                newDt = sla.RelativeLST2AbsoluteTime(lst, dt2)
            adjusted.append(TimeAgent.quarter(newDt))
            
        return adjusted