def test_distance(self): from editolido.geolite import rad_to_nm geopoint1 = GeoPoint((30, 13)) geopoint2 = GeoPoint((50, -77)) self.assertEqual( GeoPoint.distance(geopoint1, geopoint2), geopoint1.distance_to(geopoint2), msg='unit radians' ) self.assertEqual( GeoPoint.distance(geopoint1, geopoint2, converter=rad_to_nm), geopoint1.distance_to(geopoint2, converter=rad_to_nm) )
def test_get_nearest_points(self): from editolido.geoindex import GeoGridIndex c = GeoPoint((45, 10.5)) p = GeoPoint((45, 10)) # à 21,23NM grid = GeoGridIndex() grid.add_point(p) nearby = grid.get_nearest_points(c, 20, converter=nm_to_rad) self.assertEqual(list(nearby), []) nearby = grid.get_nearest_points(c, 23, converter=nm_to_rad) self.assertEqual(list(nearby), [(p, c.distance_to(p, converter=rad_to_nm))])
def test_get_nearest_points(self): c = GeoPoint((45, 10.5)) p = GeoPoint((45, 10)) # à 21,23NM grid = GeoGridIndex() grid.add_point([p.name, float(p.latitude), float(p.longitude)]) nearby = grid.get_nearest_points(c, 20, converter=nm_to_rad) if six.PY2: self.assertEqual(list(nearby), []) else: pass # TODO nearby = grid.get_nearest_points(c, 23, converter=nm_to_rad) if six.PY2: self.assertEqual(list(nearby), [(p, c.distance_to(p, converter=rad_to_nm))]) else: pass # TODO
def test_distance_to(self): import math from editolido.geolite import rad_to_nm, rad_to_km geopoint1 = GeoPoint((0, 90)) self.assertAlmostEqual( geopoint1.distance_to(geopoint1), 0, msg="distance to self") geopoint2 = GeoPoint((0, -90)) self.assertAlmostEqual( geopoint1.distance_to(geopoint2), math.pi, msg="points on equator") geopoint2 = GeoPoint((90, -90)) self.assertAlmostEqual( geopoint1.distance_to(geopoint2), math.pi / 2, msg="pole to equator") geopoint1 = GeoPoint((0, 179)) geopoint2 = GeoPoint((0, -179)) self.assertAlmostEqual( geopoint1.distance_to(geopoint2), 2 * math.pi / 180, msg="date line boundary") geopoint1 = GeoPoint((0, 1)) geopoint2 = GeoPoint((0, -1)) self.assertAlmostEqual( geopoint1.distance_to(geopoint2), 2 * math.pi / 180, msg="greenwich boundary") geopoint1 = GeoPoint((1, 0)) geopoint2 = GeoPoint((-1, 0)) self.assertAlmostEqual( geopoint1.distance_to(geopoint2), 2 * math.pi / 180, msg="equator boundary") geopoint1 = GeoPoint((30, 13)) geopoint2 = GeoPoint((50, -77)) self.assertAlmostEqual( geopoint1.distance_to(geopoint2, converter=rad_to_nm), 4051, places=0) self.assertAlmostEqual( geopoint1.distance_to(geopoint2, converter=rad_to_km), 7503, places=0)