Modulo:Sandbox/M.casanova/DatiMappa: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
mNessun oggetto della modifica
mNessun oggetto della modifica
Riga 4:
local p = {}
 
-- Calcola la scala adeguata per mappa OSM
-- esempio chiamata di funzione {{#invoke:Sandbox/M.casanova/DatiMappaMappa OSM|scala|w|h|x1|y1|x2|y2|...}}
function p.scala(frame)
local t = getArgs(frame)
local amn, amx, bmn, bmx = 200400, -200400, 200400, -200400
local dimx = tonumber(t[1]) or 1
local dimy = tonumber(t[2]) or 1
local xvalvlr
for i,v in ipairs(t) do
if i>2 then
xvalvlr = tonumber(t[i])
if (i % 2 == 0) then
if (amn > xvalvlr) then amn = xvalvlr end
if (amx < xvalvlr) then amx = xvalvlr end
else
if (bmn > xvalvlr) then bmn = xvalvlr end
if (bmx < xvalvlr) then bmx = xvalvlr end
end
end
Riga 25 ⟶ 26:
local dx = (bmx - bmn)
local dy = (amx - amn)
-- if (dimx>dimy) then dx = dx*dimy/dimx else dy = dy*dimx/dimy end
local scala = 10
if (dx == 0) then
Riga 35 ⟶ 36:
else
if (dy == 0) then
scala = math.floor(math.log(360180/dx)/math.log(2))
else
scala = math.min( math.floor(math.log(360180/dx)/math.log(2)), math.floor(math.log(180/dy)/math.log(2)) )
end
end
if (scala < 0) then scala = 0 end
if (scala > 17) then scala = 18 end
return scala
end
 
-- Calcola centro per singola coordinata
-- esempio chiamata di funzione {{#invoke:Sandbox/M.casanova/DatiMappaMappa OSM|mediocentro|x1|x2|...}}
function p.mediocentro(frame)
local t = getArgs(frame)
local mn, mx = 200400, -200400
local xval
for i,v in ipairs(t) do