Esempio n. 1
0
def test_latitudes():
    ell = Ellipsoid('GRS80')
    lat = np.arange(-90, 90, 0.1, dtype=float)

    sph_lat, _, sph_radius = geodetic_to_spherical(lat,
                                                   lon=0.0,
                                                   height=0.0,
                                                   ell=ell)

    np.testing.assert_array_almost_equal(ell.geocentric_latitude(lat),
                                         sph_lat,
                                         decimal=8)

    reduced_latitude = np.degrees(
        np.arctan(np.tan(np.radians(sph_lat)) / (1 - ell.f)))

    np.testing.assert_array_almost_equal(ell.reduced_latitude(lat),
                                         reduced_latitude,
                                         decimal=8)

    # compare with series from
    # J. P. Snyder, Map projections - a working  manual, 1926, page 16
    latr = np.radians(lat)
    s2lat = (ell.e2 / 3 + 31 * ell.e2**2 / 180 +
             59 * ell.e2**3 / 560) * np.sin(2 * latr)
    s4lat = (17 * ell.e2**2 / 360 + 61 * ell.e2**3 / 1260) * np.sin(4 * latr)
    s6lat = (383 * ell.e2**3 / 45360) * np.sin(6 * latr)

    authalic_latitude = np.degrees(latr - s2lat + s4lat - s6lat)

    np.testing.assert_array_almost_equal(ell.authalic_latitude(lat),
                                         authalic_latitude,
                                         decimal=6)
Esempio n. 2
0
def test_gravity():
    lat, lon, r = geodetic_to_spherical(latitude,
                                        longitude,
                                        0.0,
                                        ell=ell,
                                        degrees=True)
    gravity_model = model.gravity(lat, lon, r, degrees=True) * 1e5
    gravity_test = data.gravity_ell.values
    np.testing.assert_almost_equal(gravity_model, gravity_test)
Esempio n. 3
0
def test_height_anomaly_ell():
    lat, lon, r = geodetic_to_spherical(latitude,
                                        longitude,
                                        0.0,
                                        ell=ell,
                                        degrees=True)
    ha_model = model.height_anomaly_ell(lat, lon, r, degrees=True)
    ha_test = data.height_anomaly_ell.values
    np.testing.assert_almost_equal(ha_model, ha_test)
Esempio n. 4
0
def test_gravitational_potential():
    lat, lon, r = geodetic_to_spherical(latitude,
                                        longitude,
                                        0.0,
                                        ell=ell,
                                        degrees=True)
    pot_model = model.gravitational_potential.potential(lat,
                                                        lon,
                                                        r,
                                                        degrees=True)
    pot_test = data.potential_ell.values
    np.testing.assert_almost_equal(pot_model, pot_test, 6)
Esempio n. 5
0
def test_gradient():
    lat, lon, r = geodetic_to_spherical(latitude, longitude, radius0, ell=ell)
    # rad, lon, lat, total
    gradient_model = model._gravitational.gradient(lat, lon, r)
    r_derivative_model = model._gravitational.r_derivative(lat, lon, r)
    lon_derivative_model = model._gravitational.lon_derivative(lat, lon, r)
    lat_derivative_model = model._gravitational.lat_derivative(lat, lon, r)

    np.testing.assert_almost_equal(gradient_model[0].value,
                                   r_derivative_model.value)
    np.testing.assert_almost_equal(gradient_model[1].value,
                                   lon_derivative_model.value)
    np.testing.assert_almost_equal(gradient_model[2].value,
                                   lat_derivative_model.value)
Esempio n. 6
0
def test_radiuses():
    ell = Ellipsoid('GRS80')
    # geodetic latitude
    lat = np.arange(-90, 90, 0.1, dtype=float)
    x, y, _ = geodetic_to_cartesian(lat, lon=0.0, height=0.0, ell=ell)
    np.testing.assert_array_almost_equal(ell.circle_radius(lat),
                                         np.sqrt(x**2 + y**2),
                                         decimal=5)

    sph_lat, _, sph_radius = geodetic_to_spherical(lat,
                                                   lon=0.0,
                                                   height=0.0,
                                                   ell=ell)

    np.testing.assert_array_almost_equal(ell.polar_equation(sph_lat),
                                         sph_radius,
                                         decimal=5)
Esempio n. 7
0
def test_surface_gravity_potential():
    ell = LevelEllipsoid('GRS80')
    # geodetic latitude
    lat = np.arange(-90, 90, 0.1, dtype=float)
    rlat, _, u = transform.geodetic_to_ellipsoidal(lat=lat,
                                                   lon=0.0, height=0.0, ell=ell)
    gravity_potential_0 = ell.gravity_potential(rlat, u)
    np.testing.assert_almost_equal(
        ell.surface_potential,
        gravity_potential_0, decimal=5)
    geoclat, _, radius = transform.geodetic_to_spherical(lat=lat,
                                                         lon=0.0, height=0.0, ell=ell)
    gravity_potential_sph_0 = ell.gravity_potential_sph(geoclat, radius)
    np.testing.assert_almost_equal(
        ell.surface_potential,
        gravity_potential_sph_0, decimal=5)
    np.testing.assert_almost_equal(
        gravity_potential_sph_0,
        gravity_potential_0, decimal=5)
Esempio n. 8
0
def test_height_anomaly_ell():
    lat, lon, r = geodetic_to_spherical(latitude, longitude, radius0, ell=ell)
    ha_model = model.height_anomaly_ell(lat, lon, r)
    ha_test = data.height_anomaly_ell.values
    np.testing.assert_almost_equal(ha_model.value, ha_test)
Esempio n. 9
0
def test_gravity_anomaly_sa():
    lat, lon, r = geodetic_to_spherical(latitude, longitude, radius0, ell=ell)
    gravity_anom_model = model.gravity_anomaly_sa(lat, lon, r).to('mGal')
    gravity_anom_test = data.gravity_anomaly_sa.values
    np.testing.assert_almost_equal(gravity_anom_model.value, gravity_anom_test)
Esempio n. 10
0
def test_gravitational_potential():
    lat, lon, r = geodetic_to_spherical(latitude, longitude, radius0, ell=ell)
    pot_model = model.gravitational_potential.potential(lat, lon, r)
    pot_test = data.potential_ell.values
    np.testing.assert_almost_equal(pot_model.value, pot_test, 6)