FileAttachmentDynamic = function(filename) {
return new Function("FileAttachment", `return FileAttachment("${filename}")`)(FileAttachment)
}
// Vaihdetaan tekstin väri
color = function(vari) {
if(vari > 0){
return "green"
}else{
return "red"
}
}
// Pyöristys
pyoristys = function(n, places) {
if (!places) return Math.round(n);
const d = 10 ** places;
return Math.round(n * d) / d;
}
//Euromerkintä
eurot = function(number) {
return number.toLocaleString('fi-FI', { style: 'currency', currency: 'EUR',minimumFractionDigits: 0 });
}
// Euromuutoksen laskeminen kertoimella
muutoskerroin = function(x, y) {
return (1+x/100)*y;
}
// Muutosprosentti
muutosprosentti = function(x, y) {
return pyoristys(((x-y)/y)*100,1);
}
// Tuhatjakaja
tuhatjakaja = function(x) {
return x/1000;
}
// Euromuutoksen laskeminen kertoimella
palkkakerroin = function(x, y) {
return 100*((1+x/100)*(1+y/100)-1);
}
// Jako-osuuden asukaskerroin
asukaskerroin = function(x, y) {
return (x/y);
}
// Jako-osuuden veroprosenttikerroin miinus1/miinus3 vuotta miinus 1 vuoden kerroin
veroprosenttikerroin = function(x, y) {
return (x/y);
}
// Kunnan muok. kunnallisvero, alkuvuosi ja loppuvuosi
kunnallisvero_muokkaus = function(kunnallisvero,asukaskerroin,veroprosentti) {
return kunnallisvero*asukaskerroin*veroprosentti;
}
//Tekstimuutokset
fn_nousu_lasku_txt = function(arvo){
if(arvo > 0) {
return "kasvanut"
}
else {
return "laskenut";
}
}
//TARVITAAN KARTOISSA
serialize = {
const xmlns = "http://www.w3.org/2000/xmlns/";
const xlinkns = "http://www.w3.org/1999/xlink";
const svgns = "http://www.w3.org/2000/svg";
return function serialize(svg) {
svg = svg.cloneNode(true);
const fragment = window.location.href + "#";
const walker = document.createTreeWalker(svg, NodeFilter.SHOW_ELEMENT);
while (walker.nextNode()) {
for (const attr of walker.currentNode.attributes) {
if (attr.value.includes(fragment)) {
attr.value = attr.value.replace(fragment, "#");
}
}
}
svg.setAttributeNS(xmlns, "xmlns", svgns);
svg.setAttributeNS(xmlns, "xmlns:xlink", xlinkns);
const serializer = new window.XMLSerializer;
const string = serializer.serializeToString(svg);
return new Blob([string], {type: "image/svg+xml"});
};
}
function toSVG(chart) {
if (chart.nodeName !== "FIGURE") {
return chart;
}
// the chart needs to be in the body if we want to read values, positions, sizes…
document.body.appendChild(chart);
const [x0, y0, width, height] = getBounds([chart]);
const nodes = [];
for (const node of d3
.select(chart)
.selectChildren("h1,h2,h3,div,figcaption,svg")) {
switch (node.nodeName.toLowerCase()) {
case "div":
{
const children = d3.select(node).selectChildren("div,span");
const height = getBounds([node, ...children])[3] + 2;
const svg = d3
.select(chart)
.append("svg")
.attr("width", width)
.attr("height", height);
nodes.push(svg.node());
const swatches = svg
.selectAll()
.data(
Array.from(children, (d) => {
const svg = d3.select(d).select("svg").node();
const bbox = svg.getBBox();
return {
style: window.getComputedStyle(d),
svg,
width: bbox.width,
height: bbox.height,
text: d.textContent,
bounds: getBounds([d])
};
})
)
.join("g")
.attr(
"transform",
(d) => `translate(${d.bounds[0] - x0},${10 + d.bounds[1] - y0})`
);
swatches
.append((d) => d.svg) // "rect")
.attr("width", (d) => d.width)
.attr("height", (d) => d.height)
.attr("y", (d) => `${-parseFloat(d.height) / 2}px`);
swatches
.append("text")
.text((d) => d.text)
.attr("x", (d) => d.width)
.attr("dx", 5)
.attr("dy", "0.38em")
.attr("font-family", (d) => d.style.fontFamily)
.attr("font-size", (d) => d.style.fontSize)
.attr("fill", (d) => d.style.color);
}
break;
case "figcaption":
case "h1":
case "h2":
case "h3":
{
const svg = d3
.select(chart)
.append("svg")
.attr("width", width)
.attr("overflow", "visible");
nodes.push(svg.node());
const children = d3.select(node).selectChildren();
let h = 0;
for (const d of children.size() > 0
? children.selectChildren()
: [node]) {
const style = window.getComputedStyle(d);
const t = svg
.append("g")
.attr("transform", `translate(0,${h})`)
.append(() =>
d3
.select(
Plot.text([d.textContent], {
text: (d) => d,
lineWidth:
(1.06 * parseFloat(style.width)) /
parseFloat(style.fontSize),
lineHeight: 1.2,
frameAnchor: "top-left"
}).plot()
)
.select("text")
.attr("font-family", style.fontFamily)
.attr("font-size", 1.08 * parseFloat(style.fontSize))
.attr("font-weight", style.fontWeight)
.attr("fill", style.color)
.node()
);
h += getBounds([t.node()])[3] + 4;
}
svg.attr("height", h);
}
break;
case "svg":
d3.select(chart).append(() => node);
nodes.push(node);
break;
}
}
return serializeAll(nodes)
.then((blob) => blob.text())
.then((c) => {
document.body.removeChild(chart);
return Object.assign(svg`${c}`, chart);
});
}
// Given an array of SVG elements, composites them into a single SVG element,
// and then serializes the result to a blob.
async function serializeAll(elements, {padding = 10} = {}) {
const fragment = location.href + "#";
let root;
if (elements.length === 1) {
root = elements[0].cloneNode(true); // optimize common case
} else {
const [ox, oy, dx, dy] = getBounds(elements);
root = document.createElementNS(svgns, "svg");
root.setAttribute("width", dx + 2 * padding);
root.setAttribute("height", dy + 2 * padding);
root.setAttribute("viewBox", [-padding, -padding, dx + 2 * padding, dy + 2 * padding]);
for (const element of elements) {
const svg = root.appendChild(element.cloneNode(true));
const { x, y, width, height } = element.getBoundingClientRect();
svg.setAttribute("x", x - ox);
svg.setAttribute("y", y - oy);
svg.setAttribute("width", width);
svg.setAttribute("height", height);
}
}
const walker = document.createTreeWalker(root, NodeFilter.SHOW_ELEMENT);
while (walker.nextNode()) {
const node = walker.currentNode;
for (const attr of node.attributes) {
if (attr.value.includes(fragment)) {
attr.value = attr.value.replace(fragment, "#");
}
}
}
root.setAttributeNS(xmlns, "xmlns", svgns);
root.setAttributeNS(xmlns, "xmlns:xlink", xlinkns);
const serializer = new XMLSerializer();
const string = serializer.serializeToString(root);
return new Blob([string], { type: "image/svg+xml" });
}
function getBounds(elements) {
let x1 = Infinity;
let y1 = x1;
let x2 = -x1;
let y2 = x2;
for (const element of elements) {
const { x, y, width, height } = element.getBoundingClientRect();
if (x < x1) x1 = x;
if (x + width > x2) x2 = x + width;
if (y < y1) y1 = y;
if (y + height > y2) y2 = y + height;
}
return [x1, y1, x2 - x1, y2 - y1];
}
// based on https://observablehq.com/@gka/cheap-fit-text-to-circle
function lines(text, targetWidth) {
const CHAR_W = {
"a":7,"B":8,"C":8,"c":6,"D":9,"f":4,"G":9,"H":9,"I":3,"i":3,"J":5,"j":3,"K":8,"k":6,
"l":3,"M":11,"m":11,"N":9,"O":9,"P":8,"Q":9,"R":8,"r":4,"S":8,"s":6,"t":4,"U":9,"v":6,
"W":11,"w":9,"x":6,"y":6,"z":5,".":2,",":2,":":2,";":2
};
function measureWidth(text) { return d3.sum(text, char => CHAR_W[char] || CHAR_W["a"]) * 0.8; };
const words = text.split(" ");
let line;
let lineWidth0 = Infinity;
const lines = [];
for (let i = 0, n = words.length; i < n; ++i) {
let lineText1 = (line ? line.text + " " : "") + words[i];
let lineWidth1 = measureWidth(lineText1);
if ((lineWidth0 + lineWidth1) / 2 < targetWidth) {
line.width = lineWidth0 = lineWidth1;
line.text = lineText1;
} else {
lineWidth0 = measureWidth(words[i]);
line = {width: lineWidth0, text: words[i]};
lines.push(line);
}
}
return lines;
}
xmlns = "http://www.w3.org/2000/xmlns/"
xlinkns = "http://www.w3.org/1999/xlink"
svgns = "http://www.w3.org/2000/svg"
Avainsanat
Kuntien kuukausiraportti, väestö, yhteistyö, avoin lähdekoodi, Tilastokeskus, tietojohtaminen
Verotus
Väestönmuutokset - Väestöennakko, kolme ikäluokkaa
Kuntaliitto käyttää kunnallisveron perustana kolmea ikäluokkaa. Ikäluokittelu huomioi palkansaajat ja eläkeläiset.
Vuosi | Yhteensä | 0-18 | 0-18 % | 19-64 | 19-64 % | 65+ | 65+ % |
---|---|---|---|---|---|---|---|
2000 | 5703 | 1184 | 20.76 | 3245 | 56.90 | 1274 | 22.34 |
2001 | 5612 | 1135 | 20.22 | 3201 | 57.04 | 1276 | 22.74 |
2002 | 5596 | 1142 | 20.41 | 3176 | 56.75 | 1278 | 22.84 |
2003 | 5556 | 1109 | 19.96 | 3158 | 56.84 | 1289 | 23.20 |
2004 | 5524 | 1086 | 19.66 | 3137 | 56.79 | 1301 | 23.55 |
2005 | 5565 | 1098 | 19.73 | 3152 | 56.64 | 1315 | 23.63 |
2006 | 5513 | 1059 | 19.21 | 3122 | 56.63 | 1332 | 24.16 |
2007 | 5491 | 1045 | 19.03 | 3115 | 56.73 | 1331 | 24.24 |
2008 | 5414 | 1008 | 18.62 | 3067 | 56.65 | 1339 | 24.73 |
2009 | 5362 | 976 | 18.20 | 3049 | 56.86 | 1337 | 24.93 |
2010 | 5335 | 973 | 18.24 | 3015 | 56.51 | 1347 | 25.25 |
2011 | 5246 | 928 | 17.69 | 2939 | 56.02 | 1379 | 26.29 |
2012 | 5174 | 913 | 17.65 | 2849 | 55.06 | 1412 | 27.29 |
2013 | 5105 | 902 | 17.67 | 2771 | 54.28 | 1432 | 28.05 |
2014 | 4984 | 875 | 17.56 | 2681 | 53.79 | 1428 | 28.65 |
2015 | 4928 | 862 | 17.49 | 2621 | 53.19 | 1445 | 29.32 |
2016 | 4858 | 845 | 17.39 | 2518 | 51.83 | 1495 | 30.77 |
2017 | 4829 | 846 | 17.52 | 2478 | 51.31 | 1505 | 31.17 |
2018 | 4792 | 821 | 17.13 | 2450 | 51.13 | 1521 | 31.74 |
2019 | 4688 | 779 | 16.62 | 2377 | 50.70 | 1532 | 32.68 |
2020 | 4644 | 771 | 16.60 | 2336 | 50.30 | 1537 | 33.10 |
2021 | 4669 | 782 | 16.75 | 2320 | 49.69 | 1567 | 33.56 |
2022 | 4569 | 753 | 16.48 | 2235 | 48.92 | 1581 | 34.60 |
2023 | 4568 | 762 | 16.68 | 2222 | 48.64 | 1584 | 34.68 |
2024M09* | 4506 | 715 | 15.87 | 2213 | 49.11 | 1578 | 35.02 |
Väestökehityksen muutos - kolme ikäluokkaa
0-18-vuotiaat
Ikäluokkien kehitystä aikaisempiin vuosiin vertailtaessa 0-18-vuotiaiden %-osuus oli 2024M09* yhteensä 15.87. Jos verrataan lukemaa kahteen edellisvuoteen 2022 ja 2023, muutosta on tullut -0.61 (2022) ja -0.81 (2023)
19-64-vuotiaat
19-64-vuotiaiden palkansaajien %-osuus oli 2024M09* yhteensä 49.11. Edellisvuosiin 2022 ja 2023 verrattuna, muutosta on tullut 0.19 (2022) ja 0.47 (2023)
65+-vuotiaat
65+-vuotiaiden eläkeläisten prosenttiosuus kokonaisuudesta oli 2024M09* yhteensä 35.02. Edellisvuosiin 2022 ja 2023 verrattuna, muutosta on tullut 0.42 (2022) ja 0.34 (2023 )
Ansiotulot
Tilasto sisältää tuloverotuksen valmistumisen mukaiset tiedot kaikista henkilöasiakkaista. Tilastossa ei huomioida muutosverotuksen tietoja. Lähde: (Vero.fi 2024a)
Vuosi | Palkkatulot | PM % | Eläketulot | EM % | Työttömyysturva | TM % | Muut sos.turva | MM % | Maa- ja metsätalous | MTM % | Elinkeinotoiminta | ELM % | Ansiotulot | AM % |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
2014 | 51,480,830 | NA | 29,489,951 | NA | 4,691,536 | NA | 2,135,070 | NA | 2,647,678 | NA | 6,501,972 | NA | 96,947,037 | NA |
2015 | 48,282,121 | -6.21 | 30,008,628 | 1.76 | 5,372,970 | 14.52 | 2,016,531 | -5.55 | 2,201,110 | -16.87 | 6,209,820 | -4.49 | 94,091,180 | -2.95 |
2016 | 48,461,584 | 0.37 | 30,736,717 | 2.43 | 4,591,045 | -14.55 | 2,009,597 | -0.34 | 2,265,394 | 2.92 | 6,379,126 | 2.73 | 94,443,463 | 0.37 |
2017 | 49,387,539 | 1.91 | 31,416,376 | 2.21 | 4,059,946 | -11.57 | 1,916,364 | -4.64 | 2,121,558 | -6.35 | 5,992,114 | -6.07 | 94,893,897 | 0.48 |
2018 | 50,522,300 | 2.30 | 31,488,753 | 0.23 | 3,440,970 | -15.25 | 1,808,390 | -5.63 | 2,228,628 | 5.05 | 6,001,038 | 0.15 | 95,490,079 | 0.63 |
2019 | 51,633,974 | 2.20 | 32,546,700 | 3.36 | 3,105,514 | -9.75 | 1,840,203 | 1.76 | 2,283,371 | 2.46 | 6,257,269 | 4.27 | 97,667,031 | 2.28 |
2020 | 50,130,084 | -2.91 | 33,451,633 | 2.78 | 3,888,127 | 25.20 | 1,814,956 | -1.37 | 1,986,886 | -12.98 | 6,355,735 | 1.57 | 97,627,421 | -0.04 |
2021 | 51,836,228 | 3.40 | 33,532,331 | 0.24 | 3,911,555 | 0.60 | 1,968,143 | 8.44 | 1,898,303 | -4.46 | 6,491,654 | 2.14 | 99,638,214 | 2.06 |
2022 | 55,743,373 | 7.54 | 34,545,665 | 3.02 | 3,461,405 | -11.51 | 2,081,414 | 5.76 | 2,112,513 | 11.28 | 5,540,314 | -14.65 | 103,484,684 | 3.86 |
Ansiotulojen kehitys
Palkkatulot olivat vuonna 2022 yhteensä 55,743,373. Muutos edelliseen 2021 vuoteen oli 7.54. Eläketulojen osalta muutos oli 3.02 (3.02)
Vähennykset
Tilaston vähennyseristä yleisesti: Jos verovelvolliselle ei ole määrätty verotettavasta tulosta veroja tai niiden määrä on pienempi kuin verosta myönnetty vähennys, myönnettyä vähennystä ei ole voitu vähentää kokonaisuudessaan. Tällaisissa tilanteissa verotuksessa vähennetty määrä on pienempi kuin myönnetty määrä. Sama periaate pätee myös tuloista tehtävien vähennysten osalta.
*Lyhenteet:
PV % = Palkansaajan vakuutusmaksujen %-osuus palkoista
E % = Eläketulovähennyksen %-osuus eläkkeistä
A % = Vuosittainen muutos ansiotulot-vähennykset*
Lähde: (Vero.fi 2024a)
Vuosi | Palkansaajan vak.maksut | PV % | Vähennetyt matkakustan. | Muut tulonhankk.vähenn. | Eläketulovähennys | E % | Ansiotulovähennys | Perusvähennys | Muut vähennykset | Vähennykset yht. | Väh.aste | Ansiotulot-vähennykset | A % |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
2014 | 32,996,182 | 7.02 | 10,515,057 | 14,740,244 | 29,893,588 | 20.78 | 34,332,906 | 13,520,629 | 1,159,157 | 137,157,763 | 20.01 | 548,401,114 | NA |
2015 | 34,527,129 | 7.20 | 9,663,164 | 15,031,407 | 31,568,620 | 21.34 | 33,810,533 | 14,495,603 | 1,208,690 | 140,305,146 | 20.08 | 558,316,669 | 1.81 |
2016 | 37,558,214 | 7.62 | 9,287,428 | 15,268,526 | 31,180,264 | 20.49 | 33,660,485 | 14,817,154 | 1,096,444 | 142,868,515 | 19.94 | 573,607,853 | 2.74 |
2017 | 46,673,871 | 9.22 | 9,407,284 | 17,462,760 | 32,018,808 | 20.25 | 34,672,097 | 15,623,217 | 1,059,448 | 156,917,485 | 21.42 | 575,774,142 | 0.38 |
2018 | 51,373,340 | 9.63 | 10,193,385 | 17,863,570 | 31,642,727 | 19.43 | 35,249,532 | 16,019,546 | 1,075,751 | 163,417,851 | 21.46 | 598,103,526 | 3.88 |
2019 | 53,811,966 | 9.62 | 10,486,576 | 18,326,137 | 31,212,577 | 18.49 | 35,593,000 | 17,848,170 | 1,070,505 | 168,348,931 | 21.25 | 624,002,295 | 4.33 |
2020 | 52,738,391 | 9.44 | 9,383,158 | 18,754,058 | 31,925,351 | 18.16 | 34,894,932 | 20,412,225 | 1,173,984 | 169,282,099 | 21.00 | 636,792,368 | 2.05 |
2021 | 57,807,221 | 9.72 | 9,953,689 | 19,456,911 | 32,233,771 | 17.85 | 35,216,206 | 21,437,603 | 1,109,425 | 177,214,826 | 20.92 | 669,774,841 | 5.18 |
2022 | 61,446,316 | 9.61 | 12,921,131 | 19,888,239 | 34,528,157 | 18.46 | 36,329,798 | 22,238,701 | 1,100,596 | 188,452,938 | 21.02 | 708,271,407 | 5.75 |
Kiinteistövero
Kunnan alueella sijaitsevista kiinteistöistä maksuunpantu kiinteistövero tilitetään kokonaisuudessaan kyseiselle kunnalle. Tilaston avulla voi arvioida kunnan kiinteistöverotuottojen suuruutta. Tilastoluvut eivät kuitenkaan kerro aivan tarkasti kunnille todellisuudessa tilitetyistä kiinteistöverotuotoista, koska maksuunpannun kiinteistöveron määrä voi muuttua muutosverotuksen myötä ja nämä muutokset eivät päivity tilastolukuihin. Lisäksi maksuunpantua kiinteistöveroa ei välttämättä saada kokonaisuudessaan kerättyä. Lähde: (Vero.fi 2024b)
Vuosi | Yhteensä | Lukumäärä | Muutos % |
---|---|---|---|
2014 | 1,508,239 | 5391 | NA |
2015 | 1,642,687 | 5413 | 8.91 |
2016 | 1,569,802 | 5401 | -4.44 |
2017 | 1,497,742 | 5383 | -4.59 |
2018 | 1,625,584 | 5382 | 8.54 |
2019 | 1,651,029 | 5375 | 1.57 |
2020 | 1,632,784 | 5394 | -1.11 |
2021 | 1,637,718 | 5411 | 0.30 |
2022 | 1,750,533 | 5425 | 6.89 |
2023 | 1,865,218 | 5415 | 6.55 |
2024 (ennakkotieto) | 1,901,502 | 5402 | 1.95 |
Kiinteistöverojen kehitys
Kiinteistöverojen määrä oli vuonna 2024 (ennakkotieto) yhteensä 1,901,502. Muutos edelliseen vuoteen 2023 oli 1.95.
Lähteet
Vero.fi. 2024a. 6.01 Yleisesti verovelvollisten merkittävimmät tuloerät alueittain. Vero.fi. https://vero2.stat.fi/PXWeb/pxweb/fi/Vero/Vero__Henkiloasiakkaiden_tuloverot__lopulliset__alue/tulot_102.px/.
———. 2024b. Kiinteistöverotilastojen sisältökuvaus ja lukuohje. Vero.fi. https://www.vero.fi/tietoa-verohallinnosta/tilastot/tilastotietokannan-sisaltokuvaus-ja-lukuohje/kiinteistoverotilastojen-lukuohje/#tilasto1.1.