Modul:Kinfo
Hopp til navigering
Hopp til søk
Modulen «Kinfo» inneholder:
- en funksjon (main) som gjør det mulig for skriptet å hente data fra Modul:Kinfo/data ved å angi kommunenummer eller fylkesnummer.
Parametere[rediger kilde]
For alle funksjoner kan det angis tre ubenevnte parametere:
{{#invoke:Kinfo|funksjon|1|2|3}}
.
main
returnerer i utgangspunktet en verdi etter ønske.- Første verdi etter
main
(1)
må være kommunenummeret, det sendes feilmelding om den ikke finnes i listen. (kreves)- Under
main
kan man kalle påhent=
som default er satt tilkommune
.- Andre verdier som kan brukes med
hent=
er: (per 24. januar 2020 tillates kun en verdi i hent)kommune
som henter navnet på kommunen med stor forbokstav.totAreal
som henter totalt areal inkl. territorial-farvann.areal
som henter areal for fastland og øyer.havflate
som henter havflate (terretorial-farvann).apentOmrade
som henter areal for åpent område.snoIsBre
som henter areal for snø, is og bre.innsjo
som henter areal for innsjø.elvTorrfall
som henter areal for elv med tørrfall.myr
som henter areal for myr.skog
som henter areal for skog.dMark
som henter areal for dyrket mark.btBygg
som henter areal for by- og tettbebyggelse.industri
som henter areal for industriområde.annet
som henter areal for sports- og idrettsplass, alpinbakker, steinbrudd, steintipp, park, flyplass, rullebane, golfbane og gravplass.landareal
som henter areal for landareal (SSB).ferskvatn
som henter areal for ferskvatn (ferskvann inkluderer elver fra 2010 - SSB).
- Andre verdier som kan brukes med
- Under
- Verdier etter
(1)
kan være:enhet
legger på verdien «km²» til slutt (så lenge det ikke er kommune som hentes). (valgfri)ref
legger på en referanse til slutt for hvor dataen er hentet fra. (valgfri)
- Første verdi etter
innbprkm
returnerer en utregnet verdi etter parametere som er gitt.- Ved bruk av
innbprkm
må man kalle påknr=
(kommunenummer) oginnb=
(innbyggere). Kun tallverdier er godkjent, uten formateringer. (kreves)- Verdier etter
knr=
oginnb=
kan være:enhet
legger på verdien «innb./km²» til slutt (så lenge det ikke er kommune som hentes). (valgfri)ref
legger på en referanse til slutt for hvor dataen er hentet fra. (valgfri)
- Verdier etter
- Ved bruk av
tabell
returnerer en tabell for et fylke, med informasjon om alle kommune i fylke med alt av data som finnes om kommunene.- Verdi
(1)
må være et fylkesnummer (under arbeid - kreves).
- Verdi
- Bruk i infoboks
{{#invoke:Kinfo|main|wd|hent=XXXX|ref|enhet}}
- Henter kommunenummer eller fylkesnummer fra Wikidata-element/nærmeste kommune element på WD.{{#invoke:Kinfo|innbprkm|wd}}
- Henter innbyggertall og kommunenummer eller fylkesnummer fra Wikidata-element/nærmeste kommune element på WD.{{#invoke:Kinfo|main|kBefolkning}}
- Henter beste befolkningstall fra Wikidata-element/nærmeste kommune element på WD.{{#invoke:Kinfo|main|knr}}
- Henter beste kommunenummer fra Wikidata-element/nærmeste kommune element på WD.
Eksempel[rediger kilde]
Forklaring | Kode | Resultat | |||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Kommunenummer 301 for Oslo, henter navn. | {{#invoke:Kinfo|main|301}} |
Oslo | |||||||||||||||||||||||||||||||||||||||||||||||||||
Kommunenummer 301 for Oslo, henter navn med ref. | {{#invoke:Kinfo|main|301|ref}} |
Oslo[1] | |||||||||||||||||||||||||||||||||||||||||||||||||||
Kommunenummer 301 for Oslo, henter landareal med enhet. | {{#invoke:Kinfo|main|301|hent=landareal|enhet}} |
426,4 km² | |||||||||||||||||||||||||||||||||||||||||||||||||||
Kommunenummer 301 for Oslo, henter totalt areal inkl. territorial-farvann med enhet og ref. | {{#invoke:Kinfo|main|301|hent=totAreal|enhet|ref}} |
480,75 km²[1] | |||||||||||||||||||||||||||||||||||||||||||||||||||
Kommunenummer 301 for Oslo, henter myr med ref. | {{#invoke:Kinfo|main|301|hent=myr|ref}} |
6,59[1] | |||||||||||||||||||||||||||||||||||||||||||||||||||
Fylkesnummer 34 for Innlandet fylke, henter myr med ref. | {{#invoke:Kinfo|main|34|hent=myr|ref}} |
4 294,29[1] | |||||||||||||||||||||||||||||||||||||||||||||||||||
Fylkesnummer 34 for Innlandet fylke, henter landareal med enhet og ref. | {{#invoke:Kinfo|main|34|hent=landareal|enhet|ref}} |
49 390,84 km²[2] | |||||||||||||||||||||||||||||||||||||||||||||||||||
Kommunenummer 301 for Oslo kommune, henter og regner ut innbygger tetthet. | {{#invoke:Kinfo|innbprkm|knr=301|innb=673469|ref}} |
1 579,43[2] | |||||||||||||||||||||||||||||||||||||||||||||||||||
Kommunenummer 301 for Oslo kommune, henter og regner ut innbygger tetthet med enhet | {{{#invoke:Kinfo|innbprkm|knr=301|innb=673469|enhet}} |
1 579,43 innb./km² | |||||||||||||||||||||||||||||||||||||||||||||||||||
Fylkesnummer 3 for Oslo, henter alle kommuner og legger alle verdier inn i en tabell. | {{#invoke:Kinfo|tabell|3}} |
|
Referanser[rediger kilde]
- ↑ 1,0 1,1 1,2 1,3 1,4 «Arealstatistikk for Norge». Kartverket. 1. januar 2020.
- ↑ 2,0 2,1 2,2 «09280: Areal (km²), etter region, arealtype, statistikkvariabel og år». Statistisk sentralbyrå. 1. januar 2020.
local wd = require('Module:Wd-norsk') local data = mw.loadData("Modul:Kinfo/data") local getArgs = require('Module:Arguments').getArgs local p = {} function p.kBefolkning(frame) -- TODO! Get population based on date insted of preferred value. local args = getArgs(frame) local knr = tonumber(wd._egenskaper{'rå','fremtid','nåværende','normal+','best','P2504'}) or 0 for nr, val in pairs(args) do if string.lower(val) == 'aar' then if knr == 0 then local qid = mw.wikibase.getEntityIdForTitle( mw.title.getCurrentTitle().text .. ' kommune',"nnwiki" ) return tonumber(frame:callParserFunction{ name = '#time:Y', args = wd._kvalifikator{'rå','enkel',qid,'P1082','P585'} }) else return tonumber(frame:callParserFunction{ name = '#time:Y', args = wd._kvalifikator{'rå','enkel','P1082','P585'} }) end end end if knr == 0 then local qid = mw.wikibase.getEntityIdForTitle( mw.title.getCurrentTitle().text .. ' kommune',"nnwiki" ) if qid then return wd._egenskap{'referanser','nåværende',qid,'P1082'} or "" else return "" end else return wd._egenskap{'referanser','nåværende','P1082'} or "" end end function p.knr(frame) local knr = tonumber(wd._egenskaper{'rå','fremtid','nåværende','normal+','best','P2504'}) or 0 if knr == 0 then local qid = mw.wikibase.getEntityIdForTitle( mw.title.getCurrentTitle().text .. ' kommune',"nnwiki" ) knr = tonumber(wd._egenskaper{'rå','fremtid','nåværende','normal+','best',qid,'P2504'}) or 0 end if knr == 0 then return "" end return knr end local function getRef(frame, definition) if definition == "landareal" or definition == "ferskvatn" then return frame:callParserFunction{ name = '#tag:ref', args = { '{{kilde www |url=https://www.ssb.no/statbank/table/09280/ |tittel=09280: Areal (km²), etter region, arealtype, statistikkvariabel og år |nettside=[[Statistisk sentralbyrå]] |dato=1. januar 2020 |språk=norsk bokmål}}' , name = 'SSB2020'} } else return frame:callParserFunction{ name = '#tag:ref', args = { '{{kilde www |url=https://www.kartverket.no/kunnskap/Fakta-om-Norge/Arealstatistikk/Arealstatistikk-Norge/ |tittel=Arealstatistikk for Norge |nettside=[[Kartverket]] |dato=1. januar 2020 |språk=norsk bokmål}}' , name = 'Kartverket2020'} } end end local function tablelength(T) local count = 0 for _ in pairs(T) do count = count + 1 end return count end local function round(num, numDecimalPlaces) return tonumber(string.format("%." .. (numDecimalPlaces or 0) .. "f", num)) end local table_sort = {'kommune','totareal','areal','havflate','apentomrade','snoisbre','innsjo','elvtorrfall','myr','skog','dmark','btbygg','industri','annet','landareal','ferskvatn'} 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','Ferskvatn'} 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 containsValueFylke(value) return data['fylke'][value] ~= nil end function p.tabell(frame) local args = getArgs(frame) local fylkenr = tonumber(args[1]) or 0 local row = '' if containsValueFylke == nil then error("Not a valid fylkenummer") end 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', tablelength(header_sort)) :wikitext('Alle rader med unntak av "nr." og "kommune" er i enheten km². Basert på tall hentet fra [[Kartverket]] og [[Statistisk sentralbyrå|SSB]].' .. getRef(frame) .. getRef(frame,'landareal')):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,'landareal') elseif string.lower(val) == 'wd' then knr = tonumber(wd._egenskaper{'rå','fremtid','nåværende','normal+','best','P2504'}) or 0 innb = tonumber(wd._egenskap{'rå','nåværende','P1082'}) or 0 if not knr or knr == '' then knr = tonumber(string.match(wd._egenskaper{'rå','fremtid','nåværende','normal+','best','P300'}, "%d+")) or 0 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 = "" if knr ~= 0 and pcall(function() return data['kommune'][knr]['kommune'] end) then qid = mw.wikibase.getEntityIdForTitle( data['kommune'][knr]['kommune'] .. ' kommune',"nnwiki" ) else qid = mw.wikibase.getEntityIdForTitle( mw.title.getCurrentTitle().text .. ' kommune',"nnwiki" ) end knr = tonumber(wd._egenskaper{'rå','fremtid','nåværende','normal+','best',qid,'P2504'}) innb = tonumber(wd._egenskap{'rå','nåværende','best',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 if args['hent'] then ref = getRef(frame, string.lower(args['hent'])) else ref = getRef(frame) end elseif string.lower(val) == 'wd' then nr = tonumber(wd._egenskaper{'rå','fremtid','nåværende','normal+','best','P2504'}) or 0 if nr == 0 then --Fylke nr = tonumber(string.match(wd._egenskaper{'rå','fremtid','nåværende','normal+','best','P300'}, "%d+")) or 0 end if nr == 0 then qid = mw.wikibase.getEntityIdForTitle( mw.title.getCurrentTitle().text .. ' kommune',"nnwiki" ) nr = tonumber(wd._egenskaper{'rå','fremtid','nåværende','normal+','best',qid,'P2504'}) 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 <= 56 and nr >= 3 then if pcall(function() return data['fylke'][nr][verdi] end) then if type(tonumber(data['fylke'][nr][verdi])) == "number" then return mw.language.getContentLanguage():formatNum(tonumber(data['fylke'][nr][verdi])) .. unit .. ref else if data['fylke'][nr][verdi] then return data['fylke'][nr][verdi] .. unit .. ref else return "" end end else error("Not a valid fylkenummer in the list") end end if pcall(function() return data['kommune'][nr][verdi] end) then if type(tonumber(data['kommune'][nr][verdi])) == "number" then return mw.language.getContentLanguage():formatNum(tonumber(data['kommune'][nr][verdi])) .. unit .. ref else if data['kommune'][nr][verdi] then return data['kommune'][nr][verdi] .. unit .. ref else return "" end end else return "utdatert" --error("Not a valid kommunenummer in the list") end end return p