Skip to content

Fix issue for negative coordinate(s) #2

Description

@nono303

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions