com.metsci.glimpse.util.geo.util
Class SpheroidUtil

java.lang.Object
  extended by com.metsci.glimpse.util.geo.util.SpheroidUtil

public final class SpheroidUtil
extends java.lang.Object

Author:
osborn

Constructor Summary
SpheroidUtil()
           
 
Method Summary
static double curvatureMeridional(double latRad, Datum d)
          Computes a spheroid's radius of curvature in the plane of the meridian at a given latitude.
static double curvatureNormal(double latRad, Datum d)
          Computes a spheroid's radius of curvature in the plane perpendicular to both the plane of the meridian and the tangent plane at a given latitude.
static PositionAzimuth forward(Datum datum, LatLonGeo from, double dist, double azimuth)
          Solution of the geodetic direct problem using T.
static double geocentricToGeodetic(double geocentricLatRad, double e2)
          Projects a geocentric latitude onto a geodetic latitude using a ray through the center of the sphere.
static double geodeticToGeocentric(double geodeticLatRad, double e2)
          Projects a geodetic latitude onto a geocentric latitude using a ray through the center of the spheroid.
static DistanceAzimuth inverse(Datum datum, LatLonGeo from, LatLonGeo to)
          Solution of the geodetic inverse problem using T.
static double meridionalDistance(Datum datum, double startLatRad, double endLatRad)
           
static LatLonGeo toLatLonGeo(double x, double y, double z, Datum d)
          Direct transformation from ECEF-r to ECEF-g coordinates.
static LatLonRect toLatLonRect(double northLatRad, double eastLonRad, double altitude, Datum d)
          Transformation from ECEF-g to ECEF-r coordinates.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

SpheroidUtil

public SpheroidUtil()
Method Detail

geodeticToGeocentric

public static double geodeticToGeocentric(double geodeticLatRad,
                                          double e2)
Projects a geodetic latitude onto a geocentric latitude using a ray through the center of the spheroid.

Parameters:
geodeticLatRad - geodetic latitude to project (in radians)
e2 - squared eccentricity of new latitude's underlying spheroid
Returns:
geocentric latitude corresponding to input geodetic latitude

geocentricToGeodetic

public static double geocentricToGeodetic(double geocentricLatRad,
                                          double e2)
Projects a geocentric latitude onto a geodetic latitude using a ray through the center of the sphere.

Parameters:
geocentricLatRad - geocentric latitude to project (in radians)
e2 - squared eccentricity of the input latitude's underlying spheroid
Returns:
geodetic latitude corresponding to input geocentric latitude

curvatureMeridional

public static double curvatureMeridional(double latRad,
                                         Datum d)
Computes a spheroid's radius of curvature in the plane of the meridian at a given latitude. Sign of latitude is irrelevant due to symmetry.


curvatureNormal

public static double curvatureNormal(double latRad,
                                     Datum d)
Computes a spheroid's radius of curvature in the plane perpendicular to both the plane of the meridian and the tangent plane at a given latitude. Sign of latitude is irrelevant due to symmetry.


toLatLonGeo

public static LatLonGeo toLatLonGeo(double x,
                                    double y,
                                    double z,
                                    Datum d)
Direct transformation from ECEF-r to ECEF-g coordinates. Exact, but point must be >~ 50km from center of earth on a WGS-84 ellipse.

H. Vermeille, Journal of Geodesy (2002) 76:451-454.


toLatLonRect

public static LatLonRect toLatLonRect(double northLatRad,
                                      double eastLonRad,
                                      double altitude,
                                      Datum d)
Transformation from ECEF-g to ECEF-r coordinates.


forward

public static PositionAzimuth forward(Datum datum,
                                      LatLonGeo from,
                                      double dist,
                                      double azimuth)

Solution of the geodetic direct problem using T. Vincenty modified Rainsford's method with Helmert's elliptical terms.

Code adapted from the Fortran implementation used in NOAA's "The Geodetic Toolkit."

NOTE: Effective in any azimuth and at any distance short of antipodal.

Parameters:
datum - underlying datum for geodesic
from - starting position
dist - distance to travel
azimuth - initial azimuth of geodesic
Returns:
final position and initial azimuth of geodesic back to starting position

inverse

public static DistanceAzimuth inverse(Datum datum,
                                      LatLonGeo from,
                                      LatLonGeo to)
Solution of the geodetic inverse problem using T. Vincenty modified Rainsford's method with Helmert's elliptical terms. Code adapted from the Fortran implementation used in NOAA's "The Geodetic Toolkit."

LIMITATION: Effective in any azimuth and at any distance short of antipodal.

LIMITATION: From/to stations must not be the geographic pole.

NOTE: Be aware of lift-off and be careful on the equator.

Parameters:
datum - datum on which to invert geodesic
from - start position
to - end position
Returns:
distance between points and initial geodesic azimuth from start to end

meridionalDistance

public static double meridionalDistance(Datum datum,
                                        double startLatRad,
                                        double endLatRad)


Copyright © 2012 Metron, Inc.. All Rights Reserved.