/** * Convert this LatLng object from WGS84 datum to Ireland 1975 datum. * Reference values for transformation are taken from OSI document * "Making maps compatible with GPS" * @return void */ public function toWGS84() { switch ($this->refEll) { case RefEll::wgs84(): return; //do nothing //do nothing case RefEll::airy1830(): // values from OSGB document "A Guide to Coordinate Systems in Great Britain" $tx = 446.448; $ty = -125.157; $tz = 542.0599999999999; $s = -2.04894E-5; $rx = deg2rad(0.1502 / 3600); $ry = deg2rad(0.247 / 3600); $rz = deg2rad(0.8421 / 3600); break; case RefEll::airyModified(): // values from OSI document "Making maps compatible with GPS" $tx = 482.53; $ty = -130.596; $tz = 564.557; $s = 8.15E-6; $rx = deg2rad(1.042 / 3600); $ry = deg2rad(0.214 / 3600); $rz = deg2rad(0.631 / 3600); break; case RefEll::clarke1866(): // assumes NAD27, values from Wikipedia $tx = -8; $ty = 160; $tz = 176; $s = 0; $rx = deg2rad(0); $ry = deg2rad(0); $rz = deg2rad(0); break; case RefEll::international1924(): // assumes ED50, values from http://www.globalmapper.com/helpv9/datum_list.htm $tx = -87; $ty = -98; $tz = -121; $s = 0; $rx = deg2rad(0); $ry = deg2rad(0); $rz = deg2rad(0); break; case RefEll::bessel1841(): // assumes Germany, values from Wikipedia $tx = 582; $ty = -105; $tz = -414; $s = 8.3E-6; $rx = deg2rad(1.04); $ry = deg2rad(0.35); $rz = deg2rad(-3.08); break; default: throw new \RuntimeException('Transform paramaters not known for this ellipsoid'); } $this->transformDatum(RefEll::wgs84(), $tx, $ty, $tz, $s, $rx, $ry, $rz); }