{
 "caso": "CASE 001",
 "id": "FIRE-2019-0400089",
 "nombre": "La Granja de San Ildefonso · Segovia · España",
 "fechas": {
  "deteccion": "2019-08-04T14:46:00",
  "controlado": "2019-08-07T17:30:00",
  "extinguido": "2019-08-21T18:57:00"
 },
 "ventana_simulacion": [
  "2019-08-04T13:30:00",
  "2019-08-05T06:00:00"
 ],
 "zona_horaria": "CEST (UTC+2)",
 "generado": "2026-08-16T11:33:28+00:00",
 "generado_por": "scripts/fire/export_web.py · FireTwin F7A",
 "superficies_canon_ha": {
  "EGIF (OFFICIAL)": 385.77,
  "Junta de Castilla y León (OFFICIAL)": 380.0,
  "Partes bidiarios JCyL 22-ago (OFFICIAL)": 379.74,
  "EMSR375 6-ago (OFFICIAL)": 370.2,
  "dNBR propio (DERIVED)": 352.0,
  "EMSR375 5-ago (OFFICIAL)": 351.3
 },
 "nota_superficies": "Las seis conviven y ninguna es «la buena». Por defecto se muestra la OFICIAL (CANON).",
 "desglose_jcyl_ha": {
  "arbolado": 153.27,
  "matorral": 210.72,
  "pasto": 15.75,
  "especies_citadas": [
   "PINUS SYLVESTRIS",
   "QUERCUS PYRENAICA",
   "JUNIPERUS COMMUNIS"
  ],
  "source": "JCyL · datos abiertos · parte bidiario 2019-08-22 19:00",
  "class": "OFFICIAL",
  "por_que_importa": "Convierte la disputa de combustible de F2 en **oficial contra oficial**. El EGIF declara ~218 ha arboladas y ~12 de matorral; JCyL declara 153,27 y 210,72 — casi especulares. No es que una fuente sea mala: es que arbolado y matorral se reparten de forma distinta según quién y cuándo mire. La resolución por teledetección de F2 se mantiene, ahora con las dos fuentes etiquetadas en vez de una sola contra el satélite."
 },
 "cronologia": [
  {
   "hora": "2019-08-04T14:46:00",
   "hito": "Detección",
   "class": "OFFICIAL"
  },
  {
   "hora": "2019-08-04T15:04:00",
   "hito": "1º medio terrestre",
   "class": "OFFICIAL"
  },
  {
   "hora": "2019-08-04T15:25:00",
   "hito": "1º medio aéreo",
   "class": "OFFICIAL"
  },
  {
   "hora": "2019-08-04T15:40:00",
   "hito": "1ª BRIF helitransportada",
   "class": "OFFICIAL"
  },
  {
   "hora": "2019-08-04T16:28:00",
   "hito": "ACO",
   "class": "OFFICIAL"
  },
  {
   "hora": "2019-08-04T20:05:00",
   "hito": "Nivel 2 declarado",
   "class": "OFFICIAL"
  }
 ],
 "frontera": "FireTrace: cuándo, dónde y cómo. Nunca quién. Esta página no trata causa ni autoría.",
 "paleta_procedencia": {
  "OFFICIAL": {
   "color": "#f2e8d5",
   "nombre": "oficial"
  },
  "OBSERVED": {
   "color": "#5fd4d6",
   "nombre": "observado"
  },
  "DERIVED": {
   "color": "#9fb8c8",
   "nombre": "derivado"
  },
  "RECONSTRUCTED": {
   "color": "#ffb84d",
   "nombre": "reconstruido"
  },
  "SIMULATED": {
   "color": "#ff8a3d",
   "nombre": "simulado"
  },
  "PREDICTED": {
   "color": "#ffd166",
   "nombre": "predicho"
  }
 },
 "atribuciones": [
  "IGN España — MDT05 y PNOA (CC-BY 4.0, scne.es)",
  "Copernicus Emergency Management Service © European Union — EMSR375",
  "NASA FIRMS — detecciones VIIRS y MODIS",
  "AEMET OpenData — estación 40I002",
  "ECMWF ERA5 vía Open-Meteo — forzamiento meteorológico",
  "Datos EGIF del expediente oficial del incendio"
 ],
 "capas": [
  {
   "id": "terrain.heightmap",
   "ruta": "terrain/heightmap.png",
   "class": "OFFICIAL",
   "source": "IGN España · MDT05 (CC-BY 4.0 scne.es), remuestreado a 10 m",
   "timestamp": "2026-08-16T11:33:28+00:00",
   "bbox_25830": [
    414600.0,
    4524300.0,
    422800.0,
    4530800.0
   ],
   "escala": {
    "min": 1110.0,
    "max": 2135.0,
    "codificacion": "RGB8: v = R·256 + G; 0 = sin dato; valor = min + (v−1)/65534·(max−min); B = máscara",
    "ancho": 820,
    "alto": 650
   },
   "res_m": 10.0,
   "atribucion": "IGN España · scne.es · CC-BY 4.0"
  },
  {
   "id": "terrain.ao",
   "ruta": "terrain/ao.png",
   "class": "DERIVED",
   "source": "FireTwin · factor de vista de cielo calculado sobre el MDT05 del IGN",
   "timestamp": "2026-08-16T11:33:28+00:00",
   "bbox_25830": [
    414600.0,
    4524300.0,
    422800.0,
    4530800.0
   ],
   "ancho": 820,
   "alto": 650,
   "nota": "Sombreado derivado del terreno real, no una textura artística. Sólo se aplica en el modo CINE."
  },
  {
   "id": "terrain.ortho",
   "ruta": "terrain/ortho.jpg",
   "class": "OFFICIAL",
   "source": "IGN España · PNOA máxima actualidad vía WMS INSPIRE (CC-BY 4.0)",
   "timestamp": "2026-08-16T11:33:28+00:00",
   "bbox_25830": [
    414600.0,
    4524300.0,
    422800.0,
    4530800.0
   ],
   "ancho": 4096,
   "alto": 3247,
   "atribucion": "IGN España · scne.es · CC-BY 4.0"
  },
  {
   "id": "fuels.fuel_2019",
   "ruta": "fuels/fuel_2019.png",
   "class": "DERIVED",
   "source": "FireTwin F2 · clasificación S2 L2A + LiDAR PNOA2 + dasoLidar + MFE50",
   "timestamp": "2026-08-16T11:33:28+00:00",
   "bbox_25830": [
    416360.0,
    4526100.0,
    421060.0,
    4529040.0
   ],
   "ancho": 235,
   "alto": 147,
   "indices": {
    "0": {
     "codigo": 0,
     "sb40": "—",
     "nombre": "sin dato",
     "por_que": "Sin retorno LiDAR o píxel S2 enmascarado. Hueco declarado (R1)."
    },
    "1": {
     "codigo": 91,
     "sb40": "NB1",
     "nombre": "urbano / infraestructura",
     "por_que": "Retornos de edificio o vía por encima del umbral. No arde."
    },
    "2": {
     "codigo": 98,
     "sb40": "NB8",
     "nombre": "agua",
     "por_que": "Retornos clasificados como agua."
    },
    "3": {
     "codigo": 99,
     "sb40": "NB9",
     "nombre": "roca y suelo desnudo",
     "por_que": "Sin altura y sin vegetación fotosintética."
    },
    "4": {
     "codigo": 101,
     "sb40": "GR1",
     "nombre": "pastizal ralo",
     "por_que": "h < 0,5 m con NDVI bajo: herbáceo discontinuo."
    },
    "5": {
     "codigo": 102,
     "sb40": "GR2",
     "nombre": "pastizal",
     "por_que": "h < 0,5 m con cubierta herbácea continua, agostada en agosto."
    },
    "6": {
     "codigo": 142,
     "sb40": "SH2",
     "nombre": "matorral bajo",
     "por_que": "0,5–1,5 m. Modelo de matorral de clima seco, carga moderada."
    },
    "7": {
     "codigo": 145,
     "sb40": "SH5",
     "nombre": "matorral alto",
     "por_que": "1,5–4 m. Carga alta, profundidad del modelo (1,8 m) acorde."
    },
    "8": {
     "codigo": 161,
     "sb40": "TU1",
     "nombre": "pinar abierto con sotobosque",
     "por_que": "h > 4 m con FCC < 0,40: arbolado ralo sobre pasto/matorral."
    },
    "9": {
     "codigo": 165,
     "sb40": "TU5",
     "nombre": "pinar denso",
     "por_que": "h > 4 m con FCC ≥ 0,40: dosel cerrado con sotobosque leñoso."
    }
   },
   "confidence": 0.684
  },
  {
   "id": "fire.arrival_time",
   "ruta": "fire/arrival_time.png",
   "class": "SIMULATED",
   "source": "ForeFire RothermelAndrews2018 vía Model Bus · mejor miembro del posterior conjunto de F5",
   "timestamp": "2026-08-16T11:33:28+00:00",
   "bbox_25830": [
    416360.0,
    4526100.0,
    421060.0,
    4529040.0
   ],
   "escala": {
    "min": 0.0,
    "max": 915.219,
    "codificacion": "RGB8: v = R·256 + G; 0 = sin dato; valor = min + (v−1)/65534·(max−min); B = máscara",
    "ancho": 235,
    "alto": 147
   },
   "unidades": "minutos desde t0",
   "t0": "2019-08-04T14:44:43.081753",
   "estado": null,
   "mejor_miembro": "l100",
   "advertencia": "Bajo las hipótesis declaradas (superficie-sólo, spotting off, combustible F2, viento F3). No es una predicción certificada."
  },
  {
   "id": "obs.firms",
   "ruta": "obs/firms.geojson",
   "class": "OBSERVED",
   "source": "NASA FIRMS · VIIRS S-NPP/NOAA-20 + MODIS",
   "timestamp": "2026-08-16T11:33:28+00:00",
   "detecciones": 96,
   "pasadas": [
    {
     "hora_utc": "2019-08-04T14:00:00+00:00",
     "hora_cest": "2019-08-04T16:00:00+02:00",
     "detecciones": 2
    },
    {
     "hora_utc": "2019-08-04T22:12:00+00:00",
     "hora_cest": "2019-08-05T00:12:00+02:00",
     "detecciones": 8
    },
    {
     "hora_utc": "2019-08-05T01:27:00+00:00",
     "hora_cest": "2019-08-05T03:27:00+02:00",
     "detecciones": 17
    },
    {
     "hora_utc": "2019-08-05T02:18:00+00:00",
     "hora_cest": "2019-08-05T04:18:00+02:00",
     "detecciones": 24
    },
    {
     "hora_utc": "2019-08-05T02:24:00+00:00",
     "hora_cest": "2019-08-05T04:24:00+02:00",
     "detecciones": 5
    },
    {
     "hora_utc": "2019-08-05T03:07:00+00:00",
     "hora_cest": "2019-08-05T05:07:00+02:00",
     "detecciones": 24
    },
    {
     "hora_utc": "2019-08-05T11:49:00+00:00",
     "hora_cest": "2019-08-05T13:49:00+02:00",
     "detecciones": 1
    },
    {
     "hora_utc": "2019-08-05T12:01:00+00:00",
     "hora_cest": "2019-08-05T14:01:00+02:00",
     "detecciones": 4
    },
    {
     "hora_utc": "2019-08-05T12:50:00+00:00",
     "hora_cest": "2019-08-05T14:50:00+02:00",
     "detecciones": 3
    },
    {
     "hora_utc": "2019-08-05T13:29:00+00:00",
     "hora_cest": "2019-08-05T15:29:00+02:00",
     "detecciones": 2
    },
    {
     "hora_utc": "2019-08-05T13:41:00+00:00",
     "hora_cest": "2019-08-05T15:41:00+02:00",
     "detecciones": 6
    }
   ],
   "confidence": 0.95,
   "accuracy_m": 1000,
   "atribucion": "NASA FIRMS",
   "nota_confidence": "El paso de la confianza cualitativa de FIRMS (l/n/h) a número es una CONVENCIÓN de FireTwin: {\"h\": 0.9, \"n\": 0.75, \"l\": 0.5}. No es un valor oficial de la NASA ni sale de la tabla del canon."
  },
  {
   "id": "obs.perimetro_dnbr",
   "ruta": "obs/perimetro_dnbr.geojson",
   "class": "DERIVED",
   "source": "FireTwin F1 · dNBR propio sobre Sentinel-2 L2A",
   "timestamp": "2026-08-16T11:33:28+00:00",
   "superficie_ha": 352.0,
   "recintos": 3,
   "nota": "352,0 ha · 3 recintos · 321,8 dentro de la finca (CANON). IoU con EMSR375: 88–90 %."
  },
  {
   "id": "obs.emsr375_05ago",
   "ruta": null,
   "class": "OFFICIAL",
   "source": "Copernicus EMS · EMSR375 · © European Union",
   "timestamp": "2026-08-16T11:33:28+00:00",
   "estado": "PENDIENTE",
   "hueco": "HUECO-008",
   "que_falta": "los vectores; el portal de Copernicus movió la ruta",
   "superficie_ha_canon": 351.3,
   "atribucion": "Copernicus Emergency Management Service © European Union, EMSR375"
  },
  {
   "id": "obs.emsr375_06ago",
   "ruta": null,
   "class": "OFFICIAL",
   "source": "Copernicus EMS · EMSR375 · © European Union",
   "timestamp": "2026-08-16T11:33:28+00:00",
   "estado": "PENDIENTE",
   "hueco": "HUECO-008",
   "que_falta": "los vectores; el portal de Copernicus movió la ruta",
   "superficie_ha_canon": 370.2,
   "atribucion": "Copernicus Emergency Management Service © European Union, EMSR375"
  },
  {
   "id": "obs.origen_oficial",
   "ruta": "obs/origen_oficial.geojson",
   "class": "OFFICIAL",
   "source": "parte EGIF/PIF · parte EGIF/PIF · idpif 1229698 · numeroparte 2019400089",
   "timestamp": "2026-08-16T11:33:28+00:00",
   "confidence": 1.0,
   "accuracy_m": null,
   "nota_accuracy": "El parte no declara incertidumbre posicional. Hueco declarado, no se inventa un valor.",
   "nota": "El parte declara la posición del origen y la hora de DETECCIÓN (14:46). La hora de ignición es la incógnita de F5."
  },
  {
   "id": "weather.viento",
   "ruta": "weather/viento.json",
   "class": "DERIVED",
   "source": "WindNinja 3.12 (mass-consistent) sobre forzamiento ERA5 · malla 50 m, salida 10 m AGL",
   "timestamp": "2026-08-16T11:33:28+00:00",
   "pasos": 34,
   "bbox_25830": [
    416370.0,
    4526130.0,
    420970.0,
    4529030.0
   ],
   "forma": [
    30,
    47
   ],
   "altura_m": 10,
   "paso_min": 30,
   "limitacion": "solver de momento descartado: el OpenFOAM del sistema no cuadra con las plantillas de WindNinja 3.12. La parametrización de brisas de ladera sí está activa (LIMITACIÓN-F3-1).",
   "nota_waf": "La simulación NO usa este viento tal cual: le aplica un factor de reducción a media llama por combustible."
  },
  {
   "id": "weather.fm_1h",
   "ruta": "weather/fm_1h.json",
   "class": "DERIVED",
   "source": "EMC de Simard (1968) sobre Reanálisis ERA5 (ECMWF), servido por Open-Meteo Archive API (archive-api.open-meteo.com, sin credencial), con corrección de exposición del NFDRS e inercia exponencial de 1 h",
   "timestamp": "2026-08-16T11:33:28+00:00",
   "confidence": 0.55,
   "nota_confidence": "Baja a propósito y por dos motivos que se suman: la serie de T/HR es reanálisis interpolado (no estación), y el método es una APROXIMACIÓN algebraica, no un modelo de transferencia. Es el valor central del ensemble, no una medida."
  },
  {
   "id": "ignition.posterior",
   "ruta": "ignition/posterior.json",
   "class": "RECONSTRUCTED",
   "source": "invert_t0.py · F5 · inversión por ensemble ForeFire (RothermelAndrews2018) contra FIRMS por pasada + perímetro dNBR, con la asimetría de supresión de la Enmienda 1 §3",
   "timestamp": "2026-08-16T11:33:28+00:00",
   "estado": null,
   "confidence": 0.6,
   "nota": "La hora de ignición es UNKNOWN en el expediente. Esto es un posterior bajo hipótesis declaradas, no un dato oficial."
  },
  {
   "id": "ignition.perfil_t0",
   "ruta": "ignition/perfil_t0.json",
   "class": "RECONSTRUCTED",
   "source": "invert_t0.py · F5 · inversión por ensemble ForeFire (RothermelAndrews2018) contra FIRMS por pasada + perímetro dNBR, con la asimetría de supresión de la Enmienda 1 §3",
   "timestamp": "2026-08-16T11:33:28+00:00",
   "advertencia": "t0 queda 5º de 6 por μ*. Su efecto es MUY inferior al de `ros_mult`: el posterior de F5 saldrá ancho y hay que leerlo como tal, no como una hora estrecha."
  },
  {
   "id": "fire.spaghetti",
   "ruta": "fire/spaghetti.geojson",
   "class": "SIMULATED",
   "source": "ensemble LHC de F5 · los 80 miembros de mayor verosimilitud, perímetro final simplificado a 20 m",
   "timestamp": "2026-08-16T11:33:28+00:00",
   "miembros": 80,
   "percentiles_area_ha": {
    "p10": 417.5,
    "p50": 654.9,
    "p90": 1052.8
   },
   "advertencia": "Son PERCENTILES DEL ENSEMBLE bajo estas hipótesis, no una predicción certificada (R3).",
   "reutilizado": true
  },
  {
   "id": "ops.assets_3d",
   "ruta": null,
   "class": "SIMULATED",
   "source": "Meshy.ai text-to-3D (meshy-6) · prompts en docs/firetwin/MESHY_ASSETS_SPEC.md",
   "timestamp": "2026-08-16T11:33:28+00:00",
   "base": "/assets/3d",
   "ficheros": [
    "aereo_anfibio_medio__helice_v2.glb",
    "aereo_anfibio_medio_v2.glb",
    "aereo_coordinacion__helice_v2.glb",
    "aereo_coordinacion_v2.glb",
    "aereo_helicoptero_medio__rotor_v2.glb",
    "aereo_helicoptero_medio_v2.glb",
    "equipo_helibalde__cable_v2.glb"
   ],
   "bytes": 2711640,
   "advertencia": "Modelos ILUSTRATIVOS. Sin matrículas ni libreas de operador real. Los tiempos de aparición son OFFICIAL (CANON); las trayectorias, sintéticas (semilla 42).",
   "nota_rig": "Los cascos vienen del generador; palas, hélices, eslinga y descargas se montan en el visor. De una malla fusionada no sale un rig.",
   "optimizacion": 512
  }
 ]
}
