Modulo:GeoData
Esempi
modificaFunzione nospace
modificaEsempio | Input | Risultato |
---|---|---|
{{#invoke:GeoData|nospace|}}
|
||
{{#invoke:GeoData|nospace|5° N}}
|
5° N | 5°N |
{{#invoke:GeoData|nospace|5° 10' N}}
|
5° 10' N | 5°10'N |
{{#invoke:GeoData|nospace|5° 01' 20" N}}
|
5° 01' 20" N | 5°01'20"N |
{{#invoke:GeoData|nospace|{{#dd2dms: 14.58|precision=0}}}}
|
15° | 15° |
{{#invoke:GeoData|nospace|{{#dd2dms: 14.58|precision=2}}}}
|
14° 35' | 14°35' |
{{#invoke:GeoData|nospace|{{#dd2dms: 14.58|precision=4}}}}
|
14° 34' 48" | 14°34'48" |
{{#invoke:GeoData|nospace|{{#dd2dms: 14.58}}}}
|
14° 34' 48" | 14°34'48" |
{{#invoke:GeoData|nospace|{{#dd2dms: 14.58N}}}}
|
14° 34' 48" N | 14°34'48"N |
{{#invoke:GeoData|nospace|{{#dd2dms: 14.58X}}}}
|
Input non corretto | Inputnoncorretto |
{{#invoke:GeoData|nospace|{{#dd2dms:}}}}
|
Input non corretto | Inputnoncorretto |
Funzione nozeros
modificaEsempio | Input | Risultato |
---|---|---|
{{#invoke:GeoData|nozeros|}}
|
no lat, no long | |
{{#invoke:GeoData|nozeros|5° N}}
|
5° N, no long | |
{{#invoke:GeoData|nozeros||10° E}}
|
no lat, 10° E | |
{{#invoke:GeoData|nozeros|5° 10' 00" N|10° 20' 40" E}}
|
5° 10' 00" N, 10° 20' 40" E | 5° 10' 00" N 10° 20' 40" E |
{{#invoke:GeoData|nozeros|5° 01' 20" N|10° 20' 00" E}}
|
5° 01' 20" N, 10° 20' 00" E | 5° 01' 20" N 10° 20' 00" E |
{{#invoke:GeoData|nozeros|5° 00' 20" N|10° 00' 00" E}}
|
5° 00' 20" N, 10° 00' 00" E | 5° 00' 20" N 10° 00' 00" E |
{{#invoke:GeoData|nozeros|5° 10' 00" N|10° 20' 00" E}}
|
5° 10' 00" N, 10° 20' 00" E | 5° 10' N 10° 20' E |
{{#invoke:GeoData|nozeros|5° 00' 00" N|10° 00' 00" E}}
|
5° 00' 00" N, 10° 00' 00" E | 5° N 10° E |
{{#invoke:GeoData|nozeros|5° 0' 0" N|10° 0' 0" E}}
|
5° 0' 0" N, 10° 0' 0" E | 5° N 10° E |
{{#invoke:GeoData|nozeros|{{#dd2dms: {{Dms2dec|5.005555N|4}} N|precision=4}}|{{#dd2dms: {{Dms2dec|10.333333E|4}}|precision=4}} E}}
|
5° 0' 20" N, 10° 20' 0" E | 5° 0' 20" N 10° 20' 0" E |
{{#invoke:GeoData|nozeros|{{#dd2dms: {{Dms2dec|5.033333N|4}}|precision=4}} N|{{#dd2dms: {{Dms2dec|10.333333E|4}}|precision=4}} E}}
|
5° 2' 0" N, 10° 20' 0" E | 5° 2' N 10° 20' E |
{{#invoke:GeoData|nozeros|{{#dd2dms: 15N|precision=4}}|{{#dd2dms: 16E|precision=4}}}}
|
15° 0' 0" N, 16° 0' 0" E | 15° N 16° E |
Funzione dd2dms
modificaEsempio | Input | Risultato |
---|---|---|
{{#invoke:GeoData|dd2dms||10° E}}
|
no lat, 10° E | |
{{#invoke:GeoData|dd2dms|xyz|10° E}}
|
xyz, 10° E | xyz 10°E |
{{#invoke:GeoData|dd2dms|{{#dd2dms: {{Dms2dec|5.000555N|4}} N|precision=4}}|{{#dd2dms: {{Dms2dec|10.333333E|4}}|precision=4}} E}}
|
5° 0' 2" N, 10° 20' 0" E | 5°00'02"N 10°20'00"E |
{{#invoke:GeoData|dd2dms|{{#dd2dms: {{Dms2dec|5.033333N|4}}|precision=4|plus=N|minus=S}}|{{#dd2dms: {{Dms2dec|10.333333E|4}}|precision=4|plus=E|minus=W}}}}
|
5° 2' 0" N, 10° 20' 0" E | 5°02'N 10°20'E |
{{#invoke:GeoData|dd2dms|{{#dd2dms: 15N|precision=4}}|{{#dd2dms: 16E|precision=4}}}}
|
15° 0' 0" N, 16° 0' 0" E | 15°N 16°E |
Per forzare il controllo sulla correttezza delle coordinare e ritornare una stringa vuota se errate, utilizzare la seguente sintassi:
{{#ifeq:{{#dd2dms:LAT}}|Input non corretto||{{#ifeq:{{#dd2dms:LONG}}|Input non corretto||{{#invoke:GeoData|dd2dms|LAT|LONG}}}}}}
local i = {}
local function __nospace(s)
local newstr = '';
newstr = mw.ustring.gsub(s or '', '%s', ''); --rimuovo gli spazi
return newstr;
end
function i.nospace(frame)
return __nospace(frame.args[1]); --rimuovo gli spazi
end
local function __nozeros(lat, long)
local lat = lat or '';
local long = long or '';
--se uno dei due parametri è vuoto restituisco una stringa vuota per evidenziarne l'errore
if lat=='' or long=='' then
return "";
end
--normalizzo eventuali simboli non standard
for _,search in ipairs({"'", "‘", "’", "′", "'"}) do
lat = string.gsub(lat, search, "'");
long = string.gsub(long, search, "'");
end
for _,search in ipairs({'"', "''", "“", "”", """}) do
lat = string.gsub(lat, search, '"');
long = string.gsub(long, search, '"');
end
--se hanno entrambi i secondi a 0 li sopprimo
if string.find(lat, "'%s?0?0\"") and string.find(long, "'%s?0?0\"") then
lat = string.gsub(lat, "'%s?0?0\"", "'");
long = string.gsub(long, "'%s?0?0\"", "'");
else
return lat.." "..long;
end
--se hanno entrambi i minuti a 0 li sopprimo
if string.find(lat, "°%s?0?0'") and string.find(long, "°%s?0?0'") then
lat = string.gsub(lat, "°%s?0?0'", "°");
long = string.gsub(long, "°%s?0?0'", "°");
end
return lat.." "..long;
end
function i.nozeros(frame)
return __nozeros(frame.args[1], frame.args[2])
end
local function __dd2dms(p1,p2)
local coordinate=__nozeros(__nospace(p1), __nospace(p2));
--se minuti e/o secondi hanno una sola cifra gli antepongo uno zero
coordinate=string.gsub(coordinate, "(° ?)(.')","%10%2");
coordinate=string.gsub(coordinate, "(' ?)(.\")","%10%2");
return coordinate;
end
function i.dd2dms(frame)
return __dd2dms(frame.args[1], frame.args[2]);
end
function i.dd2dmsspan(frame)
local coordinate = __dd2dms(frame.args[1], frame.args[2]);
local lat, long = coordinate:match("(.+) (.+)");
return '<span class="latitude">' .. lat .. '</span> ' .. '<span class="longitude">' .. long .. '</span>';
end
return i;