Beispiel #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) 
Beispiel #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) 
Beispiel #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)) 
Beispiel #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) 
Beispiel #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