{"id":3255,"date":"2026-05-17T11:12:57","date_gmt":"2026-05-17T09:12:57","guid":{"rendered":"https:\/\/civiltracks.com\/?page_id=3255"},"modified":"2026-05-24T13:59:51","modified_gmt":"2026-05-24T11:59:51","slug":"trazado-ffcc","status":"publish","type":"page","link":"https:\/\/civiltracks.com\/index.php\/trazado-ffcc\/","title":{"rendered":"Trazado FFCC"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"3255\" class=\"elementor elementor-3255\">\n\t\t\t\t<div class=\"elementor-element elementor-element-bf2b210 e-con-full e-flex e-con e-parent\" data-id=\"bf2b210\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-d62e0f4 elementor-widget elementor-widget-html\" data-id=\"d62e0f4\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<style>\r\n.trazado-app {\r\n  max-width: 1180px;\r\n  margin: 0 auto;\r\n  padding: 32px;\r\n  font-family: system-ui, sans-serif;\r\n  color: #1f2933;\r\n  background: #DED1FF;\r\n  border-radius: 24px;\r\n}\r\n\r\n.trazado-card {\r\n  background: #ffffff;\r\n  border: 1px solid #d9e2ec;\r\n  border-radius: 16px;\r\n  padding: 24px;\r\n  margin-bottom: 24px;\r\n}\r\n\r\n.trazado-header {\r\n  background: #f3e8ff;\r\n  border: 1px solid #d8b4fe;\r\n}\r\n\r\n.trazado-header h2 {\r\n  font-size: 34px;\r\n}\r\n\r\n.trazado-card h2,\r\n.trazado-card h3 {\r\n  margin-top: 0;\r\n}\r\n\r\n.trazado-grid {\r\n  display: grid;\r\n  grid-template-columns: repeat(5, 1fr);\r\n  gap: 16px;\r\n}\r\n\r\n.trazado-tablas-grid {\r\n  display: grid;\r\n  grid-template-columns: 1fr 1fr;\r\n  gap: 24px;\r\n}\r\n\r\n.trazado-field label {\r\n  display: block;\r\n  margin-bottom: 6px;\r\n  font-size: 13px;\r\n  font-weight: 600;\r\n}\r\n\r\n.trazado-field input,\r\n.trazado-field select {\r\n  width: 100%;\r\n  padding: 10px;\r\n  border: 1px solid #dccffb;\r\n  background: #faf7ff;\r\n  border-radius: 10px;\r\n  box-sizing: border-box;\r\n}\r\n\r\n.trazado-field input:focus,\r\n.trazado-field select:focus {\r\n  outline: none;\r\n  border-color: #61CE70;\r\n  background: #ffffff;\r\n  box-shadow: 0 0 0 3px rgba(97, 206, 112, 0.15);\r\n}\r\n\r\n.trazado-button,\r\n.trazado-button:hover,\r\n.trazado-button:focus,\r\n.trazado-button:active {\r\n  margin-top: 20px;\r\n  padding: 13px 22px;\r\n  border: none;\r\n  border-radius: 12px;\r\n  background: #61CE70 !important;\r\n  color: white !important;\r\n  font-weight: 700;\r\n  cursor: pointer;\r\n  box-shadow: none;\r\n}\r\n\r\n.trazado-chart {\r\n  width: 100%;\r\n  height: 520px;\r\n}\r\n\r\n.trazado-table {\r\n  width: 100%;\r\n  border-collapse: collapse;\r\n  font-size: 11px;\r\n  table-layout: fixed;\r\n}\r\n\r\n.trazado-table th {\r\n  background: #f3e8ff;\r\n  padding: 2px 4px;\r\n  border: 1px solid #d8b4fe;\r\n}\r\n\r\n.trazado-table td {\r\n  padding: 1px 3px;\r\n  border: 1px solid #d9e2ec;\r\n}\r\n\r\n.trazado-table input,\r\n.trazado-table select {\r\n  width: 100%;\r\n  padding: 1px 4px;\r\n  height: 24px;\r\n  box-sizing: border-box;\r\n  text-align: right;\r\n  font-size: 11px;\r\n  border: 1px solid #e8dcff;\r\n  background: #faf7ff;\r\n  border-radius: 5px;\r\n}\r\n\r\n.trazado-table input:focus,\r\n.trazado-table select:focus {\r\n  outline: none;\r\n  border-color: #61CE70;\r\n  background: #ffffff;\r\n  box-shadow: 0 0 0 3px rgba(97, 206, 112, 0.15);\r\n}\r\n\r\n@media (max-width: 900px) {\r\n\r\n  .trazado-grid {\r\n    grid-template-columns: repeat(2, 1fr);\r\n  }\r\n\r\n  .trazado-tablas-grid {\r\n    grid-template-columns: 1fr;\r\n  }\r\n\r\n}\r\n<\/style>\r\n\r\n<div class=\"trazado-app\">\r\n\r\n<div class=\"trazado-card trazado-header\">\r\n<h2>Dibujo de trazado ferroviario<\/h2>\r\n<p>Programa educativo en pruebas. No v\u00e1lido para uso profesional.<\/p>\r\n<\/div>\r\n\r\n<div class=\"trazado-card\">\r\n\r\n<div class=\"trazado-grid\">\r\n\r\n<div class=\"trazado-field\">\r\n<label>PPKK inicial (m)<\/label>\r\n<input id=\"PPKK0\" type=\"text\" inputmode=\"decimal\" value=\"0\">\r\n<\/div>\r\n\r\n<div class=\"trazado-field\">\r\n<label>X inicial (m)<\/label>\r\n<input id=\"X0\" type=\"text\" inputmode=\"decimal\" value=\"0\">\r\n<\/div>\r\n\r\n<div class=\"trazado-field\">\r\n<label>Y inicial (m)<\/label>\r\n<input id=\"Y0\" type=\"text\" inputmode=\"decimal\" value=\"0\">\r\n<\/div>\r\n\r\n<div class=\"trazado-field\">\r\n<label>Azimut inicial (grados cent.)<\/label>\r\n<input id=\"AzimutIni\" type=\"text\" inputmode=\"decimal\" value=\"80\">\r\n<\/div>\r\n\r\n<div class=\"trazado-field\">\r\n<label>Z inicial (m)<\/label>\r\n<input id=\"Z0\" type=\"text\" inputmode=\"decimal\" value=\"100\">\r\n<\/div>\r\n\r\n<div class=\"trazado-field\">\r\n<label>Pendiente inicial \u2030<\/label>\r\n<input id=\"PendienteI\" type=\"text\" inputmode=\"decimal\" value=\"4\">\r\n<\/div>\r\n\r\n<div class=\"trazado-field\">\r\n<label>Huso UTM<\/label>\r\n<input id=\"HusoUTM\" type=\"text\" inputmode=\"decimal\" value=\"30\">\r\n<\/div>\r\n\r\n<div class=\"trazado-field\">\r\n<label>Intervalo de puntos (m)<\/label>\r\n<input id=\"Paso\" type=\"text\" inputmode=\"decimal\" value=\"10\">\r\n<\/div>\r\n\r\n<div class=\"trazado-field\">\r\n<label>Salida<\/label>\r\n<select id=\"Salida\">\r\n<option value=\"Civiltracks\">Civiltracks<\/option>\r\n<option value=\"KML\">KML<\/option>\r\n<option value=\"DXF\">DXF<\/option>\r\n<\/select>\r\n<\/div>\r\n\r\n<\/div>\r\n<\/div>\r\n\r\n<div class=\"trazado-tablas-grid\">\r\n\r\n<div class=\"trazado-card\">\r\n<h3>Alineaciones en planta<\/h3>\r\n<table class=\"trazado-table\">\r\n<thead>\r\n<tr>\r\n<th>N\u00ba<\/th>\r\n<th>Tipo<\/th>\r\n<th>Longitud<\/th>\r\n<th>Radio\/Par\u00e1metro Clot.<\/th>\r\n<\/tr>\r\n<\/thead>\r\n<tbody id=\"tablaPlanta\"><\/tbody>\r\n<\/table>\r\n<\/div>\r\n\r\n<div class=\"trazado-card\">\r\n<h3>Alineaciones en alzado<\/h3>\r\n<table class=\"trazado-table\">\r\n<thead>\r\n<tr>\r\n<th>N\u00ba<\/th>\r\n<th>PPKK entrada<\/th>\r\n<th>PPKK salida<\/th>\r\n<th>Kv<\/th>\r\n<\/tr>\r\n<\/thead>\r\n<tbody id=\"tablaAlzado\"><\/tbody>\r\n<\/table>\r\n<\/div>\r\n\r\n<\/div>\r\n\r\n<div class=\"trazado-card\">\r\n\r\n<button class=\"trazado-button\" onclick=\"capturarDatosTrazado()\">\r\nCalcular trazado\r\n<\/button>\r\n\r\n<div id=\"estadoTrazado\">\r\nLa conexi\u00f3n inicial con el servidor de c\u00e1lculo puede tardar de 1 a 30 segundos.\r\n<\/div>\r\n\r\n<\/div>\r\n\r\n<div class=\"trazado-card\">\r\n\r\n<h3>Gr\u00e1fico del trazado<\/h3>\r\n<div id=\"grafico_trazado\" class=\"trazado-chart\"><\/div>\r\n\r\n<\/div>\r\n\r\n<div class=\"trazado-card\">\r\n\r\n<h3>Listado de coordenadas<\/h3>\r\n\r\n<table class=\"trazado-table\">\r\n<thead>\r\n<tr>\r\n<th>Alin<\/th>\r\n<th>Tipo<\/th>\r\n<th>PPKK<\/th>\r\n<th>X<\/th>\r\n<th>Y<\/th>\r\n<th>Z<\/th>\r\n<th>Azimut<\/th>\r\n<th>Radio<\/th>\r\n<\/tr>\r\n<\/thead>\r\n<tbody id=\"tablaResultados\"><\/tbody>\r\n<\/table>\r\n\r\n<\/div>\r\n\r\n<\/div>\r\n\r\n<script src=\"https:\/\/cdn.plot.ly\/plotly-2.35.2.min.js\"><\/script>\r\n\r\n<script>\r\n\r\nfunction crearTablasTrazado() {\r\n\r\n  let tablaPlanta =\r\n  document.getElementById(\"tablaPlanta\");\r\n\r\n  let tablaAlzado =\r\n  document.getElementById(\"tablaAlzado\");\r\n\r\n  let ejemploPlanta = [\r\n    { TipoAlin: \"1\", LongAlin: \"60\", RadioAlin: \"0\" },\r\n    { TipoAlin: \"2\", LongAlin: \"80\", RadioAlin: \"-500\" },\r\n    { TipoAlin: \"3\", LongAlin: \"100\", RadioAlin: \"223.6067977\" },\r\n    { TipoAlin: \"3\", LongAlin: \"120\", RadioAlin: \"189.7366596\" },\r\n    { TipoAlin: \"2\", LongAlin: \"100\", RadioAlin: \"300\" }\r\n  ];\r\n\r\n  let ejemploAlzado = [\r\n    { PPKKEntrada: \"40\", PPKKSalida: \"80\", KvAlinA: \"2000\" }\r\n  ];\r\n\r\n  for (let i = 1; i <= 10; i++) {\r\n\r\n    let p =\r\n    ejemploPlanta[i - 1] || {\r\n      TipoAlin: \"\",\r\n      LongAlin: \"\",\r\n      RadioAlin: \"\"\r\n    };\r\n\r\n    let a =\r\n    ejemploAlzado[i - 1] || {\r\n      PPKKEntrada: \"\",\r\n      PPKKSalida: \"\",\r\n      KvAlinA: \"\"\r\n    };\r\n\r\n    tablaPlanta.innerHTML += `\r\n      <tr>\r\n        <td>${i}<\/td>\r\n\r\n        <td>\r\n          <select id=\"TipoAlin_${i}\">\r\n            <option value=\"\"><\/option>\r\n            <option value=\"1\" ${p.TipoAlin === \"1\" ? \"selected\" : \"\"}>Recta<\/option>\r\n            <option value=\"2\" ${p.TipoAlin === \"2\" ? \"selected\" : \"\"}>Curva<\/option>\r\n            <option value=\"3\" ${p.TipoAlin === \"3\" ? \"selected\" : \"\"}>Clotoide<\/option>\r\n          <\/select>\r\n        <\/td>\r\n\r\n        <td>\r\n          <input\r\n            id=\"LongAlin_${i}\"\r\n            type=\"text\"\r\n            inputmode=\"decimal\"\r\n            value=\"${p.LongAlin}\"\r\n          >\r\n        <\/td>\r\n\r\n        <td>\r\n          <input\r\n            id=\"RadioAlin_${i}\"\r\n            type=\"text\"\r\n            inputmode=\"decimal\"\r\n            value=\"${p.RadioAlin}\"\r\n          >\r\n        <\/td>\r\n      <\/tr>\r\n    `;\r\n\r\n    tablaAlzado.innerHTML += `\r\n      <tr>\r\n        <td>${i}<\/td>\r\n\r\n        <td>\r\n          <input\r\n            id=\"PPKKEntrada_${i}\"\r\n            type=\"text\"\r\n            inputmode=\"decimal\"\r\n            value=\"${a.PPKKEntrada}\"\r\n          >\r\n        <\/td>\r\n\r\n        <td>\r\n          <input\r\n            id=\"PPKKSalida_${i}\"\r\n            type=\"text\"\r\n            inputmode=\"decimal\"\r\n            value=\"${a.PPKKSalida}\"\r\n          >\r\n        <\/td>\r\n\r\n        <td>\r\n          <input\r\n            id=\"KvAlinA_${i}\"\r\n            type=\"text\"\r\n            inputmode=\"decimal\"\r\n            value=\"${a.KvAlinA}\"\r\n          >\r\n        <\/td>\r\n      <\/tr>\r\n    `;\r\n  }\r\n\r\n}\r\n\r\nfunction leerNumero(id) {\r\n\r\n  let valor =\r\n  document.getElementById(id).value;\r\n\r\n  if (valor === \"\") {\r\n    return null;\r\n  }\r\n\r\n  return Number(valor);\r\n\r\n}\r\n\r\nfunction capturarDatosTrazado() {\r\n\r\n  let datos = {};\r\n\r\n  datos[\"Salida\"] =\r\n  document.getElementById(\"Salida\").value;\r\n\r\n  datos[\"PPKK0\"] = leerNumero(\"PPKK0\");\r\n  datos[\"X0\"] = leerNumero(\"X0\");\r\n  datos[\"Y0\"] = leerNumero(\"Y0\");\r\n  datos[\"Z0\"] = leerNumero(\"Z0\");\r\n  datos[\"AzimutIni\"] = leerNumero(\"AzimutIni\");\r\n  datos[\"Paso\"] = leerNumero(\"Paso\");\r\n  datos[\"PendienteI\"] = leerNumero(\"PendienteI\");\r\n  datos[\"HusoUTM\"] = leerNumero(\"HusoUTM\");\r\n\r\n  datos[\"Planta\"] = [];\r\n  datos[\"Alzado\"] = [];\r\n\r\n  for (let i = 1; i <= 10; i++) {\r\n\r\n    let TipoAlin =\r\n    document.getElementById(\r\n      \"TipoAlin_\" + i\r\n    ).value;\r\n\r\n    let LongAlin =\r\n    leerNumero(\"LongAlin_\" + i);\r\n\r\n    let RadioAlin =\r\n    leerNumero(\"RadioAlin_\" + i);\r\n\r\n    if (TipoAlin !== \"\") {\r\n\r\n      datos[\"Planta\"].push({\r\n        \"TipoAlin\": Number(TipoAlin),\r\n        \"LongAlin\": LongAlin,\r\n        \"RadioAlin\": RadioAlin\r\n      });\r\n\r\n    }\r\n\r\n    let PPKKEntrada =\r\n    leerNumero(\"PPKKEntrada_\" + i);\r\n\r\n    let PPKKSalida =\r\n    leerNumero(\"PPKKSalida_\" + i);\r\n\r\n    let KvAlinA =\r\n    leerNumero(\"KvAlinA_\" + i);\r\n\r\n    if (\r\n      PPKKEntrada !== null ||\r\n      PPKKSalida !== null ||\r\n      KvAlinA !== null\r\n    ) {\r\n\r\n      datos[\"Alzado\"].push({\r\n        \"PPKKEntrada\": PPKKEntrada,\r\n        \"PPKKSalida\": PPKKSalida,\r\n        \"KvAlinA\": KvAlinA\r\n      });\r\n\r\n    }\r\n\r\n  }\r\n\r\n  document.getElementById(\"estadoTrazado\").innerText =\r\n  \"Calculando trazado...\";\r\n\r\n  fetch(\r\n    \"https:\/\/servidorffcc.onrender.com\/calcular_dibujotrazado\",\r\n    {\r\n      method: \"POST\",\r\n\r\n      headers: {\r\n        \"Content-Type\": \"application\/json\"\r\n      },\r\n\r\n      body: JSON.stringify(datos)\r\n    }\r\n  )\r\n\r\n  .then(async response => {\r\n\r\n    let resultado =\r\n    await response.json();\r\n\r\n    if (!response.ok) {\r\n      throw new Error(resultado.error);\r\n    }\r\n\r\n    return resultado;\r\n\r\n  })\r\n\r\n  .then(resultado => {\r\n\r\n    if (\r\n      datos[\"Salida\"] === \"Civiltracks\"\r\n    ) {\r\n\r\n      dibujarTrazado(resultado.plotly);\r\n\r\n      rellenarTablaResultados(\r\n        resultado.listado\r\n      );\r\n\r\n      document.getElementById(\"estadoTrazado\").innerText =\r\n      \"Trazado calculado correctamente.\";\r\n\r\n    }\r\n\r\n    else if (\r\n      datos[\"Salida\"] === \"KML\"\r\n    ) {\r\n\r\n      descargarKML(\r\n        resultado.kml\r\n      );\r\n\r\n      document.getElementById(\"estadoTrazado\").innerText =\r\n      \"Fichero KML generado correctamente.\";\r\n\r\n    }\r\n\r\n    else if (\r\n      datos[\"Salida\"] === \"DXF\"\r\n    ) {\r\n\r\n      descargarDXF(\r\n        resultado.dxf\r\n      );\r\n\r\n      document.getElementById(\"estadoTrazado\").innerText =\r\n      \"Fichero DXF generado correctamente.\";\r\n\r\n    }\r\n\r\n  })\r\n\r\n  .catch(error => {\r\n\r\n    document.getElementById(\"estadoTrazado\").innerText =\r\n    \"Error en el c\u00e1lculo.\";\r\n\r\n    alert(error.message);\r\n\r\n  });\r\n\r\n}\r\n\r\nfunction descargarKML(kmlTexto) {\r\n\r\n  let blob =\r\n  new Blob(\r\n    [kmlTexto],\r\n    {\r\n      type: \"application\/vnd.google-earth.kml+xml\"\r\n    }\r\n  );\r\n\r\n  let url =\r\n  URL.createObjectURL(blob);\r\n\r\n  let enlace =\r\n  document.createElement(\"a\");\r\n\r\n  enlace.href = url;\r\n\r\n  enlace.download =\r\n  \"Civiltracks.kml\";\r\n\r\n  document.body.appendChild(enlace);\r\n\r\n  enlace.click();\r\n\r\n  document.body.removeChild(enlace);\r\n\r\n  URL.revokeObjectURL(url);\r\n\r\n}\r\n\r\nfunction descargarDXF(dxfTexto) {\r\n\r\n  let blob =\r\n  new Blob(\r\n    [dxfTexto],\r\n    {\r\n      type: \"application\/dxf\"\r\n    }\r\n  );\r\n\r\n  let url =\r\n  URL.createObjectURL(blob);\r\n\r\n  let enlace =\r\n  document.createElement(\"a\");\r\n\r\n  enlace.href = url;\r\n\r\n  enlace.download =\r\n  \"Civiltracks.dxf\";\r\n\r\n  document.body.appendChild(enlace);\r\n\r\n  enlace.click();\r\n\r\n  document.body.removeChild(enlace);\r\n\r\n  URL.revokeObjectURL(url);\r\n\r\n}\r\n\r\nfunction dibujarTrazado(datosPlotly) {\r\n\r\n  let customdata = [];\r\n\r\n  for (\r\n    let i = 0;\r\n    i < datosPlotly.x.length;\r\n    i++\r\n  ) {\r\n\r\n    customdata.push([\r\n      datosPlotly.ppkk[i],\r\n      datosPlotly.z[i],\r\n      datosPlotly.azimut[i]\r\n    ]);\r\n\r\n  }\r\n\r\n  let traza = {\r\n\r\n    x: datosPlotly.x,\r\n    y: datosPlotly.y,\r\n\r\n    customdata: customdata,\r\n\r\n    mode: \"lines+markers\",\r\n\r\n    type: \"scatter\",\r\n\r\n    showlegend: false,\r\n\r\n    hovertemplate:\r\n      \"PPKK: %{customdata[0]:.3f}<br>\" +\r\n      \"X: %{x:.3f}<br>\" +\r\n      \"Y: %{y:.3f}<br>\" +\r\n      \"Z: %{customdata[1]:.3f}<br>\" +\r\n      \"Azimut: %{customdata[2]:.6f}<extra><\/extra>\",\r\n\r\n    marker: {\r\n      size: 4\r\n    }\r\n\r\n  };\r\n\r\n  let trazas = [traza];\r\n\r\n  if (datosPlotly.marcas) {\r\n\r\n    datosPlotly.marcas.forEach(\r\n      marca => {\r\n\r\n      trazas.push({\r\n\r\n        x: marca.x,\r\n        y: marca.y,\r\n\r\n        mode: \"lines\",\r\n\r\n        type: \"scatter\",\r\n\r\n        showlegend: false,\r\n\r\n        hoverinfo: \"skip\",\r\n\r\n        line: {\r\n          width: 2,\r\n          color: \"#7c3aed\"\r\n        }\r\n\r\n      });\r\n\r\n    });\r\n\r\n  }\r\n\r\n  Plotly.newPlot(\r\n\r\n    \"grafico_trazado\",\r\n\r\n    trazas,\r\n\r\n    {\r\n      showlegend: false,\r\n\r\n      yaxis: {\r\n        scaleanchor: \"x\",\r\n        scaleratio: 1\r\n      }\r\n    },\r\n\r\n    {\r\n      responsive: true,\r\n      displaylogo: false\r\n    }\r\n\r\n  );\r\n\r\n}\r\n\r\nfunction rellenarTablaResultados(\r\n  listado\r\n) {\r\n\r\n  let tabla =\r\n  document.getElementById(\r\n    \"tablaResultados\"\r\n  );\r\n\r\n  tabla.innerHTML = \"\";\r\n\r\n  listado.forEach(p => {\r\n\r\n    tabla.innerHTML += `\r\n      <tr>\r\n\r\n        <td style=\"text-align:right;\">\r\n          ${p.Alin}\r\n        <\/td>\r\n\r\n        <td>\r\n          ${p.Tipo}\r\n        <\/td>\r\n\r\n        <td style=\"text-align:right;\">\r\n          ${Number(p.PPKK).toFixed(3)}\r\n        <\/td>\r\n\r\n        <td style=\"text-align:right;\">\r\n          ${Number(p.X).toFixed(3)}\r\n        <\/td>\r\n\r\n        <td style=\"text-align:right;\">\r\n          ${Number(p.Y).toFixed(3)}\r\n        <\/td>\r\n\r\n        <td style=\"text-align:right;\">\r\n          ${Number(p.Z).toFixed(3)}\r\n        <\/td>\r\n\r\n        <td style=\"text-align:right;\">\r\n          ${Number(p.Azimut).toFixed(6)}\r\n        <\/td>\r\n\r\n        <td style=\"text-align:right;\">\r\n          ${Number(p.Radio).toFixed(3)}\r\n        <\/td>\r\n\r\n      <\/tr>\r\n    `;\r\n\r\n  });\r\n\r\n}\r\n\r\ncrearTablasTrazado();\r\n\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Dibujo de trazado ferroviario Programa educativo en pruebas. No v\u00e1lido para uso profesional. PPKK inicial (m) X inicial (m) Y [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"om_disable_all_campaigns":false,"site-sidebar-layout":"no-sidebar","site-content-layout":"","ast-site-content-layout":"full-width-container","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"disabled","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-3255","page","type-page","status-publish","hentry"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.9 - aioseo.com -->\n\t<meta name=\"description\" content=\"Dibujo de trazado ferroviario Programa educativo en pruebas. No v\u00e1lido para uso profesional. PPKK inicial (m) X inicial (m) Y inicial (m) Azimut inicial (grados cent.) Z inicial (m) Pendiente inicial \u2030 Huso UTM Intervalo de puntos (m) Salida Civiltracks KML DXF Alineaciones en planta N\u00ba Tipo Longitud Radio\/Par\u00e1metro Clot. Alineaciones en alzado N\u00ba PPKK\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<link rel=\"canonical\" href=\"https:\/\/civiltracks.com\/index.php\/trazado-ffcc\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.9\" \/>\n\t\t<meta property=\"og:locale\" content=\"es_ES\" \/>\n\t\t<meta property=\"og:site_name\" content=\"civiltracks.com -\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Trazado FFCC - civiltracks.com\" \/>\n\t\t<meta property=\"og:description\" content=\"Dibujo de trazado ferroviario Programa educativo en pruebas. No v\u00e1lido para uso profesional. PPKK inicial (m) X inicial (m) Y inicial (m) Azimut inicial (grados cent.) Z inicial (m) Pendiente inicial \u2030 Huso UTM Intervalo de puntos (m) Salida Civiltracks KML DXF Alineaciones en planta N\u00ba Tipo Longitud Radio\/Par\u00e1metro Clot. Alineaciones en alzado N\u00ba PPKK\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/civiltracks.com\/index.php\/trazado-ffcc\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/civiltracks.com\/wp-content\/uploads\/2024\/02\/Icono.png\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/civiltracks.com\/wp-content\/uploads\/2024\/02\/Icono.png\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2026-05-17T09:12:57+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2026-05-24T11:59:51+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Trazado FFCC - civiltracks.com\" \/>\n\t\t<meta name=\"twitter:description\" content=\"Dibujo de trazado ferroviario Programa educativo en pruebas. No v\u00e1lido para uso profesional. PPKK inicial (m) X inicial (m) Y inicial (m) Azimut inicial (grados cent.) Z inicial (m) Pendiente inicial \u2030 Huso UTM Intervalo de puntos (m) Salida Civiltracks KML DXF Alineaciones en planta N\u00ba Tipo Longitud Radio\/Par\u00e1metro Clot. Alineaciones en alzado N\u00ba PPKK\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/civiltracks.com\/wp-content\/uploads\/2024\/02\/Icono.png\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/civiltracks.com\\\/index.php\\\/trazado-ffcc\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/civiltracks.com#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/civiltracks.com\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/civiltracks.com\\\/index.php\\\/trazado-ffcc\\\/#listItem\",\"name\":\"Trazado FFCC\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/civiltracks.com\\\/index.php\\\/trazado-ffcc\\\/#listItem\",\"position\":2,\"name\":\"Trazado FFCC\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/civiltracks.com#listItem\",\"name\":\"Home\"}}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/civiltracks.com\\\/index.php\\\/trazado-ffcc\\\/#webpage\",\"url\":\"https:\\\/\\\/civiltracks.com\\\/index.php\\\/trazado-ffcc\\\/\",\"name\":\"Trazado FFCC - civiltracks.com\",\"description\":\"Dibujo de trazado ferroviario Programa educativo en pruebas. No v\\u00e1lido para uso profesional. PPKK inicial (m) X inicial (m) Y inicial (m) Azimut inicial (grados cent.) Z inicial (m) Pendiente inicial \\u2030 Huso UTM Intervalo de puntos (m) Salida Civiltracks KML DXF Alineaciones en planta N\\u00ba Tipo Longitud Radio\\\/Par\\u00e1metro Clot. Alineaciones en alzado N\\u00ba PPKK\",\"inLanguage\":\"es-ES\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/civiltracks.com\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/civiltracks.com\\\/index.php\\\/trazado-ffcc\\\/#breadcrumblist\"},\"datePublished\":\"2026-05-17T11:12:57+02:00\",\"dateModified\":\"2026-05-24T13:59:51+02:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/civiltracks.com\\\/#website\",\"url\":\"https:\\\/\\\/civiltracks.com\\\/\",\"name\":\"civiltracks.com\",\"inLanguage\":\"es-ES\",\"publisher\":{\"@id\":\"https:\\\/\\\/civiltracks.com\\\/#person\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Trazado FFCC - civiltracks.com","description":"Dibujo de trazado ferroviario Programa educativo en pruebas. No v\u00e1lido para uso profesional. PPKK inicial (m) X inicial (m) Y inicial (m) Azimut inicial (grados cent.) Z inicial (m) Pendiente inicial \u2030 Huso UTM Intervalo de puntos (m) Salida Civiltracks KML DXF Alineaciones en planta N\u00ba Tipo Longitud Radio\/Par\u00e1metro Clot. Alineaciones en alzado N\u00ba PPKK","canonical_url":"https:\/\/civiltracks.com\/index.php\/trazado-ffcc\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BreadcrumbList","@id":"https:\/\/civiltracks.com\/index.php\/trazado-ffcc\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/civiltracks.com#listItem","position":1,"name":"Home","item":"https:\/\/civiltracks.com","nextItem":{"@type":"ListItem","@id":"https:\/\/civiltracks.com\/index.php\/trazado-ffcc\/#listItem","name":"Trazado FFCC"}},{"@type":"ListItem","@id":"https:\/\/civiltracks.com\/index.php\/trazado-ffcc\/#listItem","position":2,"name":"Trazado FFCC","previousItem":{"@type":"ListItem","@id":"https:\/\/civiltracks.com#listItem","name":"Home"}}]},{"@type":"WebPage","@id":"https:\/\/civiltracks.com\/index.php\/trazado-ffcc\/#webpage","url":"https:\/\/civiltracks.com\/index.php\/trazado-ffcc\/","name":"Trazado FFCC - civiltracks.com","description":"Dibujo de trazado ferroviario Programa educativo en pruebas. No v\u00e1lido para uso profesional. PPKK inicial (m) X inicial (m) Y inicial (m) Azimut inicial (grados cent.) Z inicial (m) Pendiente inicial \u2030 Huso UTM Intervalo de puntos (m) Salida Civiltracks KML DXF Alineaciones en planta N\u00ba Tipo Longitud Radio\/Par\u00e1metro Clot. Alineaciones en alzado N\u00ba PPKK","inLanguage":"es-ES","isPartOf":{"@id":"https:\/\/civiltracks.com\/#website"},"breadcrumb":{"@id":"https:\/\/civiltracks.com\/index.php\/trazado-ffcc\/#breadcrumblist"},"datePublished":"2026-05-17T11:12:57+02:00","dateModified":"2026-05-24T13:59:51+02:00"},{"@type":"WebSite","@id":"https:\/\/civiltracks.com\/#website","url":"https:\/\/civiltracks.com\/","name":"civiltracks.com","inLanguage":"es-ES","publisher":{"@id":"https:\/\/civiltracks.com\/#person"}}]},"og:locale":"es_ES","og:site_name":"civiltracks.com -","og:type":"article","og:title":"Trazado FFCC - civiltracks.com","og:description":"Dibujo de trazado ferroviario Programa educativo en pruebas. No v\u00e1lido para uso profesional. PPKK inicial (m) X inicial (m) Y inicial (m) Azimut inicial (grados cent.) Z inicial (m) Pendiente inicial \u2030 Huso UTM Intervalo de puntos (m) Salida Civiltracks KML DXF Alineaciones en planta N\u00ba Tipo Longitud Radio\/Par\u00e1metro Clot. Alineaciones en alzado N\u00ba PPKK","og:url":"https:\/\/civiltracks.com\/index.php\/trazado-ffcc\/","og:image":"https:\/\/civiltracks.com\/wp-content\/uploads\/2024\/02\/Icono.png","og:image:secure_url":"https:\/\/civiltracks.com\/wp-content\/uploads\/2024\/02\/Icono.png","article:published_time":"2026-05-17T09:12:57+00:00","article:modified_time":"2026-05-24T11:59:51+00:00","twitter:card":"summary_large_image","twitter:title":"Trazado FFCC - civiltracks.com","twitter:description":"Dibujo de trazado ferroviario Programa educativo en pruebas. No v\u00e1lido para uso profesional. PPKK inicial (m) X inicial (m) Y inicial (m) Azimut inicial (grados cent.) Z inicial (m) Pendiente inicial \u2030 Huso UTM Intervalo de puntos (m) Salida Civiltracks KML DXF Alineaciones en planta N\u00ba Tipo Longitud Radio\/Par\u00e1metro Clot. Alineaciones en alzado N\u00ba PPKK","twitter:image":"https:\/\/civiltracks.com\/wp-content\/uploads\/2024\/02\/Icono.png"},"aioseo_meta_data":{"post_id":"3255","title":null,"description":null,"keywords":null,"keyphrases":{"focus":{"keyphrase":"","score":0,"analysis":{"keyphraseInTitle":{"score":0,"maxScore":9,"error":1}}},"additional":[]},"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":"","og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"WebPage","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":"-1","robots_max_videopreview":"-1","robots_max_imagepreview":"large","priority":null,"frequency":"default","local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":{"faqs":[],"keyPoints":[],"schemas":[],"titles":[],"descriptions":[],"socialPosts":{"email":[],"linkedin":[],"twitter":[],"facebook":[],"instagram":[]}},"created":"2026-05-17 09:12:57","updated":"2026-06-06 17:14:32","seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/civiltracks.com\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">\u00bb<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tTrazado FFCC\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/civiltracks.com"},{"label":"Trazado FFCC","link":"https:\/\/civiltracks.com\/index.php\/trazado-ffcc\/"}],"_links":{"self":[{"href":"https:\/\/civiltracks.com\/index.php\/wp-json\/wp\/v2\/pages\/3255","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/civiltracks.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/civiltracks.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/civiltracks.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/civiltracks.com\/index.php\/wp-json\/wp\/v2\/comments?post=3255"}],"version-history":[{"count":95,"href":"https:\/\/civiltracks.com\/index.php\/wp-json\/wp\/v2\/pages\/3255\/revisions"}],"predecessor-version":[{"id":3360,"href":"https:\/\/civiltracks.com\/index.php\/wp-json\/wp\/v2\/pages\/3255\/revisions\/3360"}],"wp:attachment":[{"href":"https:\/\/civiltracks.com\/index.php\/wp-json\/wp\/v2\/media?parent=3255"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}