jflozanor/voacap-swift
GitHub: jflozanor/voacap-swift
一个现代 Swift 实现的 HF 无线电传播预测引擎,提供跨平台 CLI 工具与终端热图,替代原始 Fortran VOACAP。
Stars: 0 | Forks: 0
# voacap-swift





一个现代 Swift 版本的 VOACAP 高频无线电传播预测引擎,最初由 NTIA/ITS 开发,由 J.A. Watson (HZ1JW / M0DNS) 移植到 Linux。接受 Maidenhead 网格定位器、呼号和 GPS 坐标。

## 验证
通过 10,000 个自动化测试向量验证了原始 Fortran 参考版本,覆盖每个大陆、所有 12 个月、SSN 0-200、CCIR 和 URSI 系数,以及 100 公里到近对跖点的路径。电离层核心(MUF、foF2、E/F 层建模)与 Fortran 原始版本在 94.7% 的测试点上完全匹配。剩余的 5.3% 是边界情况,其中 Swift 64 位算术和 Fortran 32 位算术计算 MUF 值相差不到 0.1 MHz,导致单个频率在“传播”和“不传播”之间切换。未发现系统性偏差。这些差异在模型本身的 ±15-20% 不确定性范围内,与真实的电离层测量相比。
天线增益是通过解析计算得出的,而不是来自预先计算的表格,以换取完全自包含的二进制文件且无外部数据依赖。
## 安装
### 快速安装(macOS 和 Linux)
从 [Releases](../../releases) 下载适用于您平台的最新版本,解压并运行安装脚本:
```
tar xzf voacap-swift-0.1.0-.tar.gz
cd voacap-swift-0.1.0-/
./install.sh
```
这会将 `voacap-swift` 二进制文件安装到 `/usr/local/bin`,并将所需的 `itshfbc` 数据目录安装到 `~/itshfbc`。
要安装到其他位置:
```
./install.sh --prefix ~/.local
```
要卸载:
```
./install.sh --uninstall
```
### 从源代码构建
需要 Swift 5.9 或更高版本。在 macOS 上随 Xcode 一起提供。在 Linux 上,从 [swift.org](https://www.swift.org/install/) 安装 Swift 工具链。
```
cd VoacapSwift
make build
make install
```
或手动安装:
```
cd VoacapSwift
swift build -c release
cp .build/release/VoacapCLI /usr/local/bin/voacap-swift
```
### 平台支持
| 平台 | 架构 | 状态 |
|------|------|------|
| macOS 14+ | Apple Silicon (arm64) | 完全支持 |
| macOS 14+ | Intel (x86_64) | 支持(也通过 Rosetta) |
| Ubuntu 22.04+ | x86_64 | 支持 |
| Ubuntu 22.04+ | arm64 | 支持(Raspberry Pi、uConsole) |
## 快速开始
```
# 预测从温尼伯 (EN19) 到伦敦 (IO91) 的传播
voacap-swift --from EN19 --to IO91
# 预测特定频段并使用自定义功率
voacap-swift --from EN19 --to IO91 --band 20m --power 50
# 从您的位置扫描 Winlink 网关
voacap-swift --winlink --from EN19
# 查找呼号
voacap-swift --lookup W1AW
# 显示终端热力图(彩色 SNR 网格)
voacap-swift --from EN19 --to IO91 --heatmap
```
## 用法
```
voacap-swift --from --to [options] Predict propagation
voacap-swift --winlink --from [options] Scan Winlink gateways
voacap-swift --lookup Look up callsign info
voacap-swift [options] [input] [output] Classic VOACAP mode
```
### 位置格式
voacap-swift 接受多种格式的位置:
| 格式 | 示例 | 描述 |
|------|------|------|
| Maidenhead 网格 | EN19, FN31pr | 4 或 6 个字符的网格定位器 |
| 呼号 | VE4ELB, W1AW | 从数据库或在线查找 |
| 十进制度数 | 49.9,-97.1 | 纬度, 经度 |
| GPS/DDM | N49:53.4 W097:09.6 | 如收音机显示屏所示 |
### 预测选项
| 选项 | 默认值 | 描述 |
|------|--------|------|
| --from |(必需)| 发射机位置 |
| --to |(必需)| 接收机位置 |
| --power | 100 | 发射功率(瓦特) |
| --ssn | 100 | 太阳黑子数 |
| --month | current | 预测月份 |
| --year | current | 预测年份 |
| --antenna | dipole | 天线类型:dipole、vertical 或 isotrope |
| --band | all | 频段:20m、40m、20m、all 或频率(MHz) |
| --heatmap | off | 在终端显示彩色 SNR 网格 |
### Winlink 网关扫描
| 选项 | 默认值 | 描述 |
|------|--------|------|
| --winlink | | 启用网关扫描模式 |
| --mode | all | 过滤:vara、ardop、pactor |
| --band | all | 按频段过滤 |
| --top | 25 | 显示前 N 个结果 |
| --max-dist | unlimited | 最大距离(公里) |
| --all | | 包含无传播的网关 |
| --json | | 以 JSON 格式输出 |
### 经典 VOACAP 模式
为了与原始 Fortran `voacapl` 兼容,voacap-swift 接受相同的语法:
```
voacap-swift ~/itshfbc # default P2P
voacap-swift ~/itshfbc area calc default/default.voa # area coverage
voacap-swift -s ~/itshfbc test.dat output.out # custom I/O
```
请参阅 [VoacapSwift/README.md](VoacapSwift/README.md) 获取经典模式的完整文档,包括输入文件格式和预测方法。
## 配置
| 文件 | 用途 |
|------|------|
| ~/.voacaplrc | itshfbc 数据目录的默认路径(单行) |
| ~/itshfbc/ | VOACAP 系数、天线和数据库文件 |
| ~/.cache/voacapl/callsigns/ | 缓存的呼号查找(JSON) |
## 性能
在 Apple Silicon(arm64)上基准测试,与使用 gfortran -O2 编译的原始 Fortran 版本相比:
| 工作负载 | Fortran | Swift | 比率 |
|----------|---------|-------|------|
| P2P Method 30(24 小时) | 0.03s | 0.05s | 1.6x |
| P2P Method 25(所有模式) | 0.03s | 0.08s | 2.7x |
| 242x242 区域(58K 个点) | 3.5s | 10.1s | 2.9x |
Swift 端口在速度上做出了一些取舍,以换取内存安全和现代化的代码库。对于交互式使用和单电路预测,两种方式均在 100 毫秒内完成。
## 关于原始 VOACAPL(Fortran)
此仓库还包含由 J.A. Watson 编写的原始 VOACAPL Fortran 源代码。要构建 Fortran 版本,请参见下面的 [原始说明](#building-the-fortran-version)。
## 感谢
这个项目站在数十年的电离层研究和工程的肩膀上。
NTIA/ITS(电信科学研究所)开发了最初的 VOACAP 程序,作为 Voice of America 优化全球 HF 广播覆盖范围努力的一部分。传播模型、电离层系数数据库和预测算法代表了 George Lane、Fred Rhoads、Larry Teters 和 ITS 许多其他人的多年科学工作。该软件及其数据文件在美国不受版权保护,因为它们是由美国政府制作的。
J.A. Watson (HZ1JW / M0DNS) 创建了 VOACAPL,即 Linux/GFortran 端口,使 VOACAP 超越了其原始的仅 Windows 平台。他的代码库适配到了现代编译器和 POSIX 系统,并以 CC0 1.0 Universal Public Domain Dedication 发布作为开源项目。这个 Swift 端口从 VOACAPL 源代码开发而来,如果没有他对代码库的精心维护,它将不会存在。
VOACAP 使用的 CCIR(现为 ITU-R)电离层系数地图基于全球电离层观测站数十年来的全球观测数据。URSI 系数提供了具有改进海洋覆盖率的替代模型。
业余无线电社区一直是推动 VOACAP 等工具持续使用和发展的动力。从竞赛到应急通信,高频传播预测仍然是这一爱好的核心。
## 许可证
MIT 许可证。版权所有 (c) 2025-2026 Jorge Fabian Lozano, VE4ELB。
原始 VOACAP 软件由 NTIA/ITS ,在美国不受版权保护。J.A. Watson 编写的 VOACAPL 修改版本以 CC0 1.0 Universal Public Domain Dedication 发布。请参阅 [VoacapSwift/LICENSE](VoacapSwift/LICENSE) 获取完整详细信息。
## 构建 Fortran 版本
原始 VOACAPL Fortran 代码需要 gfortran:
```
# Ubuntu/Debian
sudo apt-get install gfortran
# Fedora
sudo yum install gcc-gfortran
```
构建并安装:
```
automake --add-missing
autoreconf
./configure
make
sudo make install
makeitshfbc
```
运行:
```
voacapl ~/itshfbc
```
请参阅 [VOACAPL wiki](https://github.com/jawatson/voacapl/wiki) 获取进一步指导。
73's Jim (M0DNS / HZ1JW)
标签:5.9+, HF 传播预测, HF 无线电传播, Maidenhead 网格定位, Raspberry Pi, SEO: HF 传播, SEO: Maidenhead 网格, SEO: VOACAP Swift, SEO: Winlink 扫描, SEO: 无线电预测, Swift, VOACAP, Winlink, 内存执行, 呼号查询, 开源, 无线电通信, 系统分析, 终端热图, 网关扫描, 网络分析