Verifying formula that will convert longitude 0-360 to -180 to 180?
Here is an example for fortran:
Variables in explanation:
long1 is the longitude varying from -180 to 180 or 180W-180E long3 is the longitude variable from 0 to 360 (all positive)
To convert longitude from (0-360) to (-180 to 180)
Matlab and fortran long1=mod((long3+180),360)-180 Matlab long1=rem((long3+180),360)-180 Fortran long1=modulo((long3+180),360)-180
To convert longitude from (-180 to 180) to (0-360)
Matlab lon3=mod(lon1,360) Fortran lon3=modulo(lon1,360)
The “mod” function is Fortran is equivalent to “rem” function in Matlab.
The “modulo” function in Fortran is equivalent to “mod” function in Matlab.
http://vikas-ke-funde.blogspot.com/2010/06/convert-longitude-0-360-to-180-to-180.html
If you know for certain that your input longitudes range between 0
and 360
, then yes: just subtract 360
from values that are greater than (or equal to) 180
.
If there is any possibility of "crazy" values (less than -180
or greater than 540
) you might consider using the IEEE_REM
function:
fixed_longitude = IEEE_REM(longitude, 360.0)
This will gracefully handle any longitude value with no other logic required.