Changeset 175 for trunk/globals


Ignore:
Timestamp:
03/02/2007 02:36:10 AM (5 years ago)
Author:
Winner
Message:

"Fix: srtm class now works for all the earth. (thanx to Andre Marais)"

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/globals/classes/srtm.php

    r169 r175  
    2929         
    3030        function get_elevation($lat, $lon, $round=TRUE) { 
     31                if ($lat < 0) { 
     32                        $lat_dir = 'S'; 
     33                        $lat_adj = 1; 
     34                } else { 
     35                        $lat_dir = 'N'; 
     36                        $lat_adj = 0; 
     37                } 
     38                if ($lon < 0) { 
     39                        $lon_dir = 'W'; 
     40                        $lon_adj = 1; 
     41                } else { 
     42                        $lon_dir = 'E'; 
     43                        $lon_adj = 0; 
     44                } 
    3145                $y = $lat; 
    3246                $x = $lon; 
    33          
    34                 $filename = $this->data_path.'N'.(integer)$lat.'E'.((integer)$lon<100?'0'.(integer)$lon:(integer)$lon).'.hgt'; 
    35          
    36                 if ($lat == '' || $lon == '' || !file_exists($filename)) 
    37                         return FALSE; 
    38          
     47                 
     48                $filename = $this->data_path.$lat_dir.sprintf("%02.0f", (integer)($lat+$lat_adj)).$lon_dir.sprintf("%03.0f", (integer)($lon+$lon_adj)).'.hgt'; 
     49                if ($lat === '' || $lon === '' || !file_exists($filename)) return FALSE; 
     50                 
    3951                $file = fopen($filename, 'r'); 
    40                 $offset = ( (integer)(($x - (integer)$x) * 1200) * 2 + (1200 - (integer)(($y - (integer)$y) * 1200)) * 2402 ); 
     52                $offset = ( (integer)(($x - (integer)$x + $lon_adj) * 1200) * 2 + (1200 - (integer)(($y - (integer)$y + $lat_adj) * 1200)) * 2402 ); 
    4153                fseek($file, $offset); 
    4254                $h1 = bytes2int(strrev(fread($file, 2))); 
     
    5466                } 
    5567         
    56                 $fx = ($lon - (integer)($lon * 1200) / 1200) * 1200; 
    57                 $fy = ($lat - (integer)($lat * 1200) / 1200) * 1200; 
     68                $fx = ($lon - ((integer)($lon * 1200) / 1200)) * 1200; 
     69                $fy = ($lat - ((integer)($lat * 1200) / 1200)) * 1200; 
    5870         
    5971                // normalizing data 
Note: See TracChangeset for help on using the changeset viewer.