Files
cescobar 9d7d3bac45 Commit inicial: splat-rs — fork/port a Rust de SPLAT!
Fork de SPLAT! (John A. Magliacane, KD2BD, 2002-2014), bajo GPLv2 heredada
del original. El núcleo de cálculo de propagación (ITWOM v3.0, Sid Shumate)
se mantiene sin modificar en cpp/itwom3.0.cpp, llamado vía FFI. El resto
del pipeline (lectura de formatos SPLAT!, reportes, mapas, KML, gnuplot)
se reescribió en Rust, con paralelización nativa vía rayon reemplazando
el paralelismo por múltiples procesos del original. Validado contra el
corpus golden de SPLAT! con drift < 0.02 dB en cálculos ITWOM.
2026-08-23 01:50:41 -05:00

2.7 KiB
Raw Permalink Blame History

splat-rs

splat-rs es un fork / port a Rust de SPLAT! (Signal Propagation, Loss, And Terrain analysis tool), la herramienta de predicción de cobertura de radiofrecuencia de referencia en el mundo del radioaficionado y la radiodifusión.

Proyecto original

SPLAT! fue creado por John A. Magliacane, KD2BD (20022014) y es software libre bajo GPLv2. Este repositorio es un fork derivado de SPLAT! 1.4.2 — no es un proyecto independiente ni pretende serlo.

El núcleo de cálculo de pérdida de propagación (ITWOM v3.0, de Sid Shumate, a su vez basado en el modelo ITM/Longley-Rice de dominio público del NTIA/ITS con contribuciones de J. D. McDonald y del propio John A. Magliacane) se mantiene sin modificar, compilado desde cpp/itwom3.0.cpp y llamado vía FFI (cpp/itwom_ffi.cppsrc/itwom.rs). Ver cabecera de ese archivo para la historia completa de autoría del modelo.

Qué cambia este fork

  • Port completo a Rust del resto del pipeline (antes en C++): lectura de .qth/.lrp/.sdf/.az/.el/.udt/.cities, generación de reportes, mapas de cobertura, KML, gráficos vía gnuplot.
  • Paralelización nativa con rayon: el cálculo de cobertura, que en el SPLAT! original se paralelizaba lanzando múltiples procesos por separado (uno por radial/azimut), acá corre en un solo proceso multi-hilo — mismo resultado numérico (validado contra el corpus golden de SPLAT! con drift < 0.02 dB), muchísimo más rápido.
  • Salidas en español, tabla de intensidad de campo (SFT) nueva, defaults métricos, leyenda SVG nativa sin depender de un bitmap font vendorizado.

Detalle completo de las fases de desarrollo y decisiones de diseño en el historial de commits.

Binarios

Binario Descripción
splat-rs Herramienta principal — compatible en banderas con el SPLAT! original
splat-bench Microbenchmark serial vs. paralelo del núcleo ITWOM

Compilar

cargo build --release

Requiere un compilador de C++ (se compila cpp/itwom3.0.cpp vía build.rs).

Uso

Ver MANUAL.md para la referencia completa de banderas y ejemplos (análisis de enlace, cobertura, tabla SFT, exportación KML/PPM, etc.).

Créditos y licencia

SPLAT! original John A. Magliacane, KD2BD (20022014)
ITWOM v3.0 Sid Shumate (2010), sobre ITM/NTIA (dominio público)
Port a Rust + paralelización Charles Escobar, 2026

Distribuido bajo los términos de la GNU General Public License v2.0 (GPLv2), heredada del SPLAT! original. Ver el archivo LICENSE.