Ellipsoid

An ellipsoid is a mathematically defined approximation of the earth’s surface.

An ellipsoid is defined by two parameters:

  • the semi-major axis a (equatorial radius)
  • the semi-minor axis b (polar radius)

a and b together define the flattening of the ellipsoid f:

f = (a-b) / a

NOTE: phpgeo’s ellipsoids are defined by a and 1/f instead of a and b. That’s not a problem because each of the three values can be calculated from the other two.

phpgeo supports arbitrary ellipsoids. WGS-84 is used as default when no other ellipsoid is given. For day-to-day calculations it’s not needed to care about ellipsoids in the most cases.

It’s possible to create an instance of the Ellipsoid class either by specifing a name or by providing the three parameters name, a, and 1/f.

<?php

use Location\Ellipsoid;

$ellipsoid = Ellipsoid::createDefault('WGS-84');

printf(
    "%s: a=%f; b=%f; 1/f=%f\n",
    $ellipsoid->getName(),
    $ellipsoid->getA(),
    $ellipsoid->getB(),
    $ellipsoid->getF()
);

$ellipsoid = new Ellipsoid('GRS-80', 6378137, 298.257222);

printf(
    "%s: a=%f; b=%f; 1/f=%f\n",
    $ellipsoid->getName(),
    $ellipsoid->getA(),
    $ellipsoid->getB(),
    $ellipsoid->getF()
);

The first ellipsoid is created from one of the default configurations. The second one is created by providing a name and the values of a and 1/f.

The code above will produce the output below:

WGS-84: a=6378137.000000; b=6356752.314245; 1/f=298.257224
GRS-80: a=6378137.000000; b=6356752.314133; 1/f=298.257222

Please take a look into the Ellipsoid source file for a list of pre-defined ellipsoids.