Ejemplo n.º 1
0
 def testAziBaziC(self):
     ntest = 10000
     lats1, lons1, lats2, lons2 = self.get_critical_random_locations(ntest)
     for i in range(ntest):
         orthodrome.azibazi(
             lats1[i], lons1[i], lats2[i], lons2[i],
             implementation='c')
Ejemplo n.º 2
0
    def testAziBaziArrayPythonC(self):
        ntest = 10000

        lats1, lons1, lats2, lons2 = self.get_critical_random_locations(ntest)

        azis_c, bazis_c = orthodrome.azibazi_numpy(
            lats1, lons1, lats2, lons2,
            implementation='c')

        azis_py, bazis_py = orthodrome.azibazi_numpy(
            lats1, lons1, lats2, lons2,
            implementation='python')

        for i in range(ntest):
            azi_py, bazi_py = orthodrome.azibazi(
                float(lats1[i]), float(lons1[i]),
                float(lats2[i]), float(lons2[i]),
                implementation='python')

            azi_c, bazi_c = orthodrome.azibazi(
                lats1[i], lons1[i], lats2[i], lons2[i],
                implementation='c')

            num.testing.assert_almost_equal(azi_py, azis_py[i])
            num.testing.assert_almost_equal(bazi_py, bazis_py[i])
            num.testing.assert_almost_equal(azi_c, azis_c[i])
            num.testing.assert_almost_equal(bazi_c, bazis_c[i])

        num.testing.assert_almost_equal(azis_py, azis_c)
        num.testing.assert_almost_equal(bazis_py, bazis_c)
    def testAziBaziArrayPythonC(self):
        ntest = 10000

        lats1, lons1, lats2, lons2 = self.get_critical_random_locations(ntest)

        azis_c, bazis_c = orthodrome.azibazi_numpy(
            lats1, lons1, lats2, lons2,
            implementation='c')

        azis_py, bazis_py = orthodrome.azibazi_numpy(
            lats1, lons1, lats2, lons2,
            implementation='python')

        for i in range(ntest):
            azi_py, bazi_py = orthodrome.azibazi(
                float(lats1[i]), float(lons1[i]),
                float(lats2[i]), float(lons2[i]),
                implementation='python')

            azi_c, bazi_c = orthodrome.azibazi(
                lats1[i], lons1[i], lats2[i], lons2[i],
                implementation='c')

            num.testing.assert_almost_equal(azi_py, azis_py[i])
            num.testing.assert_almost_equal(bazi_py, bazis_py[i])
            num.testing.assert_almost_equal(azi_c, azis_c[i])
            num.testing.assert_almost_equal(bazi_c, bazis_c[i])

        num.testing.assert_almost_equal(azis_py, azis_c)
        num.testing.assert_almost_equal(bazis_py, bazis_c)
 def testAziBaziC(self):
     ntest = 10000
     lats1, lons1, lats2, lons2 = self.get_critical_random_locations(ntest)
     for i in range(ntest):
         orthodrome.azibazi(
             lats1[i], lons1[i], lats2[i], lons2[i],
             implementation='c')
Ejemplo n.º 5
0
 def testAziBaziPython(self):
     ntest = 10000
     lats1, lons1, lats2, lons2 = self.get_critical_random_locations(ntest)
     for i in range(ntest):
         orthodrome.azibazi(
             float(lats1[i]), float(lons1[i]),
             float(lats2[i]), float(lons2[i]),
             implementation='python')
 def testAziBaziPython(self):
     ntest = 10000
     lats1, lons1, lats2, lons2 = self.get_critical_random_locations(ntest)
     for i in range(ntest):
         orthodrome.azibazi(
             float(lats1[i]), float(lons1[i]),
             float(lats2[i]), float(lons2[i]),
             implementation='python')
Ejemplo n.º 7
0
    def testAziBaziPythonC(self):
        ntest = 100
        lats1, lons1, lats2, lons2 = self.get_critical_random_locations(ntest)

        for i in range(ntest):
            azibazi_py = orthodrome.azibazi(float(lats1[i]),
                                            float(lons1[i]),
                                            float(lats2[i]),
                                            float(lons2[i]),
                                            implementation='python')
            azibazi_c = orthodrome.azibazi(lats1[i],
                                           lons1[i],
                                           lats2[i],
                                           lons2[i],
                                           implementation='c')

            assert_ae(azibazi_py, azibazi_c)
Ejemplo n.º 8
0
    def testLocationObjects(self):
        class Dummy(object):
            def __init__(self, lat, lon, depth):
                self.lat = lat
                self.lon = lon
                self.depth = depth

        a0 = Location(lat=10., lon=12., depth=1100.)
        a1 = guts.clone(a0)
        a1.set_origin(lat=9., lon=11)

        b0 = Location(lat=11., lon=13., depth=2100.)
        b1 = guts.clone(b0)
        b1.set_origin(lat=9., lon=11)
        b2 = Dummy(b0.lat, b0.lon, b0.depth)

        dist_ab = orthodrome.distance_accurate50m(a0.lat, a0.lon, b0.lat,
                                                  b0.lon)

        azi_ab, bazi_ab = orthodrome.azibazi(a0.lat, a0.lon, b0.lat, b0.lon)

        def g_to_e(*args):
            return num.array(orthodrome.geodetic_to_ecef(*args))

        a_vec = g_to_e(a0.lat, a0.lon, -a0.depth)
        b_vec = g_to_e(b0.lat, b0.lon, -b0.depth)

        dist_3d_compare = math.sqrt(num.sum((a_vec - b_vec)**2))

        north_shift_compare, east_shift_compare = orthodrome.latlon_to_ne(
            a0.lat, a0.lon, b0.lat, b0.lon)

        for a in [a0, a1]:
            for b in [b0, b1, b2]:
                dist = a.distance_to(b)
                assert_allclose(dist, dist_ab)

                dist_3d = a.distance_3d_to(b)
                assert_allclose(dist_3d, dist_3d_compare, rtol=0.001)

                azi, bazi = a.azibazi_to(b)
                assert_allclose(azi % 360., azi_ab % 360., rtol=1e-2)
                assert_allclose(bazi % 360., bazi_ab % 360., rtol=1e-2)

                north_shift, east_shift = a.offset_to(b)
                assert_allclose((north_shift, east_shift),
                                (north_shift_compare, east_shift_compare),
                                rtol=5e-3)

        for x, y in [(a0, a1), (b0, b1), (b0, b2), (b1, b2)]:
            dist = x.distance_to(y)
            assert_allclose(dist, 0.0)
Ejemplo n.º 9
0
from pyrocko import orthodrome, model

e = model.Event(lat=37.58, lon=57.11)
s = model.Event(lat=34.884, lon=57.159)
dist = orthodrome.distance_accurate50m(e, s)
print(dist/1000)

# Azimuth and Back Azimuth
az = orthodrome.azibazi(e, s)
print (az)
from pyrocko import orthodrome

# For a single point
orthodrome.azibazi(49.1, 20.5, 45.4, 22.3)

# >>> (161.05973376168285, -17.617746351508035)  # Azimuth and backazimuth

import numpy as num  # noqa

ncoords = 1000
# First set of coordinates
lats_a = num.random.uniform(-180., 180., ncoords)
lons_a = num.random.uniform(-90., 90., ncoords)

# Second set of coordinates
lats_b = num.random.uniform(-180., 180., ncoords)
lons_b = num.random.uniform(-90., 90., ncoords)

orthodrome.azibazi_numpy(lats_a, lons_a, lats_b, lons_b)