{"id":482,"date":"2026-07-01T18:19:12","date_gmt":"2026-07-01T18:19:12","guid":{"rendered":"https:\/\/roque.tecnm.mx\/?page_id=482"},"modified":"2026-09-04T12:25:26","modified_gmt":"2026-09-04T18:25:26","slug":"estacion-climatologica-roque","status":"publish","type":"page","link":"https:\/\/roque.tecnm.mx\/?page_id=482","title":{"rendered":"estacion_climatologica"},"content":{"rendered":"\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<div class=\"meteo-dashboard\">\n    <!-- Fuentes e Iconos -->\n    <link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@300;400;500;600;700&#038;display=swap\" rel=\"stylesheet\">\n\n    <style>\n        .meteo-dashboard {\n            font-family: 'Inter', -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif;\n            max-width: 1200px;\n            margin: 0 auto;\n            padding: 12px;\n            color: #1e293b;\n            background-color: #f8fafc;\n            border-radius: 16px;\n            box-sizing: border-box;\n        }\n\n        .meteo-dashboard * {\n            box-sizing: border-box;\n        }\n\n        \/* Header *\/\n        .meteo-header {\n            display: flex;\n            align-items: center;\n            justify-content: space-between;\n            background: #ffffff;\n            padding: 16px;\n            border-radius: 12px;\n            box-shadow: 0 2px 4px rgba(0, 0, 0, 0.04);\n            margin-bottom: 16px;\n            border-left: 5px solid #1b396a;\n            flex-wrap: wrap;\n            gap: 12px;\n        }\n\n        .meteo-brand {\n            display: flex;\n            align-items: center;\n            gap: 12px;\n        }\n\n        .meteo-brand img {\n            height: 48px;\n            object-fit: contain;\n        }\n\n        .meteo-title-group h1 {\n            color: #1b396a;\n            margin: 0;\n            font-size: 20px;\n            font-weight: 700;\n            letter-spacing: -0.5px;\n        }\n\n        .meteo-title-group p {\n            margin: 2px 0 0;\n            color: #64748b;\n            font-size: 13px;\n            font-weight: 500;\n        }\n\n        .status-badge {\n            display: inline-flex;\n            align-items: center;\n            gap: 6px;\n            background-color: #e0f2fe;\n            color: #0369a1;\n            padding: 4px 10px;\n            border-radius: 20px;\n            font-size: 12px;\n            font-weight: 600;\n        }\n\n        \/* Cards Metrics *\/\n        .meteo-cards {\n            display: grid;\n            grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));\n            gap: 12px;\n            margin-bottom: 16px;\n        }\n\n        .card {\n            background: #ffffff;\n            padding: 14px;\n            border-radius: 12px;\n            box-shadow: 0 1px 3px rgba(0,0,0,0.05);\n            display: flex;\n            align-items: center;\n            gap: 12px;\n            border: 1px solid #f1f5f9;\n        }\n\n        .card-icon {\n            width: 40px;\n            height: 40px;\n            border-radius: 10px;\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            font-size: 18px;\n            flex-shrink: 0;\n        }\n\n        .card-content h3 {\n            margin: 0;\n            font-size: 11px;\n            text-transform: uppercase;\n            letter-spacing: 0.5px;\n            color: #64748b;\n            font-weight: 600;\n        }\n\n        .card-content p {\n            margin: 2px 0 0;\n            font-size: 16px;\n            font-weight: 700;\n            color: #0f172a;\n        }\n\n        \/* Colors for Cards *\/\n        .card-fecha .card-icon { background: #e0e7ff; color: #4338ca; }\n        .card-tmax .card-icon { background: #fee2e2; color: #dc2626; }\n        .card-tmin .card-icon { background: #e0f2fe; color: #0284c7; }\n        .card-precip .card-icon { background: #dcfce7; color: #16a34a; }\n\n        \/* Table Section *\/\n        .table-container {\n            background: #ffffff;\n            border-radius: 12px;\n            box-shadow: 0 1px 3px rgba(0,0,0,0.05);\n            overflow: hidden;\n            border: 1px solid #f1f5f9;\n            margin-bottom: 16px;\n        }\n\n        .table-wrapper {\n            overflow-x: auto;\n            -webkit-overflow-scrolling: touch;\n        }\n\n        .meteo-table {\n            width: 100%;\n            border-collapse: collapse;\n            text-align: left;\n            white-space: nowrap;\n        }\n\n        .meteo-table th {\n            background: #1b396a;\n            color: #ffffff;\n            font-weight: 600;\n            font-size: 12px;\n            padding: 12px 14px;\n            text-transform: uppercase;\n        }\n\n        .meteo-table td {\n            padding: 10px 14px;\n            border-bottom: 1px solid #f1f5f9;\n            font-size: 13px;\n            color: #334155;\n        }\n\n        .val-tmax { color: #dc2626; font-weight: 600; }\n        .val-tmin { color: #0284c7; font-weight: 600; }\n        .val-date { font-weight: 600; color: #1e293b; }\n\n        \/* Controls \/ Pagination *\/\n        .controls-panel {\n            display: flex;\n            justify-content: space-between;\n            align-items: center;\n            margin-bottom: 16px;\n            gap: 12px;\n            background: #ffffff;\n            padding: 14px;\n            border-radius: 12px;\n            border: 1px solid #f1f5f9;\n            flex-wrap: wrap;\n        }\n\n        .pagination-group {\n            display: flex;\n            align-items: center;\n            justify-content: space-between;\n            gap: 8px;\n            width: 100%;\n        }\n\n        .btn {\n            display: inline-flex;\n            align-items: center;\n            justify-content: center;\n            gap: 6px;\n            padding: 10px 14px;\n            font-size: 13px;\n            font-weight: 600;\n            border-radius: 8px;\n            border: none;\n            cursor: pointer;\n            transition: all 0.2s ease;\n        }\n\n        .btn-page {\n            background: #f1f5f9;\n            color: #334155;\n            flex: 1;\n        }\n\n        .btn-page:disabled {\n            opacity: 0.4;\n            cursor: not-allowed;\n        }\n\n        .btn-excel {\n            background: #16a34a;\n            color: #ffffff;\n            width: 100%;\n        }\n\n        .page-info {\n            font-size: 13px;\n            font-weight: 600;\n            color: #64748b;\n            text-align: center;\n            white-space: nowrap;\n            padding: 0 4px;\n        }\n\n        \/* Charts Grid *\/\n        .charts-grid {\n            display: grid;\n            grid-template-columns: 1fr;\n            gap: 16px;\n        }\n\n        .chart-card {\n            background: #ffffff;\n            padding: 16px;\n            border-radius: 12px;\n            border: 1px solid #f1f5f9;\n            box-shadow: 0 1px 3px rgba(0,0,0,0.05);\n            position: relative;\n        }\n\n        .chart-card h4 {\n            margin: 0 0 12px 0;\n            font-size: 14px;\n            color: #1e293b;\n            font-weight: 600;\n        }\n\n        .chart-container {\n            position: relative;\n            width: 100%;\n            height: 220px;\n        }\n\n        \/* Responsive Desktop adjustments *\/\n        @media (min-width: 768px) {\n            .meteo-dashboard { padding: 20px; }\n            .meteo-title-group h1 { font-size: 24px; }\n            .meteo-cards { grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); }\n            .card-content p { font-size: 20px; }\n            .pagination-group { width: auto; }\n            .btn-page { flex: initial; }\n            .btn-excel { width: auto; }\n            .charts-grid { grid-template-columns: repeat(2, 1fr); }\n            .chart-container { height: 260px; }\n        }\n    <\/style>\n\n    <!-- Header -->\n    <header class=\"meteo-header\">\n        <div class=\"meteo-brand\">\n            <img decoding=\"async\" src=\"https:\/\/roque.tecnm.mx\/wp-content\/uploads\/2026\/08\/LOGO-VERTICAL-TECNM_1.png\" alt=\"Logo TecNM\">\n            <div class=\"meteo-title-group\">\n                <h1 id=\"status-lectura\">Estaci\u00f3n Climatol\u00f3gica<\/h1>\n                <p>TecNM &#8211; Campus Roque<\/p>\n            <\/div>\n        <\/div>\n        <div class=\"status-badge\">\n            <svg width=\"8\" height=\"8\" viewBox=\"0 0 8 8\" fill=\"none\"><circle cx=\"4\" cy=\"4\" r=\"4\" fill=\"#0284c7\"\/><\/svg>\n            En l\u00ednea\n        <\/div>\n    <\/header>\n\n    <!-- Tarjetas de Resumen -->\n    <section class=\"meteo-cards\">\n        <div class=\"card card-fecha\">\n            <div class=\"card-icon\">\ud83d\udcc5<\/div>\n            <div class=\"card-content\">\n                <h3>\u00daltima Fecha<\/h3>\n                <p id=\"card-fecha\">&#8211;<\/p>\n            <\/div>\n        <\/div>\n        <div class=\"card card-tmax\">\n            <div class=\"card-icon\">\ud83d\udd25<\/div>\n            <div class=\"card-content\">\n                <h3>Temp. M\u00e1xima<\/h3>\n                <p id=\"card-tmax\">&#8211;<\/p>\n            <\/div>\n        <\/div>\n        <div class=\"card card-tmin\">\n            <div class=\"card-icon\">\u2744\ufe0f<\/div>\n            <div class=\"card-content\">\n                <h3>Temp. M\u00ednima<\/h3>\n                <p id=\"card-tmin\">&#8211;<\/p>\n            <\/div>\n        <\/div>\n        <div class=\"card card-precip\">\n            <div class=\"card-icon\">\ud83c\udf27\ufe0f<\/div>\n            <div class=\"card-content\">\n                <h3>Precipitaci\u00f3n<\/h3>\n                <p id=\"card-precip\">&#8211;<\/p>\n            <\/div>\n        <\/div>\n    <\/section>\n\n    <!-- Tabla -->\n    <div class=\"table-container\">\n        <div class=\"table-wrapper\">\n            <table class=\"meteo-table\">\n                <thead>\n                    <tr>\n                        <th>Fecha<\/th>\n                        <th>Precip. (mm)<\/th>\n                        <th>Evap. (mm)<\/th>\n                        <th>TMAX (\u00b0C)<\/th>\n                        <th>TMIN (\u00b0C)<\/th>\n                    <\/tr>\n                <\/thead>\n                <tbody id=\"cuerpoTabla\">\n                    <tr><td colspan=\"5\" style=\"text-align: center; color: #94a3b8; padding: 20px;\">Cargando datos&#8230;<\/td><\/tr>\n                <\/tbody>\n            <\/table>\n        <\/div>\n    <\/div>\n\n    <!-- Controles \/ Paginaci\u00f3n -->\n    <div class=\"controls-panel\">\n        <div class=\"pagination-group\">\n            <button class=\"btn btn-page\" id=\"btnPrev\" onclick=\"cambiarP(-1)\">\u2190 Anterior<\/button>\n            <span class=\"page-info\" id=\"txtPag\">Cargando&#8230;<\/span>\n            <button class=\"btn btn-page\" id=\"btnNext\" onclick=\"cambiarP(1)\">Siguiente \u2192<\/button>\n        <\/div>\n        <button class=\"btn btn-excel\" onclick=\"bajarExcel()\">\n            <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"\/><polyline points=\"7 10 12 15 17 10\"\/><line x1=\"12\" y1=\"15\" x2=\"12\" y2=\"3\"\/><\/svg>\n            Exportar a Excel\n        <\/button>\n    <\/div>\n\n    <!-- Gr\u00e1ficas -->\n    <div class=\"charts-grid\">\n        <div class=\"chart-card\">\n            <h4>Evoluci\u00f3n de Temperatura<\/h4>\n            <div class=\"chart-container\">\n                <canvas id=\"chartTemp\"><\/canvas>\n            <\/div>\n        <\/div>\n        <div class=\"chart-card\">\n            <h4>Balance H\u00eddrico (Precipitaci\u00f3n vs Evaporaci\u00f3n)<\/h4>\n            <div class=\"chart-container\">\n                <canvas id=\"chartHidro\"><\/canvas>\n            <\/div>\n        <\/div>\n    <\/div>\n<\/div>\n\n<!-- Scripts -->\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/chart.js\"><\/script>\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/xlsx@0.18.5\/dist\/xlsx.full.min.js\"><\/script>\n\n<script>\nconst URL_BASE = \"https:\/\/docs.google.com\/spreadsheets\/d\/e\/2PACX-1vQ31NDLYz24IwPjQzuDCfnrNGg78atioLNqLB9voMQAScDETfpFaUZg85kfPZ7N5fW52sPMEV7aE3dw\/pub?gid=23775817&single=true&output=csv\";\nconst URL_FINAL = URL_BASE + \"&cache_burst=\" + new Date().getTime();\n\nlet misDatos = [];\nlet pActual = 1;\nconst pSize = 10;\nlet cT, cH;\n\nasync function cargar() {\n    try {\n        const r = await fetch(URL_FINAL);\n        if (!r.ok) throw new Error(\"Google no responde\");\n        const texto = await r.text();\n        \n        const filas = texto.split(\/\\r?\\n\/);\n        const sep = filas[0].includes(';') ? ';' : ',';\n\n        misDatos = filas.slice(1)\n            .map(l => l.split(sep).map(celda => celda.replace(\/\"\/g, '').trim()))\n            .filter(f => f.length >= 5 && f[0] !== \"\");\n\n        if(misDatos.length === 0) throw new Error(\"Archivo vac\u00edo\");\n        \n        dibujar(1);\n    } catch (e) {\n        console.error(e);\n        document.getElementById('status-lectura').innerHTML = \"<span style='color:#dc2626'>Error al cargar datos<\/span>\";\n    }\n}\n\nfunction dibujar(p) {\n    pActual = p;\n    const inicio = (p - 1) * pSize;\n    const bloque = misDatos.slice(inicio, inicio + pSize);\n    const maxPaginas = Math.ceil(misDatos.length \/ pSize);\n    \n    \/\/ Renderizado de Tabla\n    document.getElementById(\"cuerpoTabla\").innerHTML = bloque.map(f => `\n        <tr>\n            <td class=\"val-date\">${f[0]}<\/td>\n            <td>${f[1]}<\/td>\n            <td>${f[2]}<\/td>\n            <td class=\"val-tmax\">${f[3]}<\/td>\n            <td class=\"val-tmin\">${f[4]}<\/td>\n        <\/tr>`).join('');\n\n    \/\/ Actualizaci\u00f3n de Tarjetas\n    const top = misDatos[0];\n    document.getElementById(\"card-fecha\").textContent = top[0];\n    document.getElementById(\"card-precip\").textContent = top[1] + \" mm\";\n    document.getElementById(\"card-tmax\").textContent = top[3] + \" \u00b0C\";\n    document.getElementById(\"card-tmin\").textContent = top[4] + \" \u00b0C\";\n\n    \/\/ Paginaci\u00f3n\n    document.getElementById(\"txtPag\").textContent = `${p} de ${maxPaginas}`;\n    document.getElementById(\"btnPrev\").disabled = (p === 1);\n    document.getElementById(\"btnNext\").disabled = (p >= maxPaginas);\n    \n    actualizarGraficas(bloque);\n}\n\nfunction actualizarGraficas(bloque) {\n    const labels = bloque.map(f => f[0]).reverse();\n    const tmax = bloque.map(f => parseFloat(f[3].replace(',', '.')) || 0).reverse();\n    const tmin = bloque.map(f => parseFloat(f[4].replace(',', '.')) || 0).reverse();\n    const precip = bloque.map(f => parseFloat(f[1].replace(',', '.')) || 0).reverse();\n    const evap = bloque.map(f => parseFloat(f[2].replace(',', '.')) || 0).reverse();\n\n    Chart.defaults.font.family = \"'Inter', sans-serif\";\n    Chart.defaults.color = \"#64748b\";\n\n    if (cT) cT.destroy();\n    cT = new Chart(document.getElementById('chartTemp'), {\n        type: 'line',\n        data: {\n            labels: labels,\n            datasets: [\n                { \n                    label: 'TMAX (\u00b0C)', \n                    data: tmax, \n                    borderColor: '#dc2626', \n                    backgroundColor: 'rgba(220, 38, 38, 0.05)',\n                    borderWidth: 2,\n                    pointRadius: 3,\n                    fill: true,\n                    tension: 0.3 \n                },\n                { \n                    label: 'TMIN (\u00b0C)', \n                    data: tmin, \n                    borderColor: '#0284c7', \n                    backgroundColor: 'rgba(2, 132, 199, 0.05)',\n                    borderWidth: 2,\n                    pointRadius: 3,\n                    fill: true,\n                    tension: 0.3 \n                }\n            ]\n        },\n        options: { \n            responsive: true,\n            maintainAspectRatio: false,\n            plugins: { \n                legend: { position: 'bottom', labels: { boxWidth: 12, padding: 8 } } \n            },\n            scales: {\n                x: { \n                    grid: { display: false },\n                    ticks: { maxRotation: 45, minRotation: 45, font: { size: 10 } }\n                },\n                y: { grid: { color: '#f1f5f9' }, ticks: { font: { size: 10 } } }\n            }\n        }\n    });\n\n    if (cH) cH.destroy();\n    cH = new Chart(document.getElementById('chartHidro'), {\n        type: 'bar',\n        data: {\n            labels: labels,\n            datasets: [\n                { \n                    label: 'Precipitaci\u00f3n (mm)', \n                    data: precip, \n                    backgroundColor: '#16a34a',\n                    borderRadius: 3\n                },\n                { \n                    label: 'Evaporaci\u00f3n (mm)', \n                    data: evap, \n                    backgroundColor: '#f59e0b',\n                    borderRadius: 3\n                }\n            ]\n        },\n        options: { \n            responsive: true,\n            maintainAspectRatio: false,\n            plugins: { \n                legend: { position: 'bottom', labels: { boxWidth: 12, padding: 8 } } \n            },\n            scales: {\n                x: { \n                    grid: { display: false },\n                    ticks: { maxRotation: 45, minRotation: 45, font: { size: 10 } }\n                },\n                y: { grid: { color: '#f1f5f9' }, ticks: { font: { size: 10 } } }\n            }\n        }\n    });\n}\n\nwindow.cambiarP = (d) => {\n    let n = pActual + d;\n    if (n > 0 && n <= Math.ceil(misDatos.length\/pSize)) dibujar(n);\n};\n\nwindow.bajarExcel = () => {\n    const headers = [[\"Fecha\", \"Precipitaci\u00f3n (mm)\", \"Evaporaci\u00f3n (mm)\", \"TMAX (\u00b0C)\", \"TMIN (\u00b0C)\"]];\n    const ws = XLSX.utils.aoa_to_sheet(headers.concat(misDatos));\n    const wb = XLSX.utils.book_new();\n    XLSX.utils.book_append_sheet(wb, ws, \"Clima\");\n    XLSX.writeFile(wb, \"Reporte_Meteo.xlsx\");\n};\n\ndocument.addEventListener(\"DOMContentLoaded\", cargar);\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>Estaci\u00f3n Climatol\u00f3gica TecNM &#8211; Campus Roque En l\u00ednea \ud83d\udcc5 \u00daltima Fecha &#8211; \ud83d\udd25 Temp. M\u00e1xima &#8211; \u2744\ufe0f Temp. M\u00ednima &#8211; \ud83c\udf27\ufe0f Precipitaci\u00f3n &#8211; Fecha Precip. (mm) Evap. (mm) TMAX (\u00b0C) TMIN (\u00b0C) Cargando datos&#8230; \u2190 Anterior Cargando&#8230; Siguiente \u2192 Exportar a Excel Evoluci\u00f3n de Temperatura Balance H\u00eddrico (Precipitaci\u00f3n vs Evaporaci\u00f3n)<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_uag_custom_page_level_css":"","footnotes":""},"class_list":["post-482","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>estacion_climatologica - Tecnol\u00f3gico Nacional de M\u00e9xico Campus Roque<\/title>\n<meta name=\"description\" content=\"Informaci\u00f3n y datos meteorol\u00f3gicos de la Estaci\u00f3n Climatol\u00f3gica del TecNM Campus Roque: temperatura, precipitaci\u00f3n y registros del tiempo en la regi\u00f3n.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/roque.tecnm.mx\/?page_id=482\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"estacion_climatologica - Tecnol\u00f3gico Nacional de M\u00e9xico Campus Roque\" \/>\n<meta property=\"og:description\" content=\"Informaci\u00f3n y datos meteorol\u00f3gicos de la Estaci\u00f3n Climatol\u00f3gica del TecNM Campus Roque: temperatura, precipitaci\u00f3n y registros del tiempo en la regi\u00f3n.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/roque.tecnm.mx\/?page_id=482\" \/>\n<meta property=\"og:site_name\" content=\"Tecnol\u00f3gico Nacional de M\u00e9xico Campus Roque\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/TecNMRoque\/?locale=es_LA\" \/>\n<meta property=\"article:modified_time\" content=\"2026-09-04T18:25:26+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/roque.tecnm.mx\/wp-content\/uploads\/2026\/08\/LOGO-VERTICAL-TECNM_1.png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minuto\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/roque.tecnm.mx\\\/?page_id=482\",\"url\":\"https:\\\/\\\/roque.tecnm.mx\\\/?page_id=482\",\"name\":\"estacion_climatologica - Tecnol\u00f3gico Nacional de M\u00e9xico Campus Roque\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/roque.tecnm.mx\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/roque.tecnm.mx\\\/?page_id=482#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/roque.tecnm.mx\\\/?page_id=482#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/roque.tecnm.mx\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/LOGO-VERTICAL-TECNM_1.png\",\"datePublished\":\"2026-07-01T18:19:12+00:00\",\"dateModified\":\"2026-09-04T18:25:26+00:00\",\"description\":\"Informaci\u00f3n y datos meteorol\u00f3gicos de la Estaci\u00f3n Climatol\u00f3gica del TecNM Campus Roque: temperatura, precipitaci\u00f3n y registros del tiempo en la regi\u00f3n.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/roque.tecnm.mx\\\/?page_id=482#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/roque.tecnm.mx\\\/?page_id=482\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/roque.tecnm.mx\\\/?page_id=482#primaryimage\",\"url\":\"https:\\\/\\\/roque.tecnm.mx\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/LOGO-VERTICAL-TECNM_1.png\",\"contentUrl\":\"https:\\\/\\\/roque.tecnm.mx\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/LOGO-VERTICAL-TECNM_1.png\",\"width\":512,\"height\":512},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/roque.tecnm.mx\\\/?page_id=482#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Inicio\",\"item\":\"https:\\\/\\\/roque.tecnm.mx\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"estacion_climatologica\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/roque.tecnm.mx\\\/#website\",\"url\":\"https:\\\/\\\/roque.tecnm.mx\\\/\",\"name\":\"Tecnol\u00f3gico Nacional de M\u00e9xico Campus Roque\",\"description\":\"Tecnol\u00f3gico Nacional de M\u00e9xico Campus Roque\",\"publisher\":{\"@id\":\"https:\\\/\\\/roque.tecnm.mx\\\/#organization\"},\"alternateName\":\"TecNM Roque\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/roque.tecnm.mx\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/roque.tecnm.mx\\\/#organization\",\"name\":\"Tecnol\u00f3gico Nacional de M\u00e9xico Campus Roque\",\"url\":\"https:\\\/\\\/roque.tecnm.mx\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/roque.tecnm.mx\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/roque.tecnm.mx\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/CENTENARIO-VERTICAL.jpg\",\"contentUrl\":\"https:\\\/\\\/roque.tecnm.mx\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/CENTENARIO-VERTICAL.jpg\",\"width\":1563,\"height\":1563,\"caption\":\"Tecnol\u00f3gico Nacional de M\u00e9xico Campus Roque\"},\"image\":{\"@id\":\"https:\\\/\\\/roque.tecnm.mx\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/TecNMRoque\\\/?locale=es_LA\",\"https:\\\/\\\/www.youtube.com\\\/channel\\\/UCvF8b_ZQj2yhcsvaE0VYcsQ\",\"https:\\\/\\\/www.instagram.com\\\/tecroque\\\/\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"estacion_climatologica - Tecnol\u00f3gico Nacional de M\u00e9xico Campus Roque","description":"Informaci\u00f3n y datos meteorol\u00f3gicos de la Estaci\u00f3n Climatol\u00f3gica del TecNM Campus Roque: temperatura, precipitaci\u00f3n y registros del tiempo en la regi\u00f3n.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/roque.tecnm.mx\/?page_id=482","og_locale":"es_MX","og_type":"article","og_title":"estacion_climatologica - Tecnol\u00f3gico Nacional de M\u00e9xico Campus Roque","og_description":"Informaci\u00f3n y datos meteorol\u00f3gicos de la Estaci\u00f3n Climatol\u00f3gica del TecNM Campus Roque: temperatura, precipitaci\u00f3n y registros del tiempo en la regi\u00f3n.","og_url":"https:\/\/roque.tecnm.mx\/?page_id=482","og_site_name":"Tecnol\u00f3gico Nacional de M\u00e9xico Campus Roque","article_publisher":"https:\/\/www.facebook.com\/TecNMRoque\/?locale=es_LA","article_modified_time":"2026-09-04T18:25:26+00:00","og_image":[{"url":"https:\/\/roque.tecnm.mx\/wp-content\/uploads\/2026\/08\/LOGO-VERTICAL-TECNM_1.png","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_misc":{"Tiempo de lectura":"1 minuto"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/roque.tecnm.mx\/?page_id=482","url":"https:\/\/roque.tecnm.mx\/?page_id=482","name":"estacion_climatologica - Tecnol\u00f3gico Nacional de M\u00e9xico Campus Roque","isPartOf":{"@id":"https:\/\/roque.tecnm.mx\/#website"},"primaryImageOfPage":{"@id":"https:\/\/roque.tecnm.mx\/?page_id=482#primaryimage"},"image":{"@id":"https:\/\/roque.tecnm.mx\/?page_id=482#primaryimage"},"thumbnailUrl":"https:\/\/roque.tecnm.mx\/wp-content\/uploads\/2026\/08\/LOGO-VERTICAL-TECNM_1.png","datePublished":"2026-07-01T18:19:12+00:00","dateModified":"2026-09-04T18:25:26+00:00","description":"Informaci\u00f3n y datos meteorol\u00f3gicos de la Estaci\u00f3n Climatol\u00f3gica del TecNM Campus Roque: temperatura, precipitaci\u00f3n y registros del tiempo en la regi\u00f3n.","breadcrumb":{"@id":"https:\/\/roque.tecnm.mx\/?page_id=482#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/roque.tecnm.mx\/?page_id=482"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/roque.tecnm.mx\/?page_id=482#primaryimage","url":"https:\/\/roque.tecnm.mx\/wp-content\/uploads\/2026\/08\/LOGO-VERTICAL-TECNM_1.png","contentUrl":"https:\/\/roque.tecnm.mx\/wp-content\/uploads\/2026\/08\/LOGO-VERTICAL-TECNM_1.png","width":512,"height":512},{"@type":"BreadcrumbList","@id":"https:\/\/roque.tecnm.mx\/?page_id=482#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Inicio","item":"https:\/\/roque.tecnm.mx\/"},{"@type":"ListItem","position":2,"name":"estacion_climatologica"}]},{"@type":"WebSite","@id":"https:\/\/roque.tecnm.mx\/#website","url":"https:\/\/roque.tecnm.mx\/","name":"Tecnol\u00f3gico Nacional de M\u00e9xico Campus Roque","description":"Tecnol\u00f3gico Nacional de M\u00e9xico Campus Roque","publisher":{"@id":"https:\/\/roque.tecnm.mx\/#organization"},"alternateName":"TecNM Roque","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/roque.tecnm.mx\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/roque.tecnm.mx\/#organization","name":"Tecnol\u00f3gico Nacional de M\u00e9xico Campus Roque","url":"https:\/\/roque.tecnm.mx\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/roque.tecnm.mx\/#\/schema\/logo\/image\/","url":"https:\/\/roque.tecnm.mx\/wp-content\/uploads\/2026\/06\/CENTENARIO-VERTICAL.jpg","contentUrl":"https:\/\/roque.tecnm.mx\/wp-content\/uploads\/2026\/06\/CENTENARIO-VERTICAL.jpg","width":1563,"height":1563,"caption":"Tecnol\u00f3gico Nacional de M\u00e9xico Campus Roque"},"image":{"@id":"https:\/\/roque.tecnm.mx\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/TecNMRoque\/?locale=es_LA","https:\/\/www.youtube.com\/channel\/UCvF8b_ZQj2yhcsvaE0VYcsQ","https:\/\/www.instagram.com\/tecroque\/"]}]}},"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false},"uagb_author_info":{"display_name":"Carnero","author_link":"https:\/\/roque.tecnm.mx\/?author=1"},"uagb_comment_info":0,"uagb_excerpt":"Estaci\u00f3n Climatol\u00f3gica TecNM &#8211; Campus Roque En l\u00ednea \ud83d\udcc5 \u00daltima Fecha &#8211; \ud83d\udd25 Temp. M\u00e1xima &#8211; \u2744\ufe0f Temp. M\u00ednima &#8211; \ud83c\udf27\ufe0f Precipitaci\u00f3n &#8211; Fecha Precip. (mm) Evap. (mm) TMAX (\u00b0C) TMIN (\u00b0C) Cargando datos&#8230; \u2190 Anterior Cargando&#8230; Siguiente \u2192 Exportar a Excel Evoluci\u00f3n de Temperatura Balance H\u00eddrico (Precipitaci\u00f3n vs Evaporaci\u00f3n)","_links":{"self":[{"href":"https:\/\/roque.tecnm.mx\/index.php?rest_route=\/wp\/v2\/pages\/482","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/roque.tecnm.mx\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/roque.tecnm.mx\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/roque.tecnm.mx\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/roque.tecnm.mx\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=482"}],"version-history":[{"count":45,"href":"https:\/\/roque.tecnm.mx\/index.php?rest_route=\/wp\/v2\/pages\/482\/revisions"}],"predecessor-version":[{"id":2346,"href":"https:\/\/roque.tecnm.mx\/index.php?rest_route=\/wp\/v2\/pages\/482\/revisions\/2346"}],"wp:attachment":[{"href":"https:\/\/roque.tecnm.mx\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=482"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}