Hi !
Bad value are return in case of negative (S for lat, W for lon) value(s)
Here is the fix:
private function getSec($deg) {
if($deg < 0) if($deg < 0) // fix for negative (S lat, W lon) value(s)
$deg = abs(floor($deg))+$deg;
$deg = abs($deg);
$sec = round($deg * 3600, 4);
$m = fmod(floor($sec / 60), 60);
$s = round(fmod($sec, 60), 4);
return ($m * 60) + $s;
}
comparing result with gdallocationinfo
$data = "dtm-srtm1";
$lat = 45.46480442513404;
$lon = 5.925116105081207;
echo "getPhpAlt : ".Gis::getPhpAlt($lat,$lon,$data).PHP_EOL;
echo "getGdalAlt: ".Gis::getGdalAlt($lat,$lon,$data).PHP_EOL;
echo "-----------------".PHP_EOL;
$lat = 28.27269471435608;
$lon = -16.642273055313222;
echo "getPhpAlt : ".Gis::getPhpAlt($lat,$lon,$data).PHP_EOL;
echo "getGdalAlt: ".Gis::getGdalAlt($lat,$lon,$data).PHP_EOL;
echo "-----------------".PHP_EOL;
$lat = -21.099441526860588;
$lon = 55.480034066439416;
echo "getPhpAlt : ".Gis::getPhpAlt($lat,$lon,$data).PHP_EOL;
echo "getGdalAlt: ".Gis::getGdalAlt($lat,$lon,$data).PHP_EOL;
echo "-----------------".PHP_EOL;
$lat = -17.61924106680689;
$lon = -149.47775720235984;
echo "getPhpAlt : ".Gis::getPhpAlt($lat,$lon,$data).PHP_EOL;
echo "getGdalAlt: ".Gis::getGdalAlt($lat,$lon,$data).PHP_EOL;
return correct values
getPhpAlt : 1927.13
getGdalAlt: 1921
-----------------
getPhpAlt : 3705.69
getGdalAlt: 3707
-----------------
getPhpAlt : 3052.29
getGdalAlt: 3052
-----------------
getPhpAlt : 982.85
getGdalAlt: 985
Hi !
Bad value are return in case of negative (S for lat, W for lon) value(s)
Here is the fix:
comparing result with
gdallocationinforeturn correct values