|
||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.nevec.rjm.Geod
class Geod
Solution of the inverse problem of geodesy for a oblate ellipsoid. The inverse problem of geodesy is solved given the parameters of an ellipsoid (equatorial radius and eccentricity), a common altitude of a surface above the ellipsoid, and pairs of geodetic coordinates (latitude, longitude) for a starting and a final point of a trajectory.
The first order differential equation of the smooth geodetic latitude as a function of longitude is solved by moving from one point to the next on a finite grid of equidistant sampling points on the longitude, using a predictor-only Newton approximation. The parameter which defines the initial direction in the local tangential plane is gathered by a shooting method (a starting guess is obtained from a spherical approximation) and a fixed number of iteration through the parameter space.
Nested Class Summary | |
---|---|
(package private) static interface |
Geod.AngleUnit
Three enumeration values to convert angular units on user input and output |
Field Summary | |
---|---|
(package private) double |
altit
Altitude of the inverse problem above the ellipsoid. |
(package private) double |
eccen
Eccentricity. |
static double |
GRS80_FLAT
The inverse flattening factor of the GRS80 model. |
static double |
GRS80_RHO_E
Equatorial radius of the GRS 1980 system, meters. |
static double |
IERS_TN21_FLAT
The inverse flattening factor of the IERS 1996 convention. |
static double |
IERS_TN21_RHO_E
Equatorial radius of the IERS 1996 convention, meters. |
static double |
IERS_TN32_FLAT
The inverse flattening factor of the IERS 2003 convention. |
static double |
IERS_TN32_RHO_E
Equatorial radius of the IERS 2003 convention, meters. |
(package private) double |
rho_equat
Equatorial radius in meters. |
(package private) static double |
WGS84_FLAT
The inverse flattening factor of the WGS84 model. |
static double |
WGS84_RHO_E
Equatorial radius of the WGS84, meters. |
Constructor Summary | |
---|---|
Geod()
Default Constructor. |
|
Geod(double rho,
double e,
double h)
Constructor. |
Method Summary | |
---|---|
(package private) static void |
adjLambdaEnd(double[] lambd)
Adjust longitude of the final point. |
double |
c3shoot(double[] phi,
double[] lambd,
int Nsampl,
int usampl,
int useRad,
int taylOrd)
Perform 4 iterations on adjusting the parameter c3. |
(package private) double |
c3Sphere(double[] phi,
double[] lambd)
Spherical approximation to parameter c3 |
double |
curvM(double tau)
Equatorial radius of curvature M [m] |
double |
curvN(double tau)
Curvature parameter N [m] |
double |
d2Edtau2(double tau)
Derivative d^2 E/ d tau^2 [m^2] |
double |
d2Mdtau2(double tau)
second Derivative d^2 M /d tau^2 [m] |
(package private) double |
d2sdlambda2(double tau,
double c3)
Second derivative d^2 s/d lambda^2 = (d/d lambda) (E/c3). |
(package private) double |
d2taudlambda2(double tau,
double c3)
Second derivative d^2 tau/d lambda^2. |
(package private) double |
d2Tdtau2(double tau,
double c3)
Second derivative of T with respect to tau. |
(package private) double |
d3sdlambda3(double tau,
double c3)
Third derivative d^3 s /d lambda ^3. |
(package private) double |
d3taudlambda3(double tau,
double c3)
Third derivative d^3 tau/d lambda^3. |
double |
dEdtau(double tau)
Derivative d E/ d tau [m^2] |
(package private) double |
discrT(double tau,
double c3)
Discriminant under the square root of d tau / ds. |
double |
dMdtau(double tau)
Derivative d M /d tau [m] |
(package private) double |
dNdtau(double tau)
Derivative d N/d tau [m]. |
(package private) double |
dsdlambda(double tau,
double c3)
Derivative d s/d lambda. |
(package private) double |
dtaudlambda(double tau,
double c3)
Derivative d tau/d lambda. |
(package private) double |
dtauds(double tau,
double c3)
Derivative d tau/d s [1/m]. |
(package private) double |
dtaudsSignum(double[] phi,
double[] lambd)
Approximate sign d tau / ds |
(package private) double |
dTdtau(double tau,
double c3)
Derivative of T with respect to tau. |
double |
flatt()
Flattening factor. |
static double |
flatt(double e)
Convert eccentricity to flattening factor. |
(package private) double |
GaussE(double tau)
Gauss parameter E [m^2]. |
(package private) double |
GaussG(double tau)
Gauss parameter G [m^2]. |
double[] |
getCartesian(double tau,
double lambd)
Convert geodetic to Cartesian coordinates. |
static void |
main(java.lang.String[] args)
usage: java -jar Geod.jar [-h altitude/m] [-s #longitude steps] [-u sfac] [-R equat radius/m] [-e eccent] [-r] [-g] [-2] [-?] phi1 lam1 phi2 lam2 setenv CLASSPATH .... |
(package private) double |
nautAngle(double tau,
double c3,
double north)
Nautical course in the local oblique horizontal [rad] |
void |
print(double longi,
double tau,
double c3,
double north,
int useRad,
double s)
Print a line with coordinate information. |
(package private) double |
tauShoot(double[] phi,
double[] lambd,
double c3,
int Nsampl,
int usampl,
int useRad,
int taylOrd)
Compute one trajectory over the lambda interval, assuming c3 given. |
(package private) double |
tauTropic(double c3)
Minimum polar distance. |
static void |
usage()
Write a usage (command line options) summary to stdout. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
public static final double IERS_TN32_FLAT
public static final double IERS_TN21_FLAT
public static final double GRS80_FLAT
static final double WGS84_FLAT
public static final double IERS_TN32_RHO_E
public static final double IERS_TN21_RHO_E
public static final double GRS80_RHO_E
public static final double WGS84_RHO_E
double rho_equat
double eccen
double altit
Constructor Detail |
---|
public Geod()
public Geod(double rho, double e, double h)
rho
- equatorial radius [m]e
- eccentricityh
- altitude above the reference ellipsoid [m]Method Detail |
---|
public double[] getCartesian(double tau, double lambd)
tau
- the sine of the geodetic latitudelambd
- the geodetic longitude [rad]
public double curvN(double tau)
tau
- sine of the latitude
double dNdtau(double tau)
tau
- sine of the latitude
public static double flatt(double e)
e
- the (first) eccentricity
public double flatt()
public double curvM(double tau)
tau
- sine of the latitude
public double dMdtau(double tau)
tau
- sine of the latitude
public double d2Mdtau2(double tau)
tau
- sine of the latitude
double GaussE(double tau)
tau
- sine of the latitude
public double dEdtau(double tau)
tau
- sine of the latitude
public double d2Edtau2(double tau)
tau
- sine of the latitude
double GaussG(double tau)
tau
- sine of the latitude
double tauTropic(double c3)
c3
- the constant c3 along one individual trajectory
double dtaudlambda(double tau, double c3)
tau
- sine of the latitudec3
- the constant c3 along one individual trajectory
double dsdlambda(double tau, double c3)
tau
- sine of the latitudec3
- the constant c3 along one individual trajectory
double discrT(double tau, double c3)
tau
- sine of the latitudec3
- the constant c3 along one individual trajectory
double dTdtau(double tau, double c3)
tau
- sine of the latitudec3
- the constant c3 along one individual trajectory
double d2Tdtau2(double tau, double c3)
tau
- sine of the latitudec3
- the constant c3 along one individual trajectory
double dtauds(double tau, double c3)
tau
- sine of the latitudec3
- the constant c3 along one individual trajectory
double d2taudlambda2(double tau, double c3)
tau
- sine of the latitudec3
- the constant c3 along one individual trajectory
double d3taudlambda3(double tau, double c3)
tau
- sine of the latitudec3
- the constant c3 along one individual trajectory
double d2sdlambda2(double tau, double c3)
tau
- sine of the latitudec3
- the constant c3 along one individual trajectory
double d3sdlambda3(double tau, double c3)
tau
- sine of the latitudec3
- the constant c3 along one individual trajectory
double c3Sphere(double[] phi, double[] lambd)
phi
- the latitudes at start and end [rad]lambd
- the longitudes at start and end [rad]
double dtaudsSignum(double[] phi, double[] lambd)
phi
- the latitudes at start and end [rad]lambd
- the longitudes at start and end [rad]
static void adjLambdaEnd(double[] lambd)
lambd
- the longitudes at start and end [rad]
The value of lambd[1] is adjusted to the range lambd[0]+-pi to ensure that the
trajectory chooses a path along the correct hemisphere.double nautAngle(double tau, double c3, double north)
tau
- sine of the latitudec3
- the directional parameter of the solution to the inverse problem [m]north
- sign of the square root, +1 or -1
double tauShoot(double[] phi, double[] lambd, double c3, int Nsampl, int usampl, int useRad, int taylOrd)
phi
- start and (target) value of the geodetic latitude [rad]lambd
- start and end value of the longitude [rad]c3
- fixed parameter of c3Nsampl
- number of steps into which the interval lambd[0]-lambd[1] is dividedusampl
- if positive, each usampl'th point of the result is printeduseRad
- one value of the AngleUnit to indicate which units are preferred for anglestaylOrd
- the order of the Taylor approximation in the FEM.
A value >=3 triggers use of a third order approximation, all others use of a 2nd order approximation.
public void print(double longi, double tau, double c3, double north, int useRad, double s)
longi
- current angle of the longitude [rad]tau
- sine of the current value of the latitudec3
- fixed parameter of c3north
- the flag which indicates whether the current direction is more N or more SuseRad
- one value of the AngleUnit to indicate which units are preferred for angless
- the total path length up to this point, measured from the startpublic double c3shoot(double[] phi, double[] lambd, int Nsampl, int usampl, int useRad, int taylOrd)
phi
- the latitudes at start and end [rad]lambd
- the longitudes at start and end [rad]Nsampl
- the number of divisions of the longitude axisusampl
- undersampling factor for the printout in the converged trajectoryuseRad
- the unit of the angles which are reportedtaylOrd
- the order of the Taylor expansion of the core integral, 2 or 3.
public static void main(java.lang.String[] args) throws java.lang.Exception
java.lang.Exception
public static void usage()
|
||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |