{"id":26309,"date":"2025-09-15T10:50:38","date_gmt":"2025-09-15T10:50:38","guid":{"rendered":"https:\/\/remato.com\/blog\/kattokaltevuuslaskin-ilmainen-suhteet-asteet-ja-kaltevuudet\/"},"modified":"2025-09-16T09:39:14","modified_gmt":"2025-09-16T09:39:14","slug":"kattokaltevuuslaskin-ilmainen-suhteet-asteet-ja-kaltevuudet","status":"publish","type":"post","link":"https:\/\/remato.com\/fi\/blog\/kattokaltevuuslaskin-ilmainen-suhteet-asteet-ja-kaltevuudet\/","title":{"rendered":"Kattokaltevuuslaskin [ilmainen] \u2013 suhteet, asteet ja kaltevuudet"},"content":{"rendered":"\n<p>Tarkat kattokaltevuusmittaukset ovat kriittisi\u00e4 ammattilaisille. Katon kaltevuus vaikuttaa materiaalien m\u00e4\u00e4r\u00e4\u00e4n, ty\u00f6voiman tarpeisiin, turvallisuusvaatimuksiin ja rakennusm\u00e4\u00e4r\u00e4ysten noudattamiseen. Pienikin virhe voi johtaa hukkaan heitettyyn aikaan, v\u00e4\u00e4riin tilauksiin tai kalliisiin uudelleent\u00f6ihin.<\/p>\n\n<p>T\u00e4m\u00e4 ilmainen <strong>kattokaltevuuslaskin<\/strong> antaa urakoitsijoille ja alihankkijoille nopeat muunnokset nousu-juoksusuhteiden, kulmien ja kertoimien v\u00e4lill\u00e4. Se on k\u00e4yt\u00e4nn\u00f6llinen ty\u00f6kalu, jota voit k\u00e4ytt\u00e4\u00e4 ty\u00f6maalla mittausten tarkistamiseen, tarjousten valmisteluun ja eritelmien jakamiseen tiimisi tai asiakkaidesi kanssa.<\/p>\n\n<p>Laskimen lis\u00e4ksi l\u00f6yd\u00e4t <strong>kattokaltevuustaulukon<\/strong>, keskeiset kaavat ja k\u00e4yt\u00e4nn\u00f6n ohjeita siit\u00e4, milloin kaltevuus on t\u00e4rkeint\u00e4 rakentamisessa.<\/p>\n\n<div id=\"roof-pitch-calculator\" class=\"p-16 border border-grey-200 border-radius-8\">\n  <h2 class=\"font-size-20 text-center\" style=\"margin-top:12px;margin-bottom:24px;\">\n    Kattokaltevuuslaskin  <\/h2>\n\n  <div style=\"display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:24px;\">\n    <!-- Column A: triangle inputs -->\n    <div>\n      <!-- Rise -->\n      <label for=\"rp-rise\"><strong>Nousu (A)<\/strong><\/label>\n      <div style=\"display:flex;gap:8px;align-items:center;margin:6px 0 6px;\">\n        <input id=\"rp-rise\" type=\"text\" inputmode=\"decimal\" style=\"flex:1;\">\n        <select id=\"rp-rise-unit\">\n          <option value=\"m\" selected>m<\/option>\n          <option value=\"cm\">cm<\/option>\n          <option value=\"mm\">mm<\/option>\n          <option value=\"ft\">ft<\/option>\n          <option value=\"in\">in<\/option>\n          <option value=\"yd\">yd<\/option>\n          <option value=\"ft-in\">ft \/ in<\/option>\n          <option value=\"m-cm\">m \/ cm<\/option>\n        <\/select>\n      <\/div>\n      <div style=\"opacity:.8;font-size:.95rem;margin-bottom:14px;\">\n        Pystysuora nousu mitatun juoksun aikana.      <\/div>\n\n      <!-- Run -->\n      <label for=\"rp-run\"><strong>Juoksupituus (B)<\/strong><\/label>\n      <div style=\"display:flex;gap:8px;align-items:center;margin:6px 0 6px;\">\n        <input id=\"rp-run\" type=\"text\" inputmode=\"decimal\" style=\"flex:1;\">\n        <select id=\"rp-run-unit\">\n          <option value=\"m\" selected>m<\/option>\n          <option value=\"cm\">cm<\/option>\n          <option value=\"mm\">mm<\/option>\n          <option value=\"ft\">ft<\/option>\n          <option value=\"in\">in<\/option>\n          <option value=\"yd\">yd<\/option>\n          <option value=\"ft-in\">ft \/ in<\/option>\n          <option value=\"m-cm\">m \/ cm<\/option>\n        <\/select>\n      <\/div>\n      <div style=\"opacity:.8;font-size:.95rem;margin-bottom:14px;\">\n        Vaakasuora et\u00e4isyys, jota k\u00e4ytet\u00e4\u00e4n kaltevuudessa (NA k\u00e4ytt\u00e4\u00e4 yleisesti 12 tuumaa).      <\/div>\n\n      <!-- Rafter -->\n      <div style=\"display:flex;justify-content:space-between;align-items:center;\">\n        <label for=\"rp-rafter\"><strong>Kattotuolin pituus (C)<\/strong><\/label>\n        <label style=\"display:flex;gap:6px;align-items:center;cursor:pointer;\">\n          <input id=\"rp-lock-rafter\" type=\"checkbox\">\n          <span>Lukitse<\/span>\n        <\/label>\n      <\/div>\n      <div style=\"display:flex;gap:8px;align-items:center;margin:6px 0 6px;\">\n        <input id=\"rp-rafter\" type=\"text\" inputmode=\"decimal\" style=\"flex:1;\">\n        <select id=\"rp-rafter-unit\">\n          <option value=\"m\" selected>m<\/option>\n          <option value=\"cm\">cm<\/option>\n          <option value=\"mm\">mm<\/option>\n          <option value=\"ft\">ft<\/option>\n          <option value=\"in\">in<\/option>\n          <option value=\"yd\">yd<\/option>\n          <option value=\"ft-in\">ft \/ in<\/option>\n          <option value=\"m-cm\">m \/ cm<\/option>\n        <\/select>\n      <\/div>\n      <div style=\"opacity:.8;font-size:.95rem;margin-bottom:14px;\">\n        Kaltevuuden pituus r\u00e4yst\u00e4\u00e4lt\u00e4 harjalle (hypotenuusa).      <\/div>\n\n      <!-- Angle -->\n      <label for=\"rp-angle\"><strong>Katon kaltevuus (D)<\/strong><\/label>\n      <div style=\"display:flex;gap:8px;align-items:center;margin:6px 0 6px;\">\n        <input id=\"rp-angle\" type=\"text\" inputmode=\"decimal\" style=\"flex:1;\">\n        <select id=\"rp-angle-unit\">\n          <option value=\"deg\" selected>ast<\/option>\n          <option value=\"rad\">rad<\/option>\n        <\/select>\n      <\/div>\n      <div style=\"opacity:.8;font-size:.95rem;margin-bottom:14px;\">\n        Katto- ja vaakasuoran v\u00e4linen kulma.      <\/div>\n\n      <!-- Percent -->\n      <label for=\"rp-percent\"><strong>Katon kaltevuus (%) (D)<\/strong><\/label>\n      <input id=\"rp-percent\" type=\"text\" inputmode=\"decimal\" style=\"width:100%;margin:6px 0 6px;\">\n      <div style=\"opacity:.8;font-size:.95rem;margin-bottom:14px;\">\n        Kaltevuusprosentti = nousu \u00f7 etenem\u00e4 \u00d7 100.      <\/div>\n\n      <!-- Ratio x:12 -->\n      <label for=\"rp-ratio\"><strong>Katon kaltevuus (x:12) (D)<\/strong><\/label>\n      <div style=\"display:flex;align-items:center;gap:8px;margin:6px 0 6px;\">\n        <input id=\"rp-ratio\" type=\"text\" inputmode=\"decimal\" style=\"flex:1;\">\n        <span style=\"opacity:.8\">:12<\/span>\n      <\/div>\n      <div style=\"opacity:.8;font-size:.95rem;margin-bottom:14px;\">\n        Pohjois-Amerikan muoto (nousu per 12 yksikk\u00f6\u00e4 etenemist\u00e4).      <\/div>\n    <\/div>\n\n    <!-- Column B: pitch formats + results -->\n    <div>\n      <!-- Multiplier + area -->\n      <div class=\"p-12 border border-grey-200 border-radius-8 bg-white\" style=\"margin-top:8px;\">\n        <div style=\"display:flex;justify-content:space-between;margin-bottom:6px;\">\n          <span>Kaltevuuskerroin<\/span>\n          <strong id=\"rp-multiplier\">1.000<\/strong>\n        <\/div>\n        <div style=\"display:grid;grid-template-columns:1fr auto;gap:8px;align-items:center;margin-top:10px;\">\n          <input id=\"rp-plan-area\" type=\"text\" inputmode=\"decimal\" placeholder=\"0.0\">\n          <select id=\"rp-area-unit\">\n            <option value=\"m2\" selected>m\u00b2<\/option>\n            <option value=\"ft2\">ft\u00b2<\/option>\n          <\/select>\n        <\/div>\n        <div style=\"display:flex;justify-content:space-between;margin-top:8px;\">\n          <span>Pinta-ala<\/span>\n          <strong id=\"rp-surface-area\">0.0 m\u00b2<\/strong>\n        <\/div>\n      <\/div>\n\n      <!-- Summary -->\n      <div class=\"p-16 border-radius-8 bg-black text-white\" style=\"margin-top:12px;\">\n        <div class=\"font-bold\">Yhteenveto:<\/div>\n        <div id=\"rp-summary\" style=\"font-size:32px;font-weight:800;\">\u2014<\/div>\n\n        <div style=\"display:flex;gap:12px;margin-top:32px;flex-wrap:wrap;\">\n          <button id=\"rp-share\" class=\"button button--yellow\" type=\"button\">Jaa<\/button>\n          <button id=\"rp-clear\" class=\"button button--grey\" type=\"button\">Tyhjenn\u00e4 muutokset<\/button>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/div>\n\n<script>\n  function roofPitchCalculator() {\n    \/\/ ---------- helpers ----------\n    function byId(id) {\n      const el = document.getElementById(id)\n      if (!el) {\n        throw new Error(`Element #${id} not found`)\n      }\n      return el\n    }\n\n    function isFiniteNum(x) {\n      return typeof x === 'number' && Number.isFinite(x)\n    }\n\n    const LEN_TO_M = {\n      m: 1,\n      cm: 0.01,\n      mm: 0.001,\n      ft: 0.3048,\n      in: 0.0254,\n      yd: 0.9144,\n    }\n    const M_TO_LEN = {\n      m: 1,\n      cm: 100,\n      mm: 1000,\n      ft: 3.280839895,\n      in: 39.37007874,\n      yd: 1.093613298,\n    }\n\n    function toRadians(v, unit) {\n      return unit === 'deg' ? (v * Math.PI) \/ 180 : v\n    }\n\n    function fromRadians(rad, unit) {\n      return unit === 'deg' ? (rad * 180) \/ Math.PI : rad\n    }\n\n    function parseNumber(str) {\n      if (!str) return NaN\n      const cleaned = String(str)\n        .trim()\n        .replace(\/[^\\d.,\\-'\"\\\/\\s]\/g, '')\n        .replace(\/,\/g, '.')\n      const val = Number(cleaned)\n      return Number.isFinite(val) ? val : NaN\n    }\n\n    function parseLength(raw, unit) {\n      if (!raw) return NaN\n      const s = raw.trim().toLowerCase().replace(\/,\/g, '.')\n\n      if (unit === 'ft-in') {\n        let feet = 0,\n          inches = 0\n        const feetMatch = s.match(\/(-?\\d*\\.?\\d+)\\s*(?:'|ft)\/)\n        const inchMatch = s.match(\/(-?\\d*\\.?\\d+)\\s*(?:\\\"|in)\/)\n        if (feetMatch) feet = Number(feetMatch[1])\n        if (inchMatch) inches = Number(inchMatch[1])\n        if (!feetMatch && !inchMatch) {\n          const parts = s.split(\/\\s+\/).map(Number).filter(x => !isNaN(x))\n          feet = parts[0] ?? 0\n          inches = parts[1] ?? 0\n        }\n        return (feet + inches \/ 12) * LEN_TO_M.ft\n      }\n\n      if (unit === 'm-cm') {\n        const mMatch = s.match(\/(-?\\d*\\.?\\d+)\\s*m\/)\n        const cmMatch = s.match(\/(-?\\d*\\.?\\d+)\\s*cm\/)\n        const m = mMatch ? Number(mMatch[1]) : 0\n        const c = cmMatch ? Number(cmMatch[1]) : 0\n        if (mMatch || cmMatch) return (m + c \/ 100) * LEN_TO_M.m\n        const plain = Number(s)\n        return Number.isFinite(plain) ? plain * LEN_TO_M.m : NaN\n      }\n\n      const n = parseNumber(s)\n      return isNaN(n) ? NaN : n * LEN_TO_M[unit]\n    }\n\n    function formatLength(meters, unit) {\n      if (!isFiniteNum(meters)) return ''\n      if (unit === 'ft-in') {\n        const totalIn = meters * 39.37007874\n        const feet = Math.trunc(totalIn \/ 12)\n        const inches = totalIn - feet * 12\n        return `${feet}' ${inches.toFixed(1).replace(\/\\.0$\/, '')}\"`\n      }\n      if (unit === 'm-cm') {\n        const m = Math.trunc(meters)\n        const cm = (meters - m) * 100\n        return `${m} m ${cm.toFixed(0)} cm`\n      }\n      const v = meters * M_TO_LEN[unit]\n      let dp = 2\n      if (unit === 'mm') dp = 0\n      else if (unit === 'cm' || unit === 'in') dp = 1\n      return v.toFixed(dp).replace(\/\\.00?$|,00?$\/, '')\n    }\n\n    function parseAngle(str, unit) {\n      const v = parseNumber(str)\n      return isNaN(v) ? NaN : toRadians(v, unit)\n    }\n\n    function formatAngle(rad, unit) {\n      if (!isFiniteNum(rad)) return ''\n      const v = fromRadians(rad, unit)\n      return unit === 'deg' ? v.toFixed(1) : v.toFixed(4)\n    }\n\n    function parsePercent(str) {\n      const v = parseNumber(str.replace('%', ''))\n      return isNaN(v) ? NaN : v \/ 100\n    }\n\n    function formatPercent(k) {\n      return isFiniteNum(k) ? (k * 100).toFixed(1) + '%' : ''\n    }\n\n    function parseRatio(str) {\n      if (!str) return NaN\n      const cleaned = str.trim().replace(\/,\/g, '.')\n      const m = cleaned.match(\/(-?\\d*\\.?\\d+)(?:\\s*[:\/]\\s*12)?$\/)\n      const n = m ? Number(m[1]) : NaN\n      return Number.isFinite(n) ? n \/ 12 : NaN\n    }\n\n    function formatRatio(k) {\n      return isFiniteNum(k) ? (k * 12).toFixed(1).replace(\/\\.0$\/, '') : ''\n    }\n\n    \/\/ ---------- State ----------\n    const state = {\n      rise_m: NaN,\n      run_m: NaN,\n      rafter_m: NaN,\n      angle_rad: NaN,\n      slope: NaN,\n      last: null,\n    }\n\n    \/\/ ---------- Computation ----------\n    function recompute() {\n      let r = state.rise_m\n      let x = state.run_m\n      let L = state.rafter_m\n      let k = state.slope\n\n      if (state.last === 'angle' && isFiniteNum(state.angle_rad)) k = Math.tan(state.angle_rad)\n      if ((state.last === 'percent' || state.last === 'ratio') && isFiniteNum(state.slope)) k = state.slope\n      if (!isFiniteNum(r) && isFiniteNum(k) && isFiniteNum(x)) r = k * x\n      if (!isFiniteNum(x) && isFiniteNum(k) && isFiniteNum(r)) x = r \/ k\n\n      const lockRafter = byId('rp-lock-rafter').checked\n      if (lockRafter && isFiniteNum(L) && isFiniteNum(x)) r = Math.sqrt(Math.max(0, L * L - x * x))\n      else if (lockRafter && isFiniteNum(L) && isFiniteNum(r)) x = Math.sqrt(Math.max(0, L * L - r * r))\n\n      if (isFiniteNum(r) && isFiniteNum(x)) {\n        L = Math.sqrt(r * r + x * x)\n        k = r \/ x\n      } else if (isFiniteNum(L) && isFiniteNum(x)) {\n        r = Math.sqrt(Math.max(0, L * L - x * x))\n        k = r \/ x\n      } else if (isFiniteNum(L) && isFiniteNum(r)) {\n        x = Math.sqrt(Math.max(0, L * L - r * r))\n        k = r \/ x\n      }\n\n      state.rise_m = r\n      state.run_m = x\n      state.rafter_m = L\n      state.slope = k\n      state.angle_rad = isFiniteNum(k) ? Math.atan(k) : NaN\n      render()\n    }\n\n    \/\/ ---------- Render ----------\n    function render() {\n      const riseUnit = byId('rp-rise-unit').value\n      const runUnit = byId('rp-run-unit').value\n      const rafterUnit = byId('rp-rafter-unit').value\n      const angUnit = byId('rp-angle-unit').value\n\n      if (state.last !== 'rise_m') byId('rp-rise').value = formatLength(state.rise_m, riseUnit)\n      if (state.last !== 'run_m') byId('rp-run').value = formatLength(state.run_m, runUnit)\n      if (state.last !== 'rafter_m') byId('rp-rafter').value = formatLength(state.rafter_m, rafterUnit)\n      if (state.last !== 'angle') byId('rp-angle').value = formatAngle(state.angle_rad, angUnit)\n      if (state.last !== 'percent') byId('rp-percent').value = formatPercent(state.slope)\n      if (state.last !== 'ratio') byId('rp-ratio').value = formatRatio(state.slope)\n\n      const M = isFiniteNum(state.slope) ? Math.sqrt(1 + state.slope * state.slope) : 1\n      byId('rp-multiplier').textContent = isFiniteNum(M) ? M.toFixed(3) : '\u2014'\n\n      const areaUnit = byId('rp-area-unit').value\n      const plan = parseNumber(byId('rp-plan-area').value)\n      const plan_m2 = isFiniteNum(plan) ? (areaUnit === 'm2' ? plan : plan \/ 10.7639104167) : NaN\n      const surf_m2 = isFiniteNum(plan_m2) ? plan_m2 * M : NaN\n\n      let out = ''\n      if (areaUnit === 'm2') out = isFiniteNum(surf_m2) ? `${surf_m2.toFixed(1)} m\u00b2` : `0.0 m\u00b2`\n      else out = isFiniteNum(surf_m2) ? `${(surf_m2 * 10.7639104167).toFixed(1)} ft\u00b2` : `0.0 ft\u00b2`\n      byId('rp-surface-area').textContent = out\n\n      const deg = fromRadians(state.angle_rad, 'deg')\n      const ratio = formatRatio(state.slope)\n      const pct = formatPercent(state.slope)\n      byId('rp-summary').textContent = (isFiniteNum(deg) && ratio) ?\n        `${deg.toFixed(1)}\u00b0 \u00b7 ${pct} \u00b7 ${ratio}:12` :\n        '\u2014'\n    }\n\n    \/\/ ---------- Bindings ----------\n    function bindLength(inputId, unitId, key) {\n      const input = byId(inputId)\n      const unitSel = byId(unitId)\n      input.addEventListener('input', () => {\n        state[key] = parseLength(input.value, unitSel.value)\n        state.last = key\n        recompute()\n      })\n      unitSel.addEventListener('change', render)\n    }\n\n    bindLength('rp-rise', 'rp-rise-unit', 'rise_m')\n    bindLength('rp-run', 'rp-run-unit', 'run_m')\n    bindLength('rp-rafter', 'rp-rafter-unit', 'rafter_m')\n\n    byId('rp-angle').addEventListener('input', () => {\n      state.angle_rad = parseAngle(byId('rp-angle').value, byId('rp-angle-unit').value)\n      state.last = 'angle'\n      recompute()\n    })\n    byId('rp-angle-unit').addEventListener('change', render)\n\n    byId('rp-percent').addEventListener('input', () => {\n      state.slope = parsePercent(byId('rp-percent').value)\n      state.last = 'percent'\n      recompute()\n    })\n    byId('rp-ratio').addEventListener('input', () => {\n      state.slope = parseRatio(byId('rp-ratio').value)\n      state.last = 'ratio'\n      recompute()\n    })\n\n    byId('rp-lock-rafter').addEventListener('change', recompute)\n    byId('rp-plan-area').addEventListener('input', render)\n    byId('rp-area-unit').addEventListener('change', render)\n\n    byId('roof-pitch-calculator').addEventListener('keydown', e => {\n      if (e.key === 'Enter') {\n        e.preventDefault()\n        recompute()\n      }\n    })\n\n    byId('rp-clear').addEventListener('click', () => {\n      ;\n      ['rp-rise', 'rp-run', 'rp-rafter', 'rp-angle', 'rp-percent', 'rp-ratio', 'rp-plan-area'].forEach(id => {\n        byId(id).value = ''\n      })\n      Object.assign(state, {\n        rise_m: NaN,\n        run_m: NaN,\n        rafter_m: NaN,\n        angle_rad: NaN,\n        slope: NaN,\n        last: null\n      })\n      render()\n    })\n\n    byId('rp-share').addEventListener('click', () => {\n      const uR = byId('rp-rise-unit').value\n      const uX = byId('rp-run-unit').value\n      const uL = byId('rp-rafter-unit').value\n      const uA = byId('rp-angle-unit').value\n      const areaU = byId('rp-area-unit').value\n      const planRaw = byId('rp-plan-area').value\n\n      const params = new URLSearchParams()\n      if (Number.isFinite(state.rise_m)) params.set('r', String(state.rise_m))\n      if (Number.isFinite(state.run_m)) params.set('x', String(state.run_m))\n      if (Number.isFinite(state.rafter_m)) params.set('L', String(state.rafter_m))\n      if (Number.isFinite(state.slope)) params.set('k', String(state.slope))\n      if (Number.isFinite(state.angle_rad)) params.set('ang', String(state.angle_rad))\n\n      params.set('uR', uR)\n      params.set('uX', uX)\n      params.set('uL', uL)\n      params.set('uA', uA)\n      params.set('areaU', areaU)\n      if (planRaw.trim() !== '') params.set('plan', planRaw.trim())\n\n      const url = `${location.origin}${location.pathname}?${params.toString()}#roof-pitch-calculator`\n\n      function fallbackPrompt() {\n        window.prompt('Copy this link:', url)\n      }\n\n      if (navigator.clipboard && typeof navigator.clipboard.writeText === 'function') {\n        navigator.clipboard\n          .writeText(url)\n          .then(() => alert('Link copied to clipboard'))\n          .catch(fallbackPrompt)\n      } else {\n        fallbackPrompt()\n      }\n    })\n\n    try {\n      const q = new URLSearchParams(location.search)\n      const r = Number(q.get('r'))\n      const x = Number(q.get('x'))\n      const L = Number(q.get('L'))\n      const k = Number(q.get('k'))\n      const ang = Number(q.get('ang'))\n\n      if (Number.isFinite(r)) state.rise_m = r\n      if (Number.isFinite(x)) state.run_m = x\n      if (Number.isFinite(L)) state.rafter_m = L\n      if (Number.isFinite(k)) state.slope = k\n      if (Number.isFinite(ang)) state.angle_rad = ang\n\n      const uR = q.get('uR')\n      const uX = q.get('uX')\n      const uL = q.get('uL')\n      const uA = q.get('uA')\n      const areaU = q.get('areaU')\n      const plan = q.get('plan')\n\n      if (uR) byId('rp-rise-unit').value = uR\n      if (uX) byId('rp-run-unit').value = uX\n      if (uL) byId('rp-rafter-unit').value = uL\n      if (uA) byId('rp-angle-unit').value = uA\n      if (areaU) byId('rp-area-unit').value = areaU\n      if (plan) byId('rp-plan-area').value = plan\n    } catch (err) {\n      console.error('Failed to parse shared roof pitch link', err)\n    }\n\n    recompute()\n  }\n\n  setTimeout(() => roofPitchCalculator(), 2000)\n<\/script>\n\n\n<h2 class=\"wp-block-heading\" id=\"what-is-roof-pitch\">Mik\u00e4 on kattokaltevuus?<\/h2>\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1815\" height=\"1059\" src=\"https:\/\/remato.com\/wp-content\/uploads\/2025\/09\/roof-pitch-graph.png\" alt=\"Kattokaltevuuslaskimen kaavio\" class=\"wp-image-26289\" srcset=\"https:\/\/remato.com\/wp-content\/uploads\/2025\/09\/roof-pitch-graph.png 1815w, https:\/\/remato.com\/wp-content\/uploads\/2025\/09\/roof-pitch-graph-300x175.png 300w, https:\/\/remato.com\/wp-content\/uploads\/2025\/09\/roof-pitch-graph-1024x597.png 1024w, https:\/\/remato.com\/wp-content\/uploads\/2025\/09\/roof-pitch-graph-768x448.png 768w, https:\/\/remato.com\/wp-content\/uploads\/2025\/09\/roof-pitch-graph-1536x896.png 1536w, https:\/\/remato.com\/wp-content\/uploads\/2025\/09\/roof-pitch-graph-400x233.png 400w, https:\/\/remato.com\/wp-content\/uploads\/2025\/09\/roof-pitch-graph-80x47.png 80w\" sizes=\"auto, (max-width: 1815px) 100vw, 1815px\" \/><\/figure>\n\n<p>Kattokaltevuus, jota kutsutaan my\u00f6s <strong>katon kaltevuudeksi<\/strong>, on r\u00e4yst\u00e4iden luoma kaltevuus. Se voidaan kuvata eri tavoin:<\/p>\n\n<ul class=\"wp-block-list\">\n<li><strong>Asteet<\/strong> verrattuna vaakatasoon<\/li>\n\n\n\n<li><strong>Nousun ja juoksun suhde<\/strong> kuten <em>x:12<\/em> (yleinen Pohjois-Amerikassa)<\/li>\n\n\n\n<li><strong>Prosentuaalinen kaltevuus<\/strong> laskettuna nousu \u00f7 juoksu \u00d7 100 (yleinen Euroopassa)<\/li>\n<\/ul>\n\n<p><strong>Esimerkkej\u00e4:<\/strong><\/p>\n\n<ul class=\"wp-block-list\">\n<li>1:12 kaltevuus \u2248 4,8\u00b0 \u2248 8,3% kaltevuus<\/li>\n\n\n\n<li>6:12 kaltevuus \u2248 26,6\u00b0 \u2248 50% kaltevuus<\/li>\n\n\n\n<li>45\u00b0 katto = 100% kaltevuus = 12:12 kaltevuus<\/li>\n<\/ul>\n\n<p><strong>Kattokaltevuusluokat:<\/strong><\/p>\n\n<ul class=\"wp-block-list\">\n<li><strong>Tasakatot<\/strong> \u2192 0,5:12 &#8211; 2:12 (\u2248 2% &#8211; 17%). Eiv\u00e4t t\u00e4ysin tasaisia; aina sis\u00e4llyt\u00e4 pieni kaltevuus vedenpoistoon.<\/li>\n\n\n\n<li><strong>Matalakaltevuuksiset katot<\/strong> \u2192 alle 4:12 (\u2248 33%). Vaativat erityisi\u00e4 materiaaleja ja huolellista yksityiskohtien suunnittelua vuotojen est\u00e4miseksi.<\/li>\n\n\n\n<li><strong>Tavanomaiset katot<\/strong> \u2192 4:12 &#8211; 9:12 (\u2248 33% &#8211; 75%). Yleisimpi\u00e4, tehokkaita rakentaa, turvallisia k\u00e4vell\u00e4 varotoimenpitein.<\/li>\n\n\n\n<li><strong>Jyrk\u00e4t tai korkeakaltevuuksiset katot<\/strong> \u2192 yli 9:12 (\u2248 75%), joskus jopa 21:12 (\u2248 175%). Erinomaisia lumen ja veden poistoon, mutta vaativat lis\u00e4kiinnikkeit\u00e4, yksityiskohtaista tiimisuunnittelua ja vahvoja turvallisuusvalvontaa.<\/li>\n<\/ul>\n\n<p>Rakennusalan ammattilaisille kattokaltevuus on enemm\u00e4n kuin pelkk\u00e4\u00e4 geometriaa. Se vaikuttaa suoraan:<\/p>\n\n<ul class=\"wp-block-list\">\n<li><strong>Materiaalien arviointi<\/strong> \u2013 jyrkemm\u00e4t kaltevuudet lis\u00e4\u00e4v\u00e4t pinta-alaa, mik\u00e4 vaikuttaa laattojen, levyjen tai kalvojen m\u00e4\u00e4riin.<\/li>\n\n\n\n<li><strong>Rakenteellinen suunnittelu<\/strong> \u2013 kaltevuus vaikuttaa siihen, miten katot k\u00e4sittelev\u00e4t sadevesi\u00e4, lumikuormia ja tuulivoimia.<\/li>\n\n\n\n<li><strong>Turvallisuussuunnittelu<\/strong> \u2013 jyrkemm\u00e4t kattokulmat vaativat telineit\u00e4, putoamissuojausta ja lis\u00e4tiimisuunnittelua.<\/li>\n\n\n\n<li><strong>Noudattaminen<\/strong> \u2013 rakennusm\u00e4\u00e4r\u00e4ykset monissa EU-maissa m\u00e4\u00e4rittelev\u00e4t v\u00e4himm\u00e4iskaltevuudet vedeneristysj\u00e4rjestelmille (esim. tasakatot vaativat usein v\u00e4hint\u00e4\u00e4n 2\u20133% kaltevuuden vedenpoistoon).<\/li>\n<\/ul>\n\n<p>Siksi urakoitsijat luottavat <strong>kattokaltevuuslaskimeen<\/strong> tai <strong>katon kaltevuuslaskimeen<\/strong> muuntaakseen nopeasti suhteet, asteet ja prosentit. Arviointia varten <strong>kattokaltevuuskerroin<\/strong> on erityisen hy\u00f6dyllinen todellisen kattopinta-alan m\u00e4\u00e4ritt\u00e4miseksi pohjapiirroksesta.<\/p>\n\n<h2 class=\"wp-block-heading\" id=\"how-to-measure-roof-pitch-on-jobsite\">Miten mitata kattokaltevuus ty\u00f6maalla<\/h2>\n\n<p>Kattokaltevuus voidaan mitata eri tavoin alueellisten standardien mukaan. <strong>Euroopassa<\/strong> se ilmaistaan yleens\u00e4 <strong>asteina<\/strong> tai <strong>kaltevuusprosenttina<\/strong>. <strong>Pohjois-Amerikassa<\/strong> se kirjoitetaan yleisesti <strong>nousu-juoksusuhteena<\/strong> kuten <em>x:12<\/em>.<\/p>\n\n<p><strong>Vesivaa&#8217;an ja mittanauhan kanssa<\/strong><\/p>\n\n<ul class=\"wp-block-list\">\n<li>Aseta vesivaaka vaakasuoraan katolle.<\/li>\n\n\n\n<li>Euroopassa: merkitse kohta 100 cm (1 m) vesivaa&#8217;an suuntaisesti, mittaa sitten pystysuoraan siit\u00e4 kohdasta katon pintaan. Jos nousu on 30 cm, kaltevuus on 30%, mik\u00e4 vastaa noin 16,7\u00b0.<\/li>\n\n\n\n<li>Pohjois-Amerikassa: merkitse 12 tuumaa (30 cm) vesivaa&#8217;an suuntaisesti, mittaa sitten pystysuora nousu. Jos nousu on 6 tuumaa (15 cm), kaltevuus on 6:12, mik\u00e4 vastaa noin 26,6\u00b0 tai 50%.<\/li>\n<\/ul>\n\n<p><strong>Puusep\u00e4n neli\u00f6n tai mittatikun kanssa<\/strong><\/p>\n\n<ul class=\"wp-block-list\">\n<li>Euroopassa: kohdista yksi jalka 100 cm vaakasuoraan juoksuun ja lue nousu pystysuoralla jalalla. T\u00e4m\u00e4 antaa kaltevuusprosentin suoraan.<\/li>\n\n\n\n<li>Pohjois-Amerikassa: kohdista yksi jalka 12 tuuman juoksuun, lue sitten nousu pystysuoralla jalalla saadaksesi kaltevuussuhteen.<\/li>\n<\/ul>\n\n<p><strong>Digitaalisen ty\u00f6kalun kanssa<\/strong><\/p>\n\n<ul class=\"wp-block-list\">\n<li>K\u00e4yt\u00e4 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Inclinometer\" data-type=\"link\" data-id=\"https:\/\/en.wikipedia.org\/wiki\/Inclinometer\" target=\"_blank\" rel=\"noopener\">inklinometri\u00e4<\/a>, laserikulmamittaria tai \u00e4lypuhelinsovellusta.<\/li>\n\n\n\n<li>Euroopassa: lue kulma asteina, muunna sitten kaltevuusprosentiksi tarvittaessa.<\/li>\n\n\n\n<li>Pohjois-Amerikassa: lue kulma asteina, muunna sitten nousu\/juoksusuhteeksi <strong>kattokaltevuuslaskimella<\/strong>.<\/li>\n<\/ul>\n\n<p><strong>Tarkkuusvinkkej\u00e4 urakoitsijoille<\/strong><\/p>\n\n<ul class=\"wp-block-list\">\n<li>Ota mittaukset suoraan katon pinnalta parhaan tuloksen saamiseksi.<\/li>\n\n\n\n<li>Mittaa useammalta kuin yhdelt\u00e4 katon puolelta varmistaaksesi johdonmukaisuuden.<\/li>\n\n\n\n<li>Kun mahdollista, mittaa ullakolta v\u00e4ltt\u00e4\u00e4ksesi turvallisuusriskit jyrkill\u00e4 katoilla.<\/li>\n<\/ul>\n\n<h2 class=\"wp-block-heading\" id=\"roof-slope-formulas-and-conversions\">Kattokaltevuuskaavat ja muunnokset<\/h2>\n\n<p>Olipa kyseess\u00e4 <strong>prosentit, asteet tai suhteet<\/strong>, kattokaltevuuden matematiikka on yksinkertaista. T\u00e4ss\u00e4 ovat keskeiset kaavat, joita urakoitsijat ja alihankkijat k\u00e4ytt\u00e4v\u00e4t:<\/p>\n\n<p><strong>Eurooppalainen l\u00e4hestymistapa (prosentit ja asteet)<\/strong><\/p>\n\n<ul class=\"wp-block-list\">\n<li><strong>Kaltevuusprosentti<\/strong> = (nousu \u00f7 juoksu) \u00d7 100 Esimerkki: 30 cm nousu 100 cm juoksulla = 30% kaltevuus<\/li>\n\n\n\n<li><strong>Asteet<\/strong> = arctan(nousu \u00f7 juoksu) Esimerkki: 30 cm \u00f7 100 cm = 0,30 \u2192 arctan(0,30) \u2248 16,7\u00b0<\/li>\n<\/ul>\n\n<p><strong>Amerikkalainen l\u00e4hestymistapa (nousu-juoksusuhde)<\/strong><\/p>\n\n<ul class=\"wp-block-list\">\n<li><strong>Kaltevuussuhde<\/strong> = nousu : juoksu (standardoitu 12 tuuman juoksuun) Esimerkki: 6 tuuman nousu 12 tuuman juoksulla = 6:12 kaltevuus<\/li>\n\n\n\n<li><strong>Asteet<\/strong> = arctan(nousu \u00f7 juoksu) Esimerkki: 6 \u00f7 12 = 0,50 \u2192 arctan(0,50) \u2248 26,6\u00b0<\/li>\n\n\n\n<li><strong>Kaltevuusprosentti<\/strong> = (nousu \u00f7 juoksu) \u00d7 100 Esimerkki: 6 \u00f7 12 = 0,50 \u2192 50% kaltevuus<\/li>\n<\/ul>\n\n<p><strong>Kattokaltevuuskerroin<\/strong><\/p>\n\n<p>Kerrointa k\u00e4ytet\u00e4\u00e4n laskemaan kattopalkkien todellinen pituus tai todellinen kattopinta-ala vaakasuorasta juoksusta.<\/p>\n\n<ul class=\"wp-block-list\">\n<li>Kaava: \u221a(nousu\u00b2 + juoksu\u00b2) \u00f7 juoksu<\/li>\n\n\n\n<li>Esimerkki: 6:12 kaltevuudelle \u2192 \u221a(6\u00b2 + 12\u00b2) \u00f7 12 = \u221a180 \u00f7 12 \u2248 1,118<\/li>\n\n\n\n<li>Kerro vaakasuora kattopinta-ala t\u00e4ll\u00e4 luvulla saadaksesi todellisen pinta-alan.<\/li>\n<\/ul>\n\n<p><strong>K\u00e4yt\u00e4nn\u00f6n sovellukset<\/strong><\/p>\n\n<ul class=\"wp-block-list\">\n<li>Laattojen, tiilien tai levymateriaalien arviointi<\/li>\n\n\n\n<li>Kattopalkkien pituuksien laskeminen<\/li>\n\n\n\n<li>Vedenpoistokyvyn m\u00e4\u00e4ritt\u00e4minen<\/li>\n\n\n\n<li>Kansainv\u00e4listen eritelmien vertailu (asteet \u2194 suhteet \u2194 prosentit)<\/li>\n<\/ul>\n\n<h2 class=\"wp-block-heading\" id=\"fa-qs-about-roof-pitch-for-contractors\">Usein kysytyt kysymykset kattokaltevuudesta urakoitsijoille<\/h2>\n<div id=\"rank-math-faq\" class=\"rank-math-block\">\n<div class=\"rank-math-list \">\n<div id=\"faq-question-1757249823639\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">Mik\u00e4 on yleisin kattokaltevuus?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Useimmat asuinrakennushankkeet sijoittuvat 30\u00b0 ja 40\u00b0 v\u00e4lille, mik\u00e4 on suunnilleen 6:12 &#8211; 8:12 kaltevuus tai 50\u201367% kaltevuus. T\u00e4m\u00e4 alue tarjoaa hyv\u00e4n vedenpoiston samalla kun rakentaminen pysyy yksinkertaisena ja kustannustehokkaana. Jos sinun on tarkistettava tarkat muunnokset tietty\u00e4 projektia varten, kattokaltevuuslaskin voi antaa sinulle v\u00e4litt\u00f6m\u00e4t tulokset.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1757249847667\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">Mik\u00e4 kattokaltevuus on turvallinen k\u00e4vell\u00e4?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Alle 20\u00b0 katot, noin 4:12 kaltevuus tai 33% kaltevuus, ovat yleens\u00e4 turvallisia k\u00e4vell\u00e4 oikeilla jalkineilla. Jyrkempi\u00e4 kattoja tulisi aina k\u00e4sitell\u00e4 vaarallisina ja ne vaativat putoamissuojausta ja asianmukaista tiimihallintaa.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1757249856201\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">Kuinka tarkkoja kattokaltevuusmittausten on oltava?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Materiaalien arvioinnissa ja tarjousten valmistelussa noin yhden asteen tai yhden senttimetrin toleranssi 100 cm juoksua kohden on yleens\u00e4 riitt\u00e4v\u00e4. Insin\u00f6\u00f6rity\u00f6n ja m\u00e4\u00e4r\u00e4ysten noudattamisen kannalta tarkista aina paikallisten rakennusm\u00e4\u00e4r\u00e4ysten vaatimukset.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1757249866551\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">Voinko muuntaa kattokaltevuusprosentin kaltevuussuhteeksi?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Kyll\u00e4. Kaltevuusprosentti voidaan muuntaa nousu-juoksusuhteeksi ja sitten skaalata amerikkalaiseen 12 tuuman j\u00e4rjestelm\u00e4\u00e4n. Esimerkiksi 50% kaltevuus tarkoittaa 50 cm nousua 100 cm juoksulla, mik\u00e4 vastaa 1:2 suhdetta ja k\u00e4\u00e4ntyy 6:12 kaltevuudeksi.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1757249875168\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">Kuinka muunnan kattokulman asteina kaltevuusprosentiksi tai kaltevuussuhteeksi?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Kulmien muuntamiseksi ota kulman tangentti. Kertomalla se 100:lla saat kaltevuusprosentin. Kertomalla se 12:lla saat kaltevuussuhteen. Esimerkiksi 30\u00b0:lla on tangentti noin 0,577, mik\u00e4 vastaa 57,7% kaltevuutta tai noin 7:12 kaltevuutta.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1757249884003\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \"><strong>Mik\u00e4 on v\u00e4himm\u00e4iskattokaltevuus vedenpoistoon?<\/strong><\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Tasakattojen ei tulisi koskaan olla t\u00e4ysin tasaisia. Useimmat Euroopan m\u00e4\u00e4r\u00e4ykset vaativat v\u00e4hint\u00e4\u00e4n 2\u20133% kaltevuuden, mik\u00e4 vastaa noin 1\u20132 cm nousua metri\u00e4 kohden. Pohjois-Amerikassa t\u00e4m\u00e4 ilmaistaan usein 0,25:12 &#8211; 0,5:12. T\u00e4m\u00e4 pieni kaltevuus varmistaa vedenpoiston ja est\u00e4\u00e4 veden ker\u00e4\u00e4ntymisen.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1757249944023\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">Mik\u00e4 on jyrkin sallittu kattokaltevuus?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Ei ole absoluuttista maksimia, mutta eritt\u00e4in jyrk\u00e4t katot yli 60\u00b0 ovat harvinaisia erityisten arkkitehtonisten tyylien ulkopuolella. Useimmissa moderneissa asunnoissa kaltevuudet 25\u00b0 ja 50\u00b0 v\u00e4lill\u00e4 ovat yleisi\u00e4. Yli 45\u00b0 (12:12) kaltevuudet vaativat lis\u00e4kiinnikkeit\u00e4 ja huolellista turvallisuussuunnittelua tiimeille.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1757249955840\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">Kuinka l\u00f6yd\u00e4n kattokaltevuuden suunnitelmista tai piirustuksista?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Etsi poikkileikkaus, jossa kattopalkki on piirretty. Kaltevuus voi olla merkitty suoraan asteina, prosentteina tai suhteena, kuten 6:12. Jos vain mitat on annettu, jaa nousu juoksulla ja muunna tarvitsemaasi muotoon.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1757249967141\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">Mik\u00e4 kattokaltevuus on paras aurinkopaneeleille?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Ihanteellinen kattokulma aurinkopaneeleille riippuu leveysasteestasi. Yleiss\u00e4\u00e4nt\u00f6n\u00e4 kattokaltevuuden tulisi olla l\u00e4hell\u00e4 paikan leveysastetta. Esimerkiksi Etel\u00e4-Euroopassa 35\u00b0 leveysasteella 30\u201335\u00b0 kattokaltevuus on l\u00e4hes optimaalinen. Tasaisemmat katot voivat k\u00e4ytt\u00e4\u00e4 telineit\u00e4 paneelikulman s\u00e4\u00e4t\u00e4miseen.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1757250016011\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">Vaikuttaako kattokaltevuus kustannuksiin?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Kyll\u00e4. Jyrkemm\u00e4t katot tarkoittavat enemm\u00e4n pinta-alaa, enemm\u00e4n materiaaleja ja enemm\u00e4n ty\u00f6voimaa. Esimerkiksi 45\u00b0 katolla on noin 40% enemm\u00e4n pinta-alaa kuin saman j\u00e4nnev\u00e4lin tasaisella projektioilla. T\u00e4ss\u00e4 kattokaltevuuskerroin on hy\u00f6dyllinen arvioinnissa.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1757250022361\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">Mik\u00e4 on matalin kattokaltevuus tiilille tai kattolaatoille?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Useimmat savi- tai betonitiilet vaativat v\u00e4hint\u00e4\u00e4n 15\u201320\u00b0 kaltevuuden. Asfalttikattolaatat ovat yleens\u00e4 arvioitu v\u00e4hint\u00e4\u00e4n 18,5\u00b0 (3:12). N\u00e4iden kynnysten alapuolella vesi voi tunkeutua peitteen alle, joten tarvitaan erityisi\u00e4 aluskatteita tai kalvoja.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1757250063881\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">Mik\u00e4 on kattokaltevuuskerroin ja miten k\u00e4yt\u00e4n sit\u00e4?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Kattokaltevuuskerroin, jota kutsutaan my\u00f6s kertoimeksi, k\u00e4ytet\u00e4\u00e4n laskemaan todellinen pinta-ala vaakasuorasta suunnitelmasta. Kerro katon pohja-ala kertoimella saadaksesi todellisen kattopinta-alan. Esimerkiksi 6:12 katolla on kerroin 1,118, mik\u00e4 tarkoittaa, ett\u00e4 100 m\u00b2 suunnitelma-ala vastaa 111,8 m\u00b2 kattopinta-alaa.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1757250072930\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">Kuinka kattokaltevuus vaikuttaa tiimien turvallisuuteen?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Matalat kaltevuudet voidaan yleens\u00e4 k\u00e4vell\u00e4 turvallisesti, kun taas kaikki yli 20\u00b0 vaatii varovaisuutta. Yli 30\u00b0 (7:12) putoamissuojausj\u00e4rjestelm\u00e4t, telineet tai kattotikkaat ovat v\u00e4ltt\u00e4m\u00e4tt\u00f6mi\u00e4. Kuka on katolla, milloin ja mill\u00e4 varusteilla hallinta on kriittist\u00e4. Monet alihankkijat k\u00e4ytt\u00e4v\u00e4t digitaalisia ty\u00f6kaluja, kuten <a href=\"https:\/\/remato.com\/fi\/miehistonhallinta\/\" data-type=\"page\" data-id=\"4494\">Remato Crew Management<\/a>, koordinoidakseen turvallisuutta ja aikatauluja.<\/p>\n\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<h2 class=\"wp-block-heading\" id=\"why-roof-pitch-matters-in-construction-projects\">Miksi kattokaltevuus on t\u00e4rke\u00e4 rakennusprojekteissa<\/h2>\n\n<p>Kattokaltevuus ei ole vain suunnitteluyksityiskohta. Urakoitsijoille ja alihankkijoille se vaikuttaa l\u00e4hes jokaiseen projektin vaiheeseen, kustannusten arvioinnista tiimien turvallisuuden varmistamiseen. Siksi monet ammattilaiset pit\u00e4v\u00e4t <strong>kattokaltevuuslaskimen<\/strong> k\u00e4den ulottuvilla, sek\u00e4 nopeisiin tarkistuksiin ty\u00f6maalla ett\u00e4 tarkkojen tarjousten valmisteluun.<\/p>\n\n<h3 class=\"wp-block-heading\" id=\"material-estimating\"><strong>Materiaalien arviointi<\/strong><\/h3>\n\n<p>Mit\u00e4 jyrkempi katto, sit\u00e4 enemm\u00e4n pinta-alaa sill\u00e4 on rakennuksen pohjaan verrattuna. <strong>Kattokaltevuuslaskin<\/strong> tai <strong>katon kaltevuuslaskin<\/strong> auttaa soveltamaan oikean kertoimen, jotta et tilaa liian v\u00e4h\u00e4n laattoja, kattolaattoja tai kalvoja. Tarkat m\u00e4\u00e4ritykset tarkoittavat v\u00e4hemm\u00e4n hukkaa ja v\u00e4hemm\u00e4n projektiviiv\u00e4styksi\u00e4.<\/p>\n\n<h3 class=\"wp-block-heading\" id=\"structural-performance\"><strong>Rakenteellinen suorituskyky<\/strong><\/h3>\n\n<p>Kattokaltevuus vaikuttaa suoraan siihen, miten rakenne k\u00e4sittelee tuulta, sadetta ja lunta. Matala kaltevuus saattaa vaatia erityisi\u00e4 vedeneristysj\u00e4rjestelmi\u00e4, kun taas jyrkk\u00e4 kaltevuus vaatii lis\u00e4kiinnikkeit\u00e4 ja kuormitusten huomioon ottamista. Numeroiden tarkistaminen <strong>kattokaltevuuslaskimella<\/strong> varmistaa, ett\u00e4 suunnittelusi vastaa paikallisia olosuhteita.<\/p>\n\n<h3 class=\"wp-block-heading\" id=\"safety-and-crew-management\"><strong>Turvallisuus ja tiimien hallinta<\/strong><\/h3>\n\n<p>Jyrkemm\u00e4t katot lis\u00e4\u00e4v\u00e4t ty\u00f6ntekij\u00f6iden riskej\u00e4. Kaikki yli 30\u00b0 (noin 7:12 kaltevuus) vaativat usein telineit\u00e4, putoamissuojausj\u00e4rjestelmi\u00e4 tai kattotikkaita. Suunnittelu, mitk\u00e4 teht\u00e4v\u00e4t voidaan suorittaa turvallisesti eri kaltevuuksilla, on helpompaa, kun tied\u00e4t tarkat numerot. Monet alihankkijat k\u00e4ytt\u00e4v\u00e4t digitaalisia ty\u00f6kaluja, kuten <a href=\"https:\/\/remato.com\/fi\/miehistonhallinta\/\" data-type=\"page\" data-id=\"4494\">Remato Crew Management<\/a>, koordinoidakseen aikatauluja ja pit\u00e4\u00e4kseen tiimins\u00e4 turvassa ty\u00f6maalla.<\/p>\n\n<h3 class=\"wp-block-heading\"><strong>Rakennusm\u00e4\u00e4r\u00e4ykset ja noudattaminen<\/strong><\/h3>\n\n<p>Monilla alueilla v\u00e4himm\u00e4is- tai enimm\u00e4iskattokaltevuudet m\u00e4\u00e4ritell\u00e4\u00e4n m\u00e4\u00e4r\u00e4yksiss\u00e4, usein riippuen kattomateriaalista. Esimerkiksi tasakatot saattavat vaatia v\u00e4hint\u00e4\u00e4n 2% kaltevuuden vedenpoistovaatimusten t\u00e4ytt\u00e4miseksi. <strong>Kattokaltevuuslaskimen<\/strong> avulla voit nopeasti varmistaa noudattamisen viel\u00e4 ty\u00f6maalla tai suunnitteluvaiheessa.<\/p>\n\n<p>Kattokaltevuuden saaminen oikein on olennaista tarkkojen arvioiden, m\u00e4\u00e4r\u00e4ysten noudattamisen ja turvallisen tiimihallinnan kannalta. Olitpa tarkistamassa kaltevuutta ty\u00f6maalla, valmistamassa tarjousta tai suunnittelemassa materiaaleja, luotettava <strong>kattokaltevuuslaskin<\/strong> s\u00e4\u00e4st\u00e4\u00e4 aikaa ja v\u00e4hent\u00e4\u00e4 kalliita virheit\u00e4.<\/p>\n\n<h2 class=\"wp-block-heading\" id=\"closing-thoughts\">Loppup\u00e4\u00e4telm\u00e4t<\/h2>\n\n<p>T\u00e4m\u00e4 opas kattoi, miten mitata kattokaltevuus, muuntaa suhteiden, asteiden ja prosenttien v\u00e4lill\u00e4 ja miksi kaltevuus on t\u00e4rke\u00e4 todellisissa projekteissa. Pid\u00e4 t\u00e4m\u00e4 <strong>kattokaltevuuslaskin<\/strong> kirjanmerkeiss\u00e4, jotta sinulla on aina numerot k\u00e4sill\u00e4 seuraavaa ty\u00f6teht\u00e4v\u00e4\u00e4 varten.<\/p>\n\n<p>Kun olet laskenut kaltevuuden ja pinta-alan, seuraava askel on projektin kannattavuuden selvitt\u00e4minen. Meid\u00e4n <a href=\"https:\/\/remato.com\/fi\/blog\/katetuottolaskuri-ilmainen-urakoitsijalaskuri\/\" data-type=\"post\" data-id=\"24564\">voittomarginaalilaskin<\/a> tekee yksinkertaiseksi n\u00e4hd\u00e4 tarkalleen, mihin rahasi menev\u00e4t ja kuinka paljon ansaitset jokaisesta ty\u00f6st\u00e4.<\/p>\n\n<p>Alihankkijoille, jotka hallitsevat useita tiimej\u00e4 ja ty\u00f6maita, tarkat laskelmat ovat vain osa ty\u00f6nkulkua. Ty\u00f6kalut kuten <a href=\"https:\/\/remato.com\/fi\/miehistonhallinta\/\" data-type=\"page\" data-id=\"4494\">Remato Crew Management<\/a> auttavat aikatauluttamaan tiimej\u00e4, seuraamaan t\u00f6it\u00e4 ja pysym\u00e4\u00e4n monimutkaisten projektien hallinnassa.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Tarkat kattokaltevuusmittaukset ovat kriittisi\u00e4 ammattilaisille. Katon kaltevuus vaikuttaa materiaalien m\u00e4\u00e4r\u00e4\u00e4n, ty\u00f6voiman tarpeisiin, turvallisuusvaatimuksiin ja rakennusm\u00e4\u00e4r\u00e4ysten noudattamiseen. Pienikin virhe voi johtaa hukkaan heitettyyn aikaan, v\u00e4\u00e4riin tilauksiin tai kalliisiin uudelleent\u00f6ihin. T\u00e4m\u00e4 ilmainen kattokaltevuuslaskin antaa urakoitsijoille ja alihankkijoille nopeat muunnokset nousu-juoksusuhteiden, kulmien ja kertoimien v\u00e4lill\u00e4. Se on k\u00e4yt\u00e4nn\u00f6llinen ty\u00f6kalu, jota voit k\u00e4ytt\u00e4\u00e4 ty\u00f6maalla mittausten tarkistamiseen, tarjousten valmisteluun ja [&hellip;]<\/p>\n","protected":false},"author":8,"featured_media":26132,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[297],"tags":[],"class_list":["post-26309","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-pohjat-ja-tyokalut"],"acf":[],"metadata":{"blog_post_read_time":"8 min lukea"},"category_objects":[{"term_id":297,"name":"Pohjat ja ty\u00f6kalut","slug":"pohjat-ja-tyokalut","term_group":0,"term_taxonomy_id":297,"taxonomy":"category","description":"","parent":0,"count":10,"filter":"raw","cat_ID":297,"category_count":10,"category_description":"","cat_name":"Pohjat ja ty\u00f6kalut","category_nicename":"pohjat-ja-tyokalut","category_parent":0}],"image":{"low-res":{"url":"https:\/\/remato.com\/wp-content\/uploads\/2025\/09\/roof-pitch-calculator-80x53.jpg","width":80,"height":53,"alt":"Kattokaltevuuslaskin"},"thumbnail":{"url":"https:\/\/remato.com\/wp-content\/uploads\/2025\/09\/roof-pitch-calculator-150x150.jpg","width":150,"height":150,"alt":"Kattokaltevuuslaskin"},"medium_large":{"url":"https:\/\/remato.com\/wp-content\/uploads\/2025\/09\/roof-pitch-calculator-768x508.jpg","width":768,"height":508,"alt":"Kattokaltevuuslaskin"},"large":{"url":"https:\/\/remato.com\/wp-content\/uploads\/2025\/09\/roof-pitch-calculator-1024x677.jpg","width":1024,"height":677,"alt":"Kattokaltevuuslaskin"}},"excerpt_raw":"","formatted_date":"15.9.2025","_links":{"self":[{"href":"https:\/\/remato.com\/fi\/wp-json\/wp\/v2\/posts\/26309","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/remato.com\/fi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/remato.com\/fi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/remato.com\/fi\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/remato.com\/fi\/wp-json\/wp\/v2\/comments?post=26309"}],"version-history":[{"count":3,"href":"https:\/\/remato.com\/fi\/wp-json\/wp\/v2\/posts\/26309\/revisions"}],"predecessor-version":[{"id":26345,"href":"https:\/\/remato.com\/fi\/wp-json\/wp\/v2\/posts\/26309\/revisions\/26345"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/remato.com\/fi\/wp-json\/wp\/v2\/media\/26132"}],"wp:attachment":[{"href":"https:\/\/remato.com\/fi\/wp-json\/wp\/v2\/media?parent=26309"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/remato.com\/fi\/wp-json\/wp\/v2\/categories?post=26309"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/remato.com\/fi\/wp-json\/wp\/v2\/tags?post=26309"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}