Example #1
0
    def test_resample_4(self):
        """
        When resampling a line with a single point, the result
        is a one point line with the same point.
        """

        p1 = geo.Point(0.0, 0.0)

        self.assertEqual(geo.Line([p1]), geo.Line([p1]).resample(10.0))
Example #2
0
    def test_fewer_points(self):
        points = [geo.Point(i / 10., 0) for i in xrange(13)]

        line = geo.Line(points).resample_to_num_points(2)
        expected_points = [points[0], points[-1]]
        self.assertEqual(line.points, expected_points)

        line = geo.Line(points).resample_to_num_points(4)
        expected_points = points[::4]
        self.assertEqual(line.points, expected_points)
Example #3
0
    def test_resample_3(self):
        """
        Line made of 3 points (aligned in the same direction) equally spaced
        (spacing equal to 10 km). The resampled line contains 1 point
        (with spacing of 50 km) consistent with the number of points
        as predicted by n = round(20 / 50) + 1.
        """

        p1 = geo.Point(0.0, 0.0)
        p2 = geo.Point(0.0, 0.089932202939476777)
        p3 = geo.Point(0.0, 0.1798644058789465)

        self.assertEqual(1, len(geo.Line([p1, p2, p3]).resample(50.0)))

        self.assertEqual(geo.Line([p1]), geo.Line([p1, p2, p3]).resample(50.0))
Example #4
0
    def test_resample(self):
        p1 = geo.Point(0.0, 0.0, 0.0)
        p2 = geo.Point(0.0, 0.127183341091, 14.1421356237)
        p3 = geo.Point(0.134899286793, 0.262081472606, 35.3553390593)

        resampled = geo.Line([p1, p2, p3]).resample(10.0)

        p1 = geo.Point(0.0, 0.0, 0.0)
        p2 = geo.Point(0.0, 0.0635916705456, 7.07106781187)
        p3 = geo.Point(0.0, 0.127183341091, 14.1421356237)
        p4 = geo.Point(0.0449662998195, 0.172149398777, 21.2132034356)
        p5 = geo.Point(0.0899327195183, 0.217115442616, 28.2842712475)
        p6 = geo.Point(0.134899286793, 0.262081472606, 35.3553390593)

        expected = geo.Line([p1, p2, p3, p4, p5, p6])
        self.assertEqual(expected, resampled)
Example #5
0
 def test_single_segment(self):
     line = geo.Line([
         geo.Point(0., 0.00899322029302, 0.),
         geo.Point(0.03344582378948, -0.00936927115925, 4.24264069)
     ])
     line = line.resample_to_num_points(7)
     self.assertEqual(len(line), 7)
Example #6
0
 def test_cutting_corners(self):
     p1 = geo.Point(0., 0.)
     p2 = p1.point_at(1, 0, 1)
     p3 = p2.point_at(1, 0, 179)
     p4 = p3.point_at(5, 0, 90)
     line = geo.Line([p1, p2, p3, p4]).resample_to_num_points(3)
     self.assertEqual(len(line), 3)
Example #7
0
    def test_simple(self):
        points = [geo.Point(0, 0), geo.Point(0.1, 0.3)]

        line = geo.Line(points).resample_to_num_points(3)
        expected_points = [
            geo.Point(0, 0),
            geo.Point(0.05, 0.15),
            geo.Point(0.1, 0.3)
        ]
        self.assertEqual(line.points, expected_points)

        line = geo.Line(points).resample_to_num_points(4)
        expected_points = [
            geo.Point(0, 0),
            geo.Point(0.0333333, 0.1),
            geo.Point(0.0666666, 0.2),
            geo.Point(0.1, 0.3)
        ]
        self.assertEqual(line.points, expected_points)
Example #8
0
    def test_remove_adjacent_duplicates(self):
        p1 = geo.Point(0.0, 0.0, 0.0)
        p2 = geo.Point(0.0, 1.0, 0.0)
        p3 = geo.Point(0.0, 1.0, 0.0)
        p4 = geo.Point(0.0, 2.0, 0.0)
        p5 = geo.Point(0.0, 3.0, 0.0)
        p6 = geo.Point(0.0, 3.0, 0.0)

        expected = [p1, p2, p4, p5]
        self.assertEquals(expected, geo.Line([p1, p2, p3, p4, p5, p6]).points)
Example #9
0
 def test(self):
     line = geo.Line([geo.Point(0, 0), geo.Point(0, 1), geo.Point(1, 2)])
     length = line.get_length()
     expected_length = line.points[0].distance(line.points[1]) \
                       + line.points[1].distance(line.points[2])
     self.assertEqual(length, expected_length)
Example #10
0
 def test_hangup(self):
     p1 = geo.Point(0.00899322032502, 0., 0.)
     p2 = geo.Point(0.01798644058385, 0., 1.)
     p3 = geo.Point(0.02697966087241, 0., 2.)
     line = geo.Line([p1, p2, p3]).resample_to_num_points(3)
     self.assertEqual(line.points, [p1, p2, p3])
Example #11
0
 def test_line_of_one_point(self):
     line = geo.Line([geo.Point(0, 0)])
     self.assertRaises(AssertionError, line.resample_to_num_points, 10)