예제 #1
0
    def test_iter_distance(self):

        # containes 3 points:
        filepath = Path(BASE_PATH, "fixture_files/garmin_connect_1.gpx")

        gpxpy_instance = parse_gpx_file(filepath)
        distances = []
        total_points = []
        total_distance = 0
        for section_distance, points in iter_distances(gpxpy_instance, distance=1):
            distances.append(section_distance)
            total_distance += section_distance
            for point in points:
                total_points.append((point.latitude, point.longitude))

        self.assertEqual(
            total_points,
            [
                (51.437889290973544, 6.617012657225132),
                (51.43786800093949, 6.617006119340658),
                (51.437847297638655, 6.6170057002455),
            ],
        )

        self.assert_equal_rounded(gpxpy_instance.length_3d(), 4.726553499192461)
        self.assert_equal_rounded(total_distance, 4.726553499192461)

        self.assertEqual(distances, [0, 2.413028183109784, 2.313525316082677])
예제 #2
0
    def test_parse_no_heart_rate_gpx(self):
        filepath = Path(BASE_PATH, "fixture_files/garmin_no_heart_rate.gpx")

        gpxpy_instance = parse_gpx_file(filepath)
        print(gpxpy_instance)
        self.assertEqual(
            repr(gpxpy_instance), "GPX(tracks=[GPXTrack(name='Foo Bar', segments=[GPXTrackSegment(points=[...])])])"
        )
예제 #3
0
    def test_parse_noi_track_gpx(self):
        filepath = Path(BASE_PATH, "fixture_files/no_track_points.gpx")

        gpxpy_instance = parse_gpx_file(filepath)
        print(gpxpy_instance)
        self.assertEqual(
            repr(gpxpy_instance),
            "GPX(waypoints=[GPXWaypoint(51.43788, 6.61701, name='Somewhere', description='foobar', symbol='Waypoint')])",
        )
예제 #4
0
    def test_iter_extension_data(self):
        gpx_median = GpxMedian(
            gpxpy_instance=parse_gpx_file(Path(BASE_PATH, "fixture_files/garmin_connect_1.gpx")), distance=1
        )

        hr_data = tuple(gpx_median.iter_extension_data(key="hr"))
        pprint(hr_data)
        self.assertEqual(hr_data, (([120], 120, 120, 120), ([125], 125, 125, 125), ([130], 130, 130, 130)))

        cad_data = tuple(gpx_median.iter_extension_data(key="cad"))
        pprint(cad_data)
        self.assertEqual(cad_data, (([70], 70, 70, 70), ([75], 75, 75, 75), ([80], 80, 80, 80)))
예제 #5
0
    def test_garmin_connect_1_gpx(self):
        # containes 3 points:
        filepath = Path(BASE_PATH, "fixture_files/garmin_connect_1.gpx")
        total_distance = 4.726553499192461

        gpxpy_instance = parse_gpx_file(filepath)

        gpx_median = GpxMedian(gpxpy_instance, distance=1)
        self.assertEqual(gpx_median.total_distance, total_distance)

        distances = tuple(gpx_median.iter_section_distance())
        self.assertEqual(reduce(operator.add, distances), total_distance)
        self.assertEqual(distances, (0, 2.413028183109784, 2.313525316082677))
예제 #6
0
    def test_parse_gpx(self):
        filepath = Path(BASE_PATH, "fixture_files/garmin_connect_1.gpx")

        gpxpy_instance = parse_gpx_file(filepath)

        first_point = gpxpy_instance.tracks[0].segments[0].points[0]
        self.assertEqual(first_point.latitude, 51.43788929097354412078857421875)
        self.assertEqual(first_point.longitude, 6.617012657225131988525390625)

        extensions = first_point.extensions
        self.assertEqual(1, len(extensions))
        self.assertEqual(extensions[0].getchildren()[0].text.strip(), "120")  # hr
        self.assertEqual(extensions[0].getchildren()[1].text.strip(), "70")  # cad
예제 #7
0
    def test_svg(self):
        filepath = Path(BASE_PATH, "fixture_files/parliament_buildings.gpx")

        gpxpy_instance = parse_gpx_file(filepath)
        svg_string = gpx2svg_string(gpxpy_instance, pretty=True)
        print("-" * 79)
        print(svg_string)
        print("-" * 79)

        svg_reference = Path(BASE_PATH, "fixture_files/parliament_buildings.svg")
        with svg_reference.open("r") as f:
            svg_reference_string = f.read()

        self.assertEqual(svg_string, svg_reference_string)
예제 #8
0
    def test_svg(self):
        filepath = Path(BASE_PATH, "fixture_files/parliament_buildings.gpx")

        gpxpy_instance = parse_gpx_file(filepath)
        svg_string = gpx2svg_string(gpxpy_instance, pretty=True)
        print("-" * 79)
        print(svg_string)
        print("-" * 79)

        svg_reference = Path(BASE_PATH, "fixture_files/parliament_buildings.svg")
        with svg_reference.open("r") as f:
            svg_reference_string = f.read()

        # Attributes in <svg ...> tag seems not to be ordered, so just compare
        # via parsed DOM-Tree ... but hey, it works ;)
        self.assertHTMLEqual(svg_string, svg_reference_string)
예제 #9
0
 def setUp(self):
     gpxpy_instance = parse_gpx_file(Path(BASE_PATH, "fixture_files/garmin_connect_1.gpx"))
     self.gi = GpxIdentifier(gpxpy_instance)