{"id":13422,"date":"2026-11-05T01:07:29","date_gmt":"2026-11-05T01:07:29","guid":{"rendered":"https:\/\/aiper.com\/blogs\/?page_id=13422"},"modified":"2026-11-12T04:43:19","modified_gmt":"2026-11-12T04:43:19","slug":"calculadora-coste-corte-cesped","status":"publish","type":"page","link":"https:\/\/aiper.com\/blogs\/es\/calculadora-coste-corte-cesped\/","title":{"rendered":"Calculadora de coste de corte de c\u00e9sped"},"content":{"rendered":"\n<style>#lawn-tool{max-width:960px;margin:24px auto;color:#243746}#lawn-tool *{box-sizing:border-box}#lawn-tool .fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));gap:18px}#lawn-tool label{display:block;font-weight:600}#lawn-tool input,#lawn-tool textarea{display:block;width:100%;padding:12px;border:1px solid #9aacb5;border-radius:8px;margin-top:6px;font:inherit}#lawn-tool button{padding:12px 20px;margin:18px 10px 10px 0;border:2px solid #1ecad3;border-radius:8px;background:#1ecad3;color:#1a202c;cursor:pointer;font:inherit}#lawn-tool button[type=reset],#lawn-tool #copy-area{background:white}#lawn-tool button:focus-visible,#lawn-tool input:focus-visible,#lawn-tool textarea:focus-visible{outline:3px solid #9486f7;outline-offset:3px;color:#1a202c}#lawn-tool button:active{color:#1a202c}#lawn-tool .result{background:#edf7f8;border-left:4px solid #1ecad3;padding:18px;margin:16px 0;overflow-wrap:anywhere}#lawn-tool svg{width:100%;height:300px;border:1px solid #b8cbd2}#lawn-tool a{color:#08778b}<\/style><div id=\"lawn-tool\" lang=\"es\"><p>Prepara un presupuesto dom\u00e9stico con tus precios, superficie y frecuencia de visitas.<\/p><form data-mode=\"mowing-cost\"><div class=\"fields\"><label>Superficie de c\u00e9sped (m\u00b2)<input name=\"area\" type=\"number\" min=\"0\" step=\"any\" required value=\"500\"><\/label><label>Tu cargo base por visita<input name=\"base\" type=\"number\" min=\"0\" step=\"any\" required value=\"0\"><\/label><label>Tu precio por 100 m\u00b2<input name=\"rate\" type=\"number\" min=\"0\" step=\"any\" required value=\"0\"><\/label><label>Tu cargo m\u00ednimo por visita<input name=\"minimum\" type=\"number\" min=\"0\" step=\"any\" required value=\"0\"><\/label><label>Tu cargo por bordes en cada visita<input name=\"edging\" type=\"number\" min=\"0\" step=\"any\" required value=\"0\"><\/label><label>Tu recargo por obst\u00e1culos (%)<input name=\"obstacle\" type=\"number\" min=\"0\" step=\"any\" required value=\"0\"><\/label><label>Visitas por semana (0,5 = cada dos semanas)<input name=\"frequency\" type=\"number\" min=\"0\" step=\"any\" required value=\"1\"><\/label><label>Semanas de corte en la temporada<input name=\"weeks\" type=\"number\" min=\"0\" step=\"any\" required value=\"26\"><\/label><\/div><button type=\"submit\">Calcular<\/button><button type=\"reset\">Restablecer<\/button><\/form><div class=\"result\" role=\"status\" aria-live=\"polite\">Introduce tus medidas y calcula.<\/div><h2>C\u00f3mo funciona el c\u00e1lculo<\/h2><p>Precio por visita = m\u00e1x(m\u00ednimo, base + superficie \u00f7 100 \u00d7 tarifa de superficie + bordes) \u00d7 (1 + recargo \u00f7 100). Visitas de temporada = redondeo superior(semanas \u00d7 frecuencia). El presupuesto de temporada usa visitas enteras. El mes activo medio equivale a 52,1775 \u00f7 12 semanas; no reparte el coste entre meses sin corte. Usa una misma moneda. Con precios cero solo se muestran las visitas. Introduce un presupuesto real e incluye transporte, retirada de residuos e impuestos en los datos cuando corresponda. No se suponen precios de mercado.<\/p><h2>Unidades y datos<\/h2><p>Sustituye los ejemplos por tus medidas. 1 pie = 0,3048 m; 1 pie cuadrado = 0,09290304 m\u00b2; 1 pulgada = 25,4 mm; 1 gal\u00f3n estadounidense = 3,785411784 litros. Usa la misma moneda en todos los precios. Un precio cero omite el presupuesto opcional.<\/p><h2>Gu\u00edas para el c\u00e9sped<\/h2><ul><li><a href=\"https:\/\/aiper.com\/blogs\/es\/como-cortar-el-cesped\/\">C\u00f3mo cortar el c\u00e9sped correctamente: altura, patr\u00f3n, frecuencia y por qu\u00e9 importa<\/a><\/li><\/ul><h2>M\u00e1s herramientas para el c\u00e9sped<\/h2><p><a href=\"https:\/\/aiper.com\/blogs\/es\/calculadora-tepes\/\">calculadora de tepes<\/a> \u00b7 <a href=\"https:\/\/aiper.com\/blogs\/es\/calculadora-superficie-cesped\/\">calculadora de superficie de c\u00e9sped<\/a> \u00b7 <a href=\"https:\/\/aiper.com\/blogs\/es\/calculadora-riego-cesped-duracion\/\">calculadora de riego y duraci\u00f3n de aspersores<\/a> \u00b7 <a href=\"https:\/\/aiper.com\/blogs\/es\/calculadora-zonas-aspersores\/\">calculadora de zonas de aspersores<\/a> \u00b7 <a href=\"https:\/\/aiper.com\/blogs\/es\/calculadora-tiempo-corte-cesped\/\">calculadora de tiempo de corte de c\u00e9sped<\/a> \u00b7 <a href=\"https:\/\/aiper.com\/blogs\/es\/calculadora-cal-cesped\/\">calculadora de cal para c\u00e9sped<\/a> \u00b7 <a href=\"https:\/\/aiper.com\/blogs\/es\/calculadora-riego-goteo\/\">calculadora de riego por goteo<\/a> \u00b7 <a href=\"https:\/\/aiper.com\/blogs\/es\/calculadora-semillas-cesped\/\">calculadora de semillas de c\u00e9sped<\/a> \u00b7 <a href=\"https:\/\/aiper.com\/blogs\/es\/calculadora-fertilizante-cesped\/\">calculadora de fertilizante para c\u00e9sped<\/a> \u00b7 <a href=\"https:\/\/aiper.com\/blogs\/es\/herramientas\/\">Herramientas<\/a><\/p><\/div><script>\/* SI units internally; no external services or weather assumptions. *\/\nfunction calculateLawn(mode,v){\n const n=k=>{if(v[k]===undefined||String(v[k]).trim()==='')throw Error(\"Introduce todas las medidas necesarias.\");let x=Number(v[k]);if(!Number.isFinite(x)||x<0)throw Error(\"Usa valores finitos y no negativos.\");return x;};\n const p=k=>{let x=n(k);if(x<=0)throw Error(\"Esta medida debe ser mayor que cero.\");return x;};\n const percent=k=>{let x=n(k);if(x>=100)throw Error(\"El porcentaje debe ser inferior a 100.\");return x\/100;};\n let o;\n if(mode==='sod'){\n  let a=p('area'),w=n('waste');if(w>100)throw Error(\"El desperdicio debe estar entre 0 y 100 %.\");\n  let q=a*(1+w\/100);o={required:q,pieces:Math.ceil(q\/p('piece')-1e-10),pallets:Math.ceil(q\/p('pallet')-1e-10)};\n  if(n('price')>0)o.budget=q*n('price');\n }else if(mode==='watering'){\n  let depth=Math.max(0,n('target')-n('rain')),minutes=depth\/p('rate')*60,water=p('area')*depth;\n  o={depth,minutes,litres:water};if(n('price')>0)o.budget=water\/1000*n('price');\n }else if(mode==='zone'){\n  let heads=p('heads');if(!Number.isInteger(heads))throw Error(\"El n\u00famero de aspersores debe ser entero.\");\n  let capacity=Math.floor(p('flow')*(1-percent('reserve'))\/p('nozzle'));\n  if(p('pressure')<p('required'))throw Error(\"La presi\u00f3n de trabajo es inferior a la requerida.\");\n  if(capacity<1)throw Error(\"El caudal no basta para una boquilla con esta reserva.\");\n  o={capacity,zones:Math.ceil(heads\/capacity)};\n }else if(mode==='area'){\n  let polygons=JSON.parse(v.polygons);if(!Array.isArray(polygons)||!polygons.length)throw Error(\"Introduce los pol\u00edgonos medidos.\");\n  let total=0;\n  for(let poly of polygons){\n   let pts=poly.points;if(!Array.isArray(pts)||pts.length<3)throw Error(\"Cada pol\u00edgono necesita al menos tres v\u00e9rtices.\");\n   for(let pt of pts)if(!Array.isArray(pt)||pt.length!==2||!pt.every(x=>typeof x==='number'&&Number.isFinite(x)))throw Error(\"Cada v\u00e9rtice necesita dos coordenadas finitas.\");\n   \/\/ Reject crossings, touching edges, repeated vertices and degenerate edges.\n   let cross=(a,b,c)=>(b[0]-a[0])*(c[1]-a[1])-(b[1]-a[1])*(c[0]-a[0]);\n   let on=(a,b,c)=>Math.abs(cross(a,b,c))<1e-9&&c[0]>=Math.min(a[0],b[0])-1e-9&&c[0]<=Math.max(a[0],b[0])+1e-9&&c[1]>=Math.min(a[1],b[1])-1e-9&&c[1]<=Math.max(a[1],b[1])+1e-9;\n   for(let i=0;i<pts.length;i++)for(let j=i+1;j<pts.length;j++){\n    if(pts[i][0]===pts[j][0]&&pts[i][1]===pts[j][1])throw Error(\"No repitas v\u00e9rtices.\");\n    if(j===i+1||i===0&&j===pts.length-1)continue;\n    let a=pts[i],b=pts[(i+1)%pts.length],c=pts[j],d=pts[(j+1)%pts.length];\n    if(cross(a,b,c)*cross(a,b,d)<0&&cross(c,d,a)*cross(c,d,b)<0||on(a,b,c)||on(a,b,d)||on(c,d,a)||on(c,d,b))throw Error(\"Los lados no deben cruzarse ni tocarse.\");\n   }\n   let a=Math.abs(pts.reduce((s,p,i)=>s+p[0]*pts[(i+1)%pts.length][1]-pts[(i+1)%pts.length][0]*p[1],0))\/2;\n   if(a<=0)throw Error(\"La superficie del pol\u00edgono debe ser positiva.\");\n   if(poly.exclude!==undefined&&typeof poly.exclude!=='boolean')throw Error(\"La exclusi\u00f3n debe ser verdadera o falsa.\");\n   total+=poly.exclude?-a:a;\n  }\n  if(total<=0)throw Error(\"La superficie neta debe ser positiva.\");o={area:total,sqft:total\/0.09290304};\n }else if(mode==='mowing-cost'){\n  let area=p('area'),frequency=p('frequency'),weeks=p('weeks');\n  if(frequency>7||weeks>52.1775)throw Error(\"Usa como m\u00e1ximo 7 visitas por semana y 52,1775 semanas por a\u00f1o.\");\n  let obstacle=n('obstacle');if(obstacle>100)throw Error(\"El recargo debe estar entre 0 y 100 %.\");\n  let visit=Math.max(n('minimum'),n('base')+area\/100*n('rate')+n('edging'))*(1+obstacle\/100),visits=Math.ceil(frequency*weeks-1e-10);\n  o={visits};if(visit>0)Object.assign(o,{visit,month:visit*frequency*52.1775\/12,season:visit*visits});\n }else if(mode==='mowing-time'){\n  let area=p('area'),width=p('width')\/100,speed=p('speed')*1000,overlap=percent('overlap'),eff=p('efficiency')\/100;\n  if(eff>1)throw Error(\"La eficiencia no debe superar el 100 %.\");\n  let productivity=width*(1-overlap)*speed*eff,minutes=area\/productivity*60;\n  o={effective:width*(1-overlap)*100,productivity,minutes,total:minutes+n('extra')};\n }else if(mode==='lime'){\n  let area=p('area'),rate=n('lab'),reference=p('reference'),product=p('product');\n  if(reference>200||product>200)throw Error(\"Los valores neutralizantes deben ser porcentajes no superiores a 200.\");\n  let adjusted=rate*reference\/product,total=area\/100*adjusted;\n  o={adjusted,total,bags:Math.ceil(total\/p('bag')-1e-10)};\n  let cap=n('cap');if(cap>0){let passes=Math.max(1,Math.ceil(adjusted\/cap-1e-10));o.passes=total>0?passes:0;o.perpass=total>0?total\/passes:0;}\n }else if(mode==='drip'){\n  let length=p('length'),spacing=p('spacing'),lines=p('lines');\n  if(!Number.isInteger(lines))throw Error(\"El n\u00famero de l\u00edneas debe ser entero.\");\n  \/\/ Assumes the first emitter is one spacing from the inlet, not at x=0.\n  let emitters=Math.floor(length\/spacing+1e-10);if(emitters<1)throw Error(\"Cada l\u00ednea debe contener al menos un gotero.\");\n  let flow=emitters*p('emitter'),capacity=p('supply')*60*(1-percent('reserve')),linesPerZone=Math.floor(capacity\/flow);\n  if(linesPerZone<1)throw Error(\"El caudal no basta para una l\u00ednea completa de goteo.\");\n  let minutes=n('litres')\/p('emitter')*60,zones=Math.ceil(lines\/linesPerZone);\n  o={emitters,totalemitters:emitters*lines,flow:flow*lines\/60,linesperzone:linesPerZone,zones,minutes,totalminutes:minutes*zones,water:emitters*lines*n('litres')};\n }else throw Error(\"Calculadora desconocida.\");\n if(Object.values(o).some(x=>!Number.isFinite(x)))throw Error(\"Las medidas superan el intervalo admitido.\");\n return o;\n}\nif(typeof module!=='undefined')module.exports=calculateLawn;\n\n(()=>{const root=document.getElementById('lawn-tool'),form=root.querySelector('form'),result=root.querySelector('.result'),labels={\"visits\": \"Visitas enteras en la temporada\", \"visit\": \"Presupuesto por visita\", \"month\": \"Presupuesto medio por mes activo\", \"season\": \"Presupuesto de temporada\"};let last=null;\nfunction polygons(text){return text.trim().split(\/\\n\\s*\\n\/).map(block=>{let rows=block.trim().split(\/\\n\/),exclude=\/^[-\u2013\u2014]$\/.test(rows[0].trim());if(exclude)rows.shift();return {exclude,points:rows.map(row=>{let parts=row.trim().split(\/\\s*,\\s*\/);if(parts.length!==2||parts.some(p=>!p.trim()))throw Error(\"Usa una coordenada x,y por l\u00ednea.\");return parts.map(Number);})};});}\nform.addEventListener('submit',e=>{e.preventDefault();last=null;try{let v=Object.fromEntries(new FormData(form));let polys;if(form.dataset.mode==='area'){polys=polygons(v.coordinates);v.polygons=JSON.stringify(polys);}let out=calculateLawn(form.dataset.mode,v);result.replaceChildren();for(let [key,value]of Object.entries(out)){let p=document.createElement('p');p.textContent=labels[key]+': '+value.toLocaleString(\"es\",{maximumFractionDigits:3});result.append(p);}if(polys){let svg=root.querySelector('#area-diagram'),all=polys.flatMap(p=>p.points),xs=all.map(p=>p[0]),ys=all.map(p=>p[1]),minx=Math.min(...xs),miny=Math.min(...ys),w=Math.max(...xs)-minx,h=Math.max(...ys)-miny;svg.replaceChildren();svg.setAttribute('viewBox',[minx-1,miny-1,w+2,h+2].join(' '));for(let poly of polys){let shape=document.createElementNS('http:\/\/www.w3.org\/2000\/svg','polygon');shape.setAttribute('points',poly.points.map(p=>p.join(',')).join(' '));shape.setAttribute('fill',poly.exclude?'#fff':'#b4e8c1');shape.setAttribute('stroke','#147e91');shape.setAttribute('stroke-width',Math.max(w,h)\/200);svg.append(shape);}last=out.area;root.querySelector('#copy-area').disabled=false;}}\ncatch(err){result.textContent=err.message;if(root.querySelector('#copy-area'))root.querySelector('#copy-area').disabled=true;}});\nform.addEventListener('reset',()=>{last=null;result.textContent=\"Introduce tus medidas y calcula.\";let svg=root.querySelector('#area-diagram');if(svg)svg.replaceChildren();let b=root.querySelector('#copy-area');if(b)b.disabled=true;});\nlet copy=root.querySelector('#copy-area');if(copy)copy.addEventListener('click',async()=>{if(last===null)return;try{await navigator.clipboard.writeText(String(last));result.append(document.createTextNode(\" Superficie copiada en m\u00b2.\"));}catch(e){result.append(document.createTextNode(\" Copia la superficie manualmente: \"+last+' m\u00b2.'));}});\n})();\n(()=>{let r=document.getElementById('lawn-tool');r.querySelector('form').addEventListener('input',()=>{r.querySelector('.result').textContent=\"Introduce tus medidas y calcula.\";let b=r.querySelector('#copy-area');if(b)b.disabled=true;let s=r.querySelector('#area-diagram');if(s)s.replaceChildren();});})();<\/script>\n","protected":false},"excerpt":{"rendered":"<p>Prepara un presupuesto dom\u00e9stico con tus precios, superficie y frecuencia de visitas. Superficie de c\u00e9sped (m\u00b2)Tu cargo base por visitaTu precio por 100 m\u00b2Tu cargo m\u00ednimo por visitaTu cargo por bordes en cada visitaTu recargo por obst\u00e1culos (%)Visitas por semana (0,5 = cada dos semanas)Semanas de corte en la temporada CalcularRestablecer Introduce tus medidas y [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"aiper_reading_time":2,"aiper_last_reviewed":"","aiper_reviewer":0,"aiper_related_ids":[],"aiper_layout":"","footnotes":""},"class_list":["post-13422","page","type-page","status-publish","hentry"],"lang":"es","translations":{"es":13422,"fr":13421,"de":13420,"en":13419},"_links":{"self":[{"href":"https:\/\/aiper.com\/blogs\/wp-json\/wp\/v2\/pages\/13422","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/aiper.com\/blogs\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/aiper.com\/blogs\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/aiper.com\/blogs\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/aiper.com\/blogs\/wp-json\/wp\/v2\/comments?post=13422"}],"version-history":[{"count":1,"href":"https:\/\/aiper.com\/blogs\/wp-json\/wp\/v2\/pages\/13422\/revisions"}],"predecessor-version":[{"id":13438,"href":"https:\/\/aiper.com\/blogs\/wp-json\/wp\/v2\/pages\/13422\/revisions\/13438"}],"wp:attachment":[{"href":"https:\/\/aiper.com\/blogs\/wp-json\/wp\/v2\/media?parent=13422"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}