Saltar a contenido

Productos

Verificados contra el feed real el 2026-07-04 parseando muestras de KAMX/TJUA con MetPy 1.7.1 (Level3File decodifica todos sin error).

Códigos legacy retirados

Los códigos legacy 19, 20, 27, 41, 57-raster, 78, 79, 80, 94 y 99-bajas ya no fluyen por el IDD. Cualquier documentación o software que los referencie está obsoleto. El 99 solo fluye en cortes altos (N2U, N3U, NBU…), fuera de alcance por la decisión de elevación única.

Alcance del demo

Categoría Producto (código / mnemónico) Geometría nativa Grilla AEQD resultante
Base Reflectividad super-res (153 / N0B) 720 × 1840 radial, 0.25 km × 0.5°, 460 km 3680 × 3680 @ 0.25 km
Base Velocidad super-res (154 / N0G) 720 × 1200 radial, 0.25 km × 0.5°, 300 km 2400 × 2400 @ 0.25 km
Derivados Echo tops mejorado (135 / EET) 360 × 346 radial, 1 km × 1°, 346 km 692 × 692 @ 1 km
Derivados VIL digital (134 / DVL) 360 × 460 radial, 1 km × 1°, 460 km 920 × 920 @ 1 km
Hidrometeorología Precip 1h (170 / DAA) 360 × 920 radial, 0.25 km × 1°, 230 km 1840 × 1840 @ 0.25 km
Hidrometeorología Precip 3h (173 / DU3) 360 × 920 radial, 0.25 km × 1°, 230 km 1840 × 1840 @ 0.25 km
Hidrometeorología Precip storm-total (172 / DTA) 360 × 920 radial, 0.25 km × 1°, 230 km 1840 × 1840 @ 0.25 km
Cinemática VAD/VWP (48 / NVW) vectores, no-raster — (tabla vwp en D1)
Fenómenos Mesociclones (141 / NMD) no-raster — (tabla phenomena, kind meso)
Fenómenos Tracking de celdas (58 / NST) no-raster — (tabla phenomena, kind storm_cell)

NHI y TVS fuera del alcance (revisión 2026-07-10)

Los productos 59/NHI (granizo) y 61/NTV (TVS) no fluyen en el bucket: barrido de junio–julio 2026 en sitios con tormenta activa = 0 claves. La señal de tornado viaja igualmente en la columna TVS del NMD (atributo tvs de cada mesociclón en D1); el granizo queda sin cobertura en el demo.

Los COG resultantes en uint8 comprimido pesan pocos cientos de KB. Todos bajo el cap de textura WebGL de 4096 px.

Calibración de los COG

Contrato único para el viewer: físico = nivel · value_scale + value_offset (niveles ≥ 2; 0 = below threshold/nodata, 1 = range folded). Donde la codificación nativa no es lineal, el pipeline re-encodea:

Producto Codificación nativa En el COG
N0B/N0G lineal (thresholds ×10) niveles nativos tal cual (dBZ / kt)
EET bits 0–6 = topes kft + 2; bit 7 = flag topped flag enmascarado; lineal en kft
DVL float16 NEXRAD (bias 16, no IEEE); lineal hasta nivel 20, logarítmico encima re-encodeado lineal @ 0.35 kg/m²
DAA/DU3/DTA scale/offset float32 en halfwords, centésimas de pulgada niveles nativos; scale/offset convertidos a mm

Muestras para desarrollo

Bucket S3 público unidata-nexrad-level3 — fuente del poller en producción y muestras reales para desarrollo, tests y replay:

  • Claves: SITE_MNEMO_YYYY_MM_DD_HH_MM_SS (sitio sin prefijo K/T: AMX, BYX, JUA).
  • Acceso anónimo: botocore UNSIGNED.
import boto3
from botocore import UNSIGNED
from botocore.config import Config

s3 = boto3.client("s3", config=Config(signature_version=UNSIGNED), region_name="us-east-1")
r = s3.list_objects_v2(Bucket="unidata-nexrad-level3", Prefix="AMX_N0B_2026_07_04", MaxKeys=5)