July 17th 2014, LLH to ECEF Conversion
← July 16th 2014 Automate Qt Build | ● | July 18th 2014 Doxygen →
The conversion method from LLH into ECEF coordinates is borrowed from libMini’s minicrs module. The module is a reimplementation of a subset of the routines in the General Cartographic Transformation Package (GCTPC) of the EDC.
// input in degrees, height in meters, output in meters
// latitude in [-90,90] degrees
// longitude in [-180,180] degrees
static void LLH2ECEF(double lat, double lon, double h,
double xyz[3],
double r_major, double r_minor)
{
const double es=1.0-r_minor*r_minor/(r_major*r_major); // eccentricity squared
double slat,clat,slon,clon; // sine and cosine values
double r; // radius in prime vertical
lat*=2*M_PI/360;
lon*=2*M_PI/360;
slat=sin(lat);
clat=cos(lat);
slon=sin(lon);
clon=cos(lon);
r=r_major/sqrt(1.0-es*slat*slat);
xyz[0]=(r+h)*clat*clon;
xyz[1]=(r+h)*clat*slon;
xyz[2]=(r*(1.0-es)+h)*slat;
}
The particular license of the GCTPC package is not specified. The 1998 announcement text of the GCTPC 2.0 release states that “this new version, GCTPc, is being made available informally on a ‘user-beware’ basis. EDC assumes no responsibility for the accuracy of the routines in this package”. As the software is made explicitly open to the public on a “user-beware” basis, it is assumed that the software is in the public domain.
The subset of map projections of GCPTC that has been recoded as part of the libMini::minicrs module is licensed under LGPL 2.1.
← July 16th 2014 Automate Qt Build | ● | July 18th 2014 Doxygen →