예제 #1
0
    def test_eq(self):
        arc1 = Arc(SCoordinate(0, 0),
                   SCoordinate(np.deg2rad(10), np.deg2rad(10)))
        arc2 = Arc(SCoordinate(0, np.deg2rad(10)),
                   SCoordinate(np.deg2rad(10), 0))

        assert not arc1.__eq__(arc2)
        assert arc1 == arc1
예제 #2
0
    def test_ne(self):
        arc1 = Arc(SCoordinate(0, 0),
                   SCoordinate(np.deg2rad(10), np.deg2rad(10)))
        arc2 = Arc(SCoordinate(0, np.deg2rad(10)),
                   SCoordinate(np.deg2rad(10), 0))

        assert arc1 != arc2
        assert not arc1.__ne__(arc1)
예제 #3
0
    def test_ne(self):
        arc1 = Arc(SCoordinate(0, 0),
                   SCoordinate(np.deg2rad(10), np.deg2rad(10)))
        arc2 = Arc(SCoordinate(0, np.deg2rad(10)),
                   SCoordinate(np.deg2rad(10), 0))

        self.assertTrue(arc1 != arc2)

        self.assertFalse(arc1 != arc1)
예제 #4
0
 def test_intersecting_arcs_crossing_antimeridian(self):
     import copy
     arc1 = Arc(SCoordinate(*np.deg2rad((-180.0, -90.0))),
                SCoordinate(*np.deg2rad((-180.0, 90.0))))
     arc2 = Arc(SCoordinate(*np.deg2rad((-171.03, -76.75))),
                SCoordinate(*np.deg2rad((170.34, -71.36))))
     arc1_orig = copy.deepcopy(arc1)
     arc2_orig = copy.deepcopy(arc2)
     point = arc1.intersection(arc2)
     # Assert original arcs are unaffected
     assert arc1_orig.end.lon == arc1.end.lon
     assert arc2_orig.end.lon == arc2.end.lon
     # Assert intersection result
     assert point == SCoordinate(*np.deg2rad((-180.0, -74.7884716)))
예제 #5
0
 def test_disjoint_arcs_crossing_antimeridian(self):
     import copy
     arc1 = Arc(SCoordinate(*np.deg2rad((143.76, 0))),
                SCoordinate(*np.deg2rad((143.95, 7.33))))
     arc2 = Arc(SCoordinate(*np.deg2rad((170.34, 71.36))),
                SCoordinate(*np.deg2rad((-171.03, 76.75))))
     arc1_orig = copy.deepcopy(arc1)
     arc2_orig = copy.deepcopy(arc2)
     point = arc1.intersection(arc2)
     # Assert original arcs are unaffected
     assert arc1_orig.end.lon == arc1.end.lon
     assert arc2_orig.end.lon == arc2.end.lon
     # Assert disjoint arcs returns None
     assert isinstance(point, type(None))
예제 #6
0
 def test_repr(self):
     """Check the representation."""
     d = SCoordinate(0, 0)
     self.assertEqual(repr(d), "(0.0, 0.0)")
예제 #7
0
 def test_hdistance(self):
     """Test Haversine formula."""
     d = SCoordinate(0, 0).hdistance(SCoordinate(1, 1))
     self.assertTrue(np.allclose(d, 1.2745557823062943))
예제 #8
0
 def test_distance(self):
     """Test Vincenty formula."""
     d = SCoordinate(0, 0).distance(SCoordinate(1, 1))
     self.assertEqual(d, 1.2745557823062943)
예제 #9
0
    def test_angle(self):
        arc1 = Arc(
            SCoordinate(np.deg2rad(157.5), np.deg2rad(89.234600944314138)),
            SCoordinate(np.deg2rad(90), np.deg2rad(89)))
        arc2 = Arc(
            SCoordinate(np.deg2rad(157.5), np.deg2rad(89.234600944314138)),
            SCoordinate(np.deg2rad(135), np.deg2rad(89)))

        self.assertAlmostEqual(np.rad2deg(arc1.angle(arc2)),
                               -44.996385007218926)

        arc1 = Arc(
            SCoordinate(np.deg2rad(112.5), np.deg2rad(89.234600944314138)),
            SCoordinate(np.deg2rad(90), np.deg2rad(89)))
        arc2 = Arc(
            SCoordinate(np.deg2rad(112.5), np.deg2rad(89.234600944314138)),
            SCoordinate(np.deg2rad(45), np.deg2rad(89)))

        self.assertAlmostEqual(np.rad2deg(arc1.angle(arc2)),
                               44.996385007218883)

        arc1 = Arc(SCoordinate(0, 0), SCoordinate(1, 0))
        self.assertAlmostEqual(arc1.angle(arc1), 0)

        arc2 = Arc(SCoordinate(1, 0), SCoordinate(0, 0))
        self.assertAlmostEqual(arc1.angle(arc2), 0)

        arc2 = Arc(SCoordinate(0, 0), SCoordinate(-1, 0))
        self.assertAlmostEqual(arc1.angle(arc2), np.pi)

        arc2 = Arc(SCoordinate(2, 0), SCoordinate(1, 0))
        self.assertAlmostEqual(arc1.angle(arc2), np.pi)

        arc2 = Arc(SCoordinate(2, 0), SCoordinate(3, 0))
        self.assertRaises(ValueError, arc1.angle, arc2)
예제 #10
0
    def test_intersection(self):
        arc1 = Arc(SCoordinate(0, 0),
                   SCoordinate(np.deg2rad(10), np.deg2rad(10)))
        arc2 = Arc(SCoordinate(0, np.deg2rad(10)),
                   SCoordinate(np.deg2rad(10), 0))
        lon, lat = arc1.intersection(arc2)

        self.assertTrue(np.allclose(np.rad2deg(lon), 5))
        self.assertEqual(
            np.rad2deg(lat).round(7), round(5.0575148968282093, 7))

        arc1 = Arc(SCoordinate(0, 0),
                   SCoordinate(np.deg2rad(10), np.deg2rad(10)))

        self.assertTrue(arc1.intersection(arc1) is None)

        arc1 = Arc(
            SCoordinate(np.deg2rad(24.341215776575297),
                        np.deg2rad(44.987819588259327)),
            SCoordinate(np.deg2rad(18.842727517611817),
                        np.deg2rad(46.512483610284178)))
        arc2 = Arc(
            SCoordinate(np.deg2rad(20.165961750361905),
                        np.deg2rad(46.177305385810541)),
            SCoordinate(np.deg2rad(20.253297585831707),
                        np.deg2rad(50.935830837274324)))
        inter = SCoordinate(np.deg2rad(20.165957021925202),
                            np.deg2rad(46.177022633103398))
        self.assertEqual(arc1.intersection(arc2), inter)

        arc1 = Arc(
            SCoordinate(np.deg2rad(-2.4982818108326734),
                        np.deg2rad(48.596644847869655)),
            SCoordinate(np.deg2rad(-2.9571441235622835),
                        np.deg2rad(49.165688435261394)))
        arc2 = Arc(
            SCoordinate(np.deg2rad(-3.4976667413531688),
                        np.deg2rad(48.562704872921373)),
            SCoordinate(np.deg2rad(-5.893976312685715),
                        np.deg2rad(48.445795283217116)))

        self.assertTrue(arc1.intersection(arc2) is None)
예제 #11
0
 def test_str(self):
     arc1 = Arc(SCoordinate(0, 0),
                SCoordinate(np.deg2rad(10), np.deg2rad(10)))
     self.assertEqual(str(arc1), str(arc1.start) + " -> " + str(arc1.end))
     self.assertEqual(repr(arc1), str(arc1.start) + " -> " + str(arc1.end))
예제 #12
0
 def test_to_spherical(self):
     """Test converting to spherical coordinates."""
     d = CCoordinate((1., 0., 0.))
     c = SCoordinate(0, 0)
     self.assertEqual(d.to_spherical(), c)
예제 #13
0
 def test_distance(self):
     """Test Vincenty formula."""
     d = SCoordinate(0, 0).distance(SCoordinate(1, 1))
     np.testing.assert_almost_equal(d, 1.2745557823062943)
예제 #14
0
 def test_equality_of_infinites(self):
     """Test that infinite coordinates are equal."""
     coord1 = SCoordinate(np.inf, np.inf)
     coord2 = SCoordinate(np.inf, np.inf)
     assert coord1 == coord2
예제 #15
0
 def test_equality_at_antimeridian(self):
     """Test equality of points at the antimeridian."""
     point_start = SCoordinate(-np.pi, 0)
     point_end = SCoordinate(np.pi, 0)
     assert point_start == point_end
예제 #16
0
 def test_str(self):
     """Check the string representation
     """
     d = SCoordinate(0, 0)
     self.assertEqual(str(d), "(0.0, 0.0)")