Zum Inhalt springen

Modul:CoordUtil

aus Wikipedia, der freien Enzyklopädie

Die Dokumentation für dieses Modul kann unter Modul:CoordUtil/Doku erstellt werden

local p = {};
function p.dms2dec(frame)
 -- #!/usr/bin/env lua
 -- Lua 5.1 or greater
 -- see module doc
 -- example Lima: 12° 2' 46.9464" S 77° 2' 34.0548" W
 -- result: "-12.046374|-77.042793"
 local loc=frame.args
 local x,D,M,S,d,m,s,lat,lon
 x=loc and loc[1] or io.read("*l")
 x=string.gsub(string.gsub(x,"N,","N"),"S,","S")
 x=string.gsub(x,",",".")
 -- print(x)
 D,M,S,d,m,s=string.match(x,string.rep("([0-9.-]+)[^0-9.-]+",6))
 -- print(D,M,S,d,m,s)
 lat=math.abs(D)+M/60+S/3600
 lon=math.abs(d)+m/60+s/3600
 -- print(lat,lon)
 function xor(a,b) return a and not b or not a and b end
 if xor(tonumber(D)<0,string.find(x,"S")) then lat=-lat end
 if xor(tonumber(d)<0,string.find(x,"W")) then lon=-lon end
 if loc and loc[2]=="lat" then return lat end
 if loc and loc[2]=="lon" then return lon end
 return lat .. "|" .. lon
end;
function p.dms2lat(frame)
 local loc=frame.args
 local x,D,M,S,d,m,s,lat,lon
 x=loc and loc[1] or io.read("*l")
 x=string.gsub(string.gsub(x,"N,","N"),"S,","S")
 x=string.gsub(x,",",".")
 D,M,S,d,m,s=string.match(x,string.rep("([0-9.-]+)[^0-9.-]+",6))
 lat=math.abs(D)+M/60+S/3600
 function xor(a,b) return a and not b or not a and b end
 if xor(tonumber(D)<0,string.find(x,"S")) then lat=-lat end
 return lat
end;
function p.dms2lon(frame)
 local loc=frame.args
 local x,D,M,S,d,m,s,lat,lon
 x=loc and loc[1] or io.read("*l")
 x=string.gsub(string.gsub(x,"N,","N"),"S,","S")
 x=string.gsub(x,",",".")
 D,M,S,d,m,s=string.match(x,string.rep("([0-9.-]+)[^0-9.-]+",6))
 lon=math.abs(d)+m/60+s/3600
 function xor(a,b) return a and not b or not a and b end
 if xor(tonumber(d)<0,string.find(x,"W")) then lon=-lon end
 return lon
end;
return p