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.
67 lines
2.7 KiB
Markdown
67 lines
2.7 KiB
Markdown
# splat-rs
|
||
|
||
**splat-rs** es un *fork* / port a Rust de [**SPLAT!**](http://www.qsl.net/kd2bd/splat.html)
|
||
(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** (2002–2014) 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.cpp` → `src/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](https://crates.io/crates/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
|
||
|
||
```bash
|
||
cargo build --release
|
||
```
|
||
|
||
Requiere un compilador de C++ (se compila `cpp/itwom3.0.cpp` vía `build.rs`).
|
||
|
||
## Uso
|
||
|
||
Ver [`MANUAL.md`](./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 (2002–2014) |
|
||
| 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`](./LICENSE).
|