/** * Function: deriveConstants * Sets several derived constant values and initialization of datum and ellipse parameters. * */ public function deriveConstants() { if (isset($this->nagrids) && $this->nagrids == '@null') { $this->datumCode = 'none'; } if (isset($this->datumCode) && $this->datumCode != 'none') { $datumDef = $this->proj4php->getDatum($this->datumCode); if (is_array($datumDef)) { $this->datum_params = array_key_exists('towgs84', $datumDef) ? explode(',', $datumDef['towgs84']) : null; $this->ellps = $datumDef['ellipse']; $this->datumName = array_key_exists('name', $datumDef) ? $datumDef['name'] : $this->datumCode; } } // Do we have an ellipsoid? if (!isset($this->a)) { if (!isset($this->ellps) || strlen($this->ellps) == 0 || !$this->proj4php->hasEllipsoid($this->ellps)) { $ellipse = $this->proj4php->getEllipsoid('WGS84'); } else { $ellipse = $this->proj4php->getEllipsoid($this->ellps); } Proj4php::extend($this, $ellipse); } if (isset($this->rf) && !isset($this->b)) { $this->b = (1.0 - 1.0 / $this->rf) * $this->a; } if (isset($this->rf) && $this->rf === 0 || abs($this->a - $this->b) < Common::EPSLN) { $this->sphere = true; $this->b = $this->a; } // used in geocentric $this->a2 = $this->a * $this->a; // used in geocentric $this->b2 = $this->b * $this->b; // e ^ 2 $this->es = ($this->a2 - $this->b2) / $this->a2; // eccentricity $this->e = sqrt($this->es); if (isset($this->R_A)) { $this->a *= 1.0 - $this->es * (Common::SIXTH + $this->es * (Common::RA4 + $this->es * Common::RA6)); $this->a2 = $this->a * $this->a; $this->b2 = $this->b * $this->b; $this->es = 0.0; } // used in geocentric $this->ep2 = ($this->a2 - $this->b2) / $this->b2; if (!isset($this->k0)) { // default value $this->k0 = 1.0; } // DGR 2010-11-12: axis if (!isset($this->axis)) { $this->axis = "enu"; } $this->datum = new Datum($this); }