Modulo:WikidataKoord
Aspekto
[antaŭrigardi] [redakti] [historio] [renovigi]
Dokumentado
Ĉi tiu modulo ebligas legi geografajn koordinatojn (p625) en vikidatumoj.
latitudo resendas latitudon. longitudo resendas longitudon. koordinatoj resendas latitudon kaj longitudon. lat_d, lat_m, lat_s resendas latitudon respektive en grado, minuto kaj sekundo. long_d, long_m, long_s resendas latitudon respektive en grado, minuto kaj sekundo. long_EW resendas se la longitudon estas Eosto aŭ Uesto. kompari estas ilo por kompari longitudon el vikidatumoj kaj parametron el la funkcio.
La strukturo de P625 estas (ekzemplo el Maconge) :
["P625"] = table#114 {
table#115 { ["id"] = "Q16750$87516b33-49ff-944f-b48a-6221d3c2e04e", ["mainsnak"] = table#116 { ["datatype"] = "globe-coordinate", ["datavalue"] = table#117 { ["type"] = "globecoordinate", ["value"] = table#118 { ["globe"] = "http://www.wikidata.org/entity/Q2", ["latitude"] = 47.221388888889, ["longitude"] = 4.5783333333333, ["precision"] = 0.00027777777777778, }, }, ["property"] = "P625", ["snaktype"] = "value", }, ["rank"] = "normal", ["references"] = table#119 { table#120 { ["hash"] = "f70116eac7f49194478b3025330bfd8dcffa3c69", ["snaks"] = table#121 { ["P143"] = table#122 { table#123 { ["datatype"] = "wikibase-item", ["datavalue"] = table#124 { ["type"] = "wikibase-entityid", ["value"] = table#125 { ["entity-type"] = "item", ["numeric-id"] = 8447, }, }, ["property"] = "P143", ["snaktype"] = "value", }, }, }, ["snaks-order"] = table#126 { "P143", }, }, }, ["type"] = "statement", }, },
Se vi havas demandon pri ĉi tiu Lua-modulo, tiam vi povas demandi en la diskutejo pri Lua-moduloj. La Intervikiaj ligiloj estu metataj al Vikidatumoj. (Vidu Helpopaĝon pri tio.) |
|
local p = {}
local matematiko = require( "Module:Math" )
function p.latitudo()
local entity = mw.wikibase.getEntity()
if not entity then
return nil
end
local geo = entity:getBestStatements( 'P625' )
if (#geo == 0) or (geo[1].mainsnak.datatype ~= "globe-coordinate") then --
return nil
end
local v = geo[1].mainsnak.datavalue.value.latitude
return v
end
function p.longitudo()
local entity = mw.wikibase.getEntity()
if not entity then
return nil
end
local geo = entity:getBestStatements( 'P625' )
if (#geo == 0) or (geo[1].mainsnak.datatype ~= "globe-coordinate") then --
return nil
end
local v = geo[1].mainsnak.datavalue.value.longitude
return v
end
function p.koordinatoj ()
return p.latitudo()..', '..p.longitudo()
end
function p.lat_d()
local v = p.latitudo()
if v ~= nil then
v = math.abs(v)
v = math.floor(v)
end
return v
end
function p.lat_m()
local v = p.latitudo()
if v ~= nil then v = math.floor(math.abs(v) * 60 % 60 ) end
return v
end
function p.lat_s()
local v = math.abs(p.latitudo())
v = matematiko._round(v * 3600 % 60,0)
return v
end
function p.lat_NS()
if p.latitudo() > 0 then return 'N' else return 'S' end
end
function p.long_d()
local v = math.abs(p.longitudo())
v = math.floor(v)
return v
end
function p.long_m()
local v = math.abs(p.longitudo())
v = math.floor(v * 60 % 60)
return v
end
function p.long_s()
local v = math.abs(p.longitudo())
v = matematiko._round(v * 3600 % 60,0)
return v
end
function p.long_EW()
local v = p.longitudo()
if v ~= nil then
if v > 0 then v= 'E' else v= 'U' end
end
return v
end
function p.kompari(frame)
if abs(p.longitudo()- frame.args[1]) > 0.1 then return 'eraro' end
return frame.args[1]
end
return p