@@ -11,7 +11,7 @@ discard block |
||
| 11 | 11 | * Translated to PHP of GeographicLib/src/Geoid.cpp |
| 12 | 12 | * by Ycarus <[email protected]> in 2017 |
| 13 | 13 | */ |
| 14 | -class GeoidHeight { |
|
| 14 | +class GeoidHeight { |
|
| 15 | 15 | private $c0 = 240; |
| 16 | 16 | private $c3 = [[9, -18, -88, 0, 96, 90, 0, 0, -60, -20], [-9, 18, 8, 0, -96, 30, 0, 0, 60, -20], [9, -88, -18, 90, 96, 0, -20, -60, 0, 0], [186, -42, -42, -150, -96, -150, 60, 60, 60, 60], [54, 162, -78, 30, -24, -90, -60, 60, -60, 60], [-9, -32, 18, 30, 24, 0, 20, -60, 0, 0], [-9, 8, 18, 30, -96, 0, -20, 60, 0, 0], [54, -78, 162, -90, -24, 30, 60, -60, 60, -60], [-54, 78, 78, 90, 144, 90, -60, -60, -60, -60], [9, -8, -18, -30, -24, 0, 20, 60, 0, 0], [-9, 18, -32, 0, 24, 30, 0, 0, -60, 20], [9, -18, -8, 0, -24, -30, 0, 0, 60, 20]]; |
| 17 | 17 | private $c0n = 372; |
@@ -34,7 +34,7 @@ discard block |
||
| 34 | 34 | private $v10 = null; |
| 35 | 35 | private $v11 = null; |
| 36 | 36 | |
| 37 | - public function __construct($name='') { |
|
| 37 | + public function __construct($name = '') { |
|
| 38 | 38 | global $globalGeoidSource; |
| 39 | 39 | //if ($name == '') $name = dirname(__FILE__).'/../install/tmp/egm2008-1.pgm'; |
| 40 | 40 | if ($name == '') { |
@@ -42,35 +42,35 @@ discard block |
||
| 42 | 42 | else $name = dirname(__FILE__).'/../data/egm96-15.pgm'; |
| 43 | 43 | } |
| 44 | 44 | |
| 45 | - $f = @fopen($name,"r"); |
|
| 45 | + $f = @fopen($name, "r"); |
|
| 46 | 46 | if ($f === FALSE) { |
| 47 | 47 | throw new Exception("Can't open ".$name); |
| 48 | 48 | } |
| 49 | - $line = fgets($f,4096); |
|
| 49 | + $line = fgets($f, 4096); |
|
| 50 | 50 | if (trim($line) != 'P5') { |
| 51 | 51 | throw new Exception('No PGM header'); |
| 52 | 52 | } |
| 53 | 53 | $headerlen = strlen($line); |
| 54 | 54 | while (true) { |
| 55 | - $line = fgets($f,4096); |
|
| 55 | + $line = fgets($f, 4096); |
|
| 56 | 56 | if ((strlen($line) == 0)) { |
| 57 | 57 | throw new Exception('EOF before end of file header'); |
| 58 | 58 | } |
| 59 | 59 | $headerlen += strlen($line); |
| 60 | - if (strpos($line,'# Offset ') !== FALSE) { |
|
| 60 | + if (strpos($line, '# Offset ') !== FALSE) { |
|
| 61 | 61 | $this->offset = substr($line, 9); |
| 62 | - } else if (strpos($line,'# Scale ') !== FALSE) { |
|
| 62 | + } else if (strpos($line, '# Scale ') !== FALSE) { |
|
| 63 | 63 | $this->scale = substr($line, 8); |
| 64 | - } else if ((strpos($line,'#') === FALSE)) { |
|
| 65 | - list($this->width, $this->height) = preg_split('/\s+/',$line); |
|
| 64 | + } else if ((strpos($line, '#') === FALSE)) { |
|
| 65 | + list($this->width, $this->height) = preg_split('/\s+/', $line); |
|
| 66 | 66 | break; |
| 67 | 67 | } |
| 68 | 68 | } |
| 69 | - $line = fgets($f,4096); |
|
| 69 | + $line = fgets($f, 4096); |
|
| 70 | 70 | $headerlen += strlen($line); |
| 71 | - $levels = (int)$line; |
|
| 72 | - $this->width = (int)$this->width; |
|
| 73 | - $this->height = (int)$this->height; |
|
| 71 | + $levels = (int) $line; |
|
| 72 | + $this->width = (int) $this->width; |
|
| 73 | + $this->height = (int) $this->height; |
|
| 74 | 74 | if (($levels != 65535)) { |
| 75 | 75 | throw new Exception('PGM file must have 65535 gray levels ('.$levels.')'); |
| 76 | 76 | } |
@@ -85,42 +85,42 @@ discard block |
||
| 85 | 85 | } |
| 86 | 86 | |
| 87 | 87 | $fullsize = filesize($name); |
| 88 | - if ((($fullsize - $headerlen) != (($this->width * $this->height) * 2))) { |
|
| 88 | + if ((($fullsize - $headerlen) != (($this->width*$this->height)*2))) { |
|
| 89 | 89 | throw new Exception('File has the wrong length'); |
| 90 | 90 | } |
| 91 | 91 | |
| 92 | 92 | $this->headerlen = $headerlen; |
| 93 | - $this->raw= $f; |
|
| 94 | - $this->rlonres = ($this->width / 360.0); |
|
| 95 | - $this->rlatres = (($this->height - 1) / 180.0); |
|
| 93 | + $this->raw = $f; |
|
| 94 | + $this->rlonres = ($this->width/360.0); |
|
| 95 | + $this->rlatres = (($this->height - 1)/180.0); |
|
| 96 | 96 | } |
| 97 | 97 | |
| 98 | - private function _rawval($ix,$iy) { |
|
| 98 | + private function _rawval($ix, $iy) { |
|
| 99 | 99 | if (($iy < 0)) { |
| 100 | 100 | $iy = -$iy; |
| 101 | - $ix += ($this->width / 2); |
|
| 101 | + $ix += ($this->width/2); |
|
| 102 | 102 | } else if (($iy >= $this->height)) { |
| 103 | - $iy = ((2 * ($this->height - 1)) - $iy); |
|
| 104 | - $ix += ($this->width / 2); |
|
| 103 | + $iy = ((2*($this->height - 1)) - $iy); |
|
| 104 | + $ix += ($this->width/2); |
|
| 105 | 105 | } |
| 106 | 106 | if (($ix < 0)) { |
| 107 | 107 | $ix += $this->width; |
| 108 | 108 | } else if (($ix >= $this->width)) { |
| 109 | 109 | $ix -= $this->width; |
| 110 | 110 | } |
| 111 | - $k = ((($iy * $this->width) + $ix) * 2) + $this->headerlen; |
|
| 112 | - fseek($this->raw,$k); |
|
| 113 | - return unpack('n',fread($this->raw,2))[1]; |
|
| 111 | + $k = ((($iy*$this->width) + $ix)*2) + $this->headerlen; |
|
| 112 | + fseek($this->raw, $k); |
|
| 113 | + return unpack('n', fread($this->raw, 2))[1]; |
|
| 114 | 114 | } |
| 115 | 115 | |
| 116 | - public function get($lat,$lon,$cubic=true) { |
|
| 116 | + public function get($lat, $lon, $cubic = true) { |
|
| 117 | 117 | if (($lon < 0)) { |
| 118 | 118 | $lon += 360; |
| 119 | 119 | } |
| 120 | - $fy = ((90 - $lat) * $this->rlatres); |
|
| 121 | - $fx = ($lon * $this->rlonres); |
|
| 122 | - $iy = (int)$fy; |
|
| 123 | - $ix = (int)$fx; |
|
| 120 | + $fy = ((90 - $lat)*$this->rlatres); |
|
| 121 | + $fx = ($lon*$this->rlonres); |
|
| 122 | + $iy = (int) $fy; |
|
| 123 | + $ix = (int) $fx; |
|
| 124 | 124 | $fx -= $ix; |
| 125 | 125 | $fy -= $iy; |
| 126 | 126 | $t = array(); |
@@ -147,7 +147,7 @@ discard block |
||
| 147 | 147 | $c3x = $this->c3; |
| 148 | 148 | $c0x = $this->c0; |
| 149 | 149 | } |
| 150 | - for ($i = 0; $i < 10;++$i) { |
|
| 150 | + for ($i = 0; $i < 10; ++$i) { |
|
| 151 | 151 | $t[$i] = 0; |
| 152 | 152 | for ($j = 0; $j < 12; ++$j) { |
| 153 | 153 | $t[$i] += $v[$j]*$c3x[$j][$i]; |
@@ -158,13 +158,13 @@ discard block |
||
| 158 | 158 | $this->t = $t; |
| 159 | 159 | } else $t = $this->t; |
| 160 | 160 | if (!($cubic)) { |
| 161 | - $a = (((1 - $fx) * $this->v00) + ($fx * $this->v01)); |
|
| 162 | - $b = (((1 - $fx) * $this->v10) + ($fx * $this->v11)); |
|
| 163 | - $h = (((1 - $fy) * $a) + ($fy * $b)); |
|
| 161 | + $a = (((1 - $fx)*$this->v00) + ($fx*$this->v01)); |
|
| 162 | + $b = (((1 - $fx)*$this->v10) + ($fx*$this->v11)); |
|
| 163 | + $h = (((1 - $fy)*$a) + ($fy*$b)); |
|
| 164 | 164 | } else { |
| 165 | - $h = (($t[0] + ($fx * ($t[1] + ($fx * ($t[3] + ($fx * $t[6])))))) + ($fy * (($t[2] + ($fx * ($t[4] + ($fx * $t[7])))) + ($fy * (($t[5] + ($fx * $t[8])) + ($fy * $t[9])))))); |
|
| 165 | + $h = (($t[0] + ($fx*($t[1] + ($fx*($t[3] + ($fx*$t[6])))))) + ($fy*(($t[2] + ($fx*($t[4] + ($fx*$t[7])))) + ($fy*(($t[5] + ($fx*$t[8])) + ($fy*$t[9])))))); |
|
| 166 | 166 | } |
| 167 | - return ((float)$this->offset + ((float)$this->scale * (float)$h)); |
|
| 167 | + return ((float) $this->offset + ((float) $this->scale*(float) $h)); |
|
| 168 | 168 | } |
| 169 | 169 | } |
| 170 | 170 | /* |
@@ -38,8 +38,11 @@ discard block |
||
| 38 | 38 | global $globalGeoidSource; |
| 39 | 39 | //if ($name == '') $name = dirname(__FILE__).'/../install/tmp/egm2008-1.pgm'; |
| 40 | 40 | if ($name == '') { |
| 41 | - if (isset($globalGeoidSource) && $globalGeoidSource != '') $name = dirname(__FILE__).'/../data/'.$globalGeoidSource.'.pgm'; |
|
| 42 | - else $name = dirname(__FILE__).'/../data/egm96-15.pgm'; |
|
| 41 | + if (isset($globalGeoidSource) && $globalGeoidSource != '') { |
|
| 42 | + $name = dirname(__FILE__).'/../data/'.$globalGeoidSource.'.pgm'; |
|
| 43 | + } else { |
|
| 44 | + $name = dirname(__FILE__).'/../data/egm96-15.pgm'; |
|
| 45 | + } |
|
| 43 | 46 | } |
| 44 | 47 | |
| 45 | 48 | $f = @fopen($name,"r"); |
@@ -156,7 +159,9 @@ discard block |
||
| 156 | 159 | } |
| 157 | 160 | } |
| 158 | 161 | $this->t = $t; |
| 159 | - } else $t = $this->t; |
|
| 162 | + } else { |
|
| 163 | + $t = $this->t; |
|
| 164 | + } |
|
| 160 | 165 | if (!($cubic)) { |
| 161 | 166 | $a = (((1 - $fx) * $this->v00) + ($fx * $this->v01)); |
| 162 | 167 | $b = (((1 - $fx) * $this->v10) + ($fx * $this->v11)); |