Module:Sandbox/Premeditated/kommune
Jump to navigation
Jump to search
{{Module rating }}
Usage
Forklaring | Kode | Resultat | ||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Kommunenummer 301 for Oslo, henter navn. | {{#invoke:Sandbox/Premeditated/kommune|main|301}} |
Oslo | ||||||||||||||||||||||||||||||||||||||||||||||||
Kommunenummer 301 for Oslo, henter navn med ref. | {{#invoke:Sandbox/Premeditated/kommune|main|301|ref}} |
Oslo[1] | ||||||||||||||||||||||||||||||||||||||||||||||||
Kommunenummer 301 for Oslo, henter landareal med enhet. | {{#invoke:Sandbox/Premeditated/kommune|main|301|hent=landareal|enhet}} |
426.39 km² | ||||||||||||||||||||||||||||||||||||||||||||||||
Kommunenummer 301 for Oslo, henter totalt areal inkl. territorial-farvann med enhet og ref. | {{#invoke:Sandbox/Premeditated/kommune|main|301|hent=totAreal|enhet|ref}} |
480.75 km²[1] | ||||||||||||||||||||||||||||||||||||||||||||||||
Kommunenummer 301 for Oslo, henter totalt areal inkl. territorial-farvann med enhet og ref. | {{#invoke:Sandbox/Premeditated/kommune|main|wd|hent=totAreal|enhet|ref}} |
Lua error in Module:Wd at line 196: attempt to index field 'wikibase' (a nil value). | ||||||||||||||||||||||||||||||||||||||||||||||||
Kommunenummer 301 for Oslo, henter myr med ref. | {{#invoke:Sandbox/Premeditated/kommune|main|301|hent=myr|ref}} |
6.59[1] | ||||||||||||||||||||||||||||||||||||||||||||||||
Fylkesnummer 34 for Innlandet fylke, henter myr med ref. | {{#invoke:Sandbox/Premeditated/kommune|main|34|hent=myr|ref}} |
4257.06[1] | ||||||||||||||||||||||||||||||||||||||||||||||||
Kommunenummer 301 for Oslo kommune, henter og regner ut innbygger tetthet. | {{#invoke:Sandbox/Premeditated/kommune|innbprkm|knr=301|innb=673469}} |
1,579.47 | ||||||||||||||||||||||||||||||||||||||||||||||||
Kommunenummer 301 for Oslo kommune, henter og regner ut innbygger tetthet med enhet | {{#invoke:Sandbox/Premeditated/kommune|innbprkm|knr=301|innb=673469|enhet}} |
1,579.47 innb./km² | ||||||||||||||||||||||||||||||||||||||||||||||||
Fylkesnummer 3 for Oslo, henter alle kommuner og legger all tall inn i en tabell. | {{#invoke:Sandbox/Premeditated/kommune|tabell|3}} |
|
Referanser
- ↑ 1.0 1.1 1.2 1.3 1.4 "Arealstatistikk for Norge". Kartverket (in Norwegian Bokmål). 1 January 2020.
{{#invoke:Sandbox/Premeditated|function_name}}
local wd = require('Module:Wd')
local data = mw.loadData("Module:Sandbox/Premeditated/kommune/data")
local getArgs = require('Module:Arguments').getArgs
local p = {}
function p.test(frame)
local i = 10
local c = 100
return i,c
end
local function getRef(frame)
return frame:callParserFunction{ name = '#tag:ref', args = {
'{{cite web |url=https://www.kartverket.no/kunnskap/Fakta-om-Norge/Arealstatistikk/Arealstatistikk-Norge/ |title=Arealstatistikk for Norge |website=[[Kartverket]] |date=1 January 2020 |language=Norwegian Bokmål}}'
, name = 'Kartverket2020'} }
end
local function round(num, numDecimalPlaces)
return tonumber(string.format("%." .. (numDecimalPlaces or 0) .. "f", num))
end
-- BUILDER!!
local table_sort = {'kommune','totareal','areal','havflate','apentomrade','snoisbre','innsjo','elvtorrfall','myr','skog','dmark','btbygg','industri','annet','landareal'}
local header_sort = {'Nr.','Kommune','Totalt areal','Fastland og øyer','Havflate','Åpent område','Snø, is og bre','Elv med tørrfall','Innsjø','Myr','Skog','Dyrket mark','By- og tettbebyggelse','Industriområde','Annet','Landareal'}
local function sorted_iter(t)
local fin = {}
for i, val in pairs(t) do
for i2, val2 in pairs(table_sort) do
if i == val2 then
if tonumber(val) then
table.insert(fin,i2, tonumber(val))
else
table.insert(fin,i2, val)
end
end
end
end
return fin
end
function p.tabell(frame)
local args = getArgs(frame)
local fylkenr = tonumber(args[1])
local row = ''
local tbl = mw.html.create('table')
tbl
:addClass('wikitable sortable')
:tag('caption'):wikitext(data['fylke'][fylkenr]['fylke']):done()
local header = mw.html.create('tr'):done()
for ih, valh in pairs(header_sort) do
local hData = mw.html.create('th')
:wikitext(valh):done()
header:node(hData)
end
tbl:node(header)
for i, val in pairs(data['nummerserie'][fylkenr]) do
row = mw.html.create('tr'):done()
:tag('td'):wikitext(val):done()
for i1,val2 in pairs(sorted_iter(data['kommune'][val])) do
if type(val2) == 'number' then
local data = mw.html.create('td')
:wikitext(mw.language.getContentLanguage():formatNum(val2)):done()
row:node(data)
else
local data = mw.html.create('td')
:wikitext(val2):done()
row:node(data)
end
end
tbl:node(row)
end
tbl:tag('tr')
:addClass('sortbottom')
:tag('td')
:attr('colspan', 16)
:wikitext('Alle rader med unntak av "nr." og "kommune" er i enheten km². Basert på data hentet fra [[Kartverket]].' .. getRef(frame)):done()
-- local html = tostring(tbl)
-- local dumphtml = require('Module:Dump')._dumphtml
-- return dumphtml(html)
return tostring(tbl)
end
function p.innbprkm(frame)
local args = getArgs(frame)
local knr = tonumber(args['knr']) or tonumber(args[1])
local innb = tonumber(args['innb']) or tonumber(args[2])
local unit = ''
local ref = ''
for nr, val in pairs(args) do
if string.lower(val) == 'enhet' then
unit = ' <small>innb./km²</small>'
elseif string.lower(val) == 'ref' then
ref = getRef(frame)
elseif string.lower(val) == 'wd' then
knr = tonumber(wd._properties{'raw','linked','future','current','normal+','P2504'})
innb = tonumber(wd._property{'raw','current','P1082'})
if not knr or knr == '' then
knr = tonumber(string.match(wd._properties{'raw','linked','future','current','normal+','P300'}, "%d+"))
end
end
end
if pcall(function() return data['kommune'][knr]['landareal'] end) and innb then
return mw.language.getContentLanguage():formatNum(round(innb/tonumber(data['kommune'][knr]['landareal']),2)) .. unit .. ref
elseif pcall(function() return data['fylke'][knr]['landareal'] end) and innb then
return mw.language.getContentLanguage():formatNum(round(innb/tonumber(data['fylke'][knr]['landareal']),2)) .. unit .. ref
else
local qid = mw.wikibase.getEntityIdForTitle( data['kommune'][knr]['kommune'] .. ' kommune',"nnwiki" )
innb = tonumber(wd._property{'raw','current',qid,'P1082'})
if pcall(function() return data['kommune'][knr]['landareal'] end) and innb then
return mw.language.getContentLanguage():formatNum(round(innb/tonumber(data['kommune'][knr]['landareal']),2)) .. unit .. ref
else
return ""
end
end
end
function p.main(frame)
local args = getArgs(frame)
local nr = tonumber(args[1]) or nil
local verdi = 'kommune'
local unit = ''
local ref = ''
for nr2, val in pairs(args) do
if string.lower(val) == 'enhet' then
unit = ' <small>km²</small>'
elseif string.lower(val) == 'ref' then
ref = getRef(frame)
elseif string.lower(val) == 'wd' then
nr = tonumber(wd._properties{'raw','linked','future','current','normal+','P2504'})
if not nr or nr == '' then
nr = tonumber(string.match(wd._properties{'raw','linked','future','current','normal+','P300'}, "%d+"))
end
end
end
if nr == nil then
return ''
end
if args['hent'] then
verdi = string.lower(args['hent'])
elseif nr <= 54 and nr >= 3 then
verdi = 'fylke'
end
if nr <= 54 and nr >= 3 then
if pcall(function() return data['fylke'][nr][verdi] end) then
if type(data['fylke'][nr][verdi]) == "number" then
return mw.language.getContentLanguage():formatNum(data['fylke'][nr][verdi]) .. unit .. ref
else
return data['fylke'][nr][verdi] .. unit .. ref
end
else
error("Not a valid fylkenummer in the list")
end
end
if pcall(function() return data['kommune'][nr][verdi] end) then
if type(data['kommune'][nr][verdi]) == "number" then
return mw.language.getContentLanguage():formatNum(data['kommune'][nr][verdi]) .. unit .. ref
else
return data['kommune'][nr][verdi] .. unit .. ref
end
else
error("Not a valid kommunenummer in the list")
end
end
return p