Esempio n. 1
0
    def parse(self, text, reference_time=None):
        result = prog.match(text)
        if result is None:
            raise Exception("String is not valid" % text)

        self.name = result.group(1)
        self.receiver_name = result.group(2)

        self.timestamp = createTimestamp(result.group(3), reference_time)

        self.latitude = dmsToDeg(float(result.group(4)) / 100)
        if result.group(5) == "S":
            self.latitude = -self.latitude

        self.symboltable = result.group(6)

        self.longitude = dmsToDeg(float(result.group(7)) / 100)
        if result.group(8) == "W":
            self.longitude = -self.longitude

        self.symbolcode = result.group(9)

        if result.group(10) is not None:
            self.track = int(result.group(11))
            self.ground_speed = int(result.group(12))*kts2kmh
        else:
            self.track = 0
            self.ground_speed = 0

        self.altitude = int(result.group(13))*feet2m

        self.comment = result.group(14)
Esempio n. 2
0
    def test_basic(self):
        beacon = Beacon()

        beacon.parse("FLRDDA5BA>APRS,qAS,LFMX:/160829h4415.41N/00600.03E'342/049/A=005524 this is a comment")
        self.assertEqual(beacon.name, "FLRDDA5BA")
        self.assertEqual(beacon.receiver_name, "LFMX")
        self.assertEqual(beacon.timestamp.strftime("%H:%M:%S"), "16:08:29")
        self.assertAlmostEqual(beacon.latitude, dmsToDeg(44.1541), 5)
        self.assertEqual(beacon.symboltable, "/")
        self.assertAlmostEqual(beacon.longitude, dmsToDeg(6.0003), 5)
        self.assertEqual(beacon.symbolcode, "'")
        self.assertEqual(beacon.track, 342)
        self.assertEqual(beacon.ground_speed, 49 * kts2kmh)
        self.assertAlmostEqual(beacon.altitude * m2feet, 5524, 5)
        self.assertEqual(beacon.comment, "this is a comment")
Esempio n. 3
0
 def test_dmsToDeg(self):
     dms = 50.4830
     self.assertAlmostEqual(dmsToDeg(dms), 50.805, 5)