jflozanor/voacap-swift

GitHub: jflozanor/voacap-swift

一个现代 Swift 实现的 HF 无线电传播预测引擎,提供跨平台 CLI 工具与终端热图,替代原始 Fortran VOACAP。

Stars: 0 | Forks: 0

# voacap-swift ![release](https://img.shields.io/badge/release-v0.1.0-blue) ![platform](https://img.shields.io/badge/platform-macOS%20%7C%20Linux%20%7C%20Raspberry%20Pi-green) ![license](https://img.shields.io/badge/license-MIT-orange) ![radio](https://img.shields.io/badge/radio-HF%20Propagation-blueviolet) ![swift](https://img.shields.io/badge/Swift-5.9+-red) 一个现代 Swift 版本的 VOACAP 高频无线电传播预测引擎,最初由 NTIA/ITS 开发,由 J.A. Watson (HZ1JW / M0DNS) 移植到 Linux。接受 Maidenhead 网格定位器、呼号和 GPS 坐标。 ![voacap-swift heatmap](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/d08e4a8d8c110620.png) ## 验证 通过 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, 内存执行, 呼号查询, 开源, 无线电通信, 系统分析, 终端热图, 网关扫描, 网络分析