
我把全球 GNSS 数据下载做成了一个开源桌面工具GNSS Go一个面向 GNSS/CORS 数据获取的开源工具支持全球 IGS 与多国区域网络、地图选站、观测文件/导航文件/精密产品下载并同时提供 GUI、CLI 和 Python API。如果你做过 GNSS、PPP、RTK、TEC、电离层、对流层、地壳形变或 CORS 数据处理应该都遇到过类似的问题不同国家和地区的数据分散在不同网站有的是 HTTP有的是 FTP/SFTP有的甚至只能网页操作RINEX 2、RINEX 3、压缩格式、Hatanaka、.Z、.gz混在一起想找某个区域的站还得先去查站点列表和经纬度IGS、国家 CORS、区域网络的数据入口各不相同下载几十个站、几十天的数据时重复操作非常痛苦。所以我做了一个开源项目GNSS GoGitHubhttps://github.com/Ztsdut/GNSS-Go项目目前以 Python 开发提供桌面 GUI、命令行工具和 Python API希望把“找站—选站—规划—下载—整理”尽可能放到一个工具里完成。一、GNSS Go 是什么GNSS Go 是一个面向全球 GNSS 数据获取与管理的开源工具。它不是简单地把几个下载网址放在一起而是尝试建立一个统一的数据访问入口全球 IGS 区域/国家 CORS 网络 站点地图 数据下载 文件整理。当前项目主要包含全球 IGS 站点浏览亚洲、欧洲、美洲、大洋洲等区域 GNSS/CORS 网络地图选站与站点搜索GNSS 观测文件下载广播星历/导航文件下载精密轨道、钟差、ERP、IONEX 等产品规划与下载RINEX 2/3/4 文件名与压缩格式识别Hatanaka / Unix.Z解压支持HTTP(S)、FTP、SFTP、浏览器自动化等多种数据源接入方式Windows / macOS / Linux 跨平台构建GUI CLI Python API 三种使用方式。二、为什么要做这个项目GNSS 数据并不缺。真正麻烦的是数据很多但入口太散。比如同样是下载 RINEX 观测数据不同网络的访问方式可能完全不同IGS ├── 全球数据中心 ├── 多镜像 └── 标准长文件名 日本 GEONET ├── 官方网页 ├── 站点选择 ├── 日期选择 └── 浏览器下载流程 韩国 CORS ├── 官方数据中心 └── HTTP ZIP 下载 部分欧洲国家 ├── FTP / HTTP └── 国家级 CORS 网络 南美地区 ├── SIRGAS ├── 巴西 RBMC ├── 智利 CSN ├── 墨西哥 RGNA └── 乌拉圭 IGM如果只处理一个站、一天的数据这些差异还可以忍受。但如果要做区域 GNSS 数据批处理多站 PPPTEC / 电离层研究地震、火山、TID、空间天气事件分析多年 CORS 数据统计GNSS 气象全球或区域产品评估数据获取本身就会变成一项很重的工作。GNSS Go 的目标就是尽可能把这些差异放到后端处理。三、最直观的功能在地图上选 GNSS 站GNSS Go 内置站点目录并支持在线底图与离线地图回退。启动后可以直接查看站点分布再按区域、数据源或国家进行筛选。你可以按下面的逻辑选站Global └── IGS Regional ├── Asia ├── Europe ├── Latin America ├── North America ├── Oceania ├── Africa └── Antarctica区域网络与全球 IGS 可以放在同一个界面里查看。这对做区域 GNSS 研究比较方便因为很多时候我们真正关心的并不是“某个数据中心”而是这个区域到底有哪些站哪些站的数据能下载四、全球 IGS 多国 CORS不再只盯着一个数据源目前 GNSS Go 已接入或整理了多类全球和区域数据源。其中包括全球IGS亚洲日本 GEONET韩国 GNSS 网络中国部分 GNSS/CORS 数据入口中国台湾地区 GNSS 数据入口中国香港 SatRef蒙古、Singapore 等区域入口欧洲以 EPN/EUREF 为基础同时支持或整理多个国家级 CORS 数据源例如FranceGermanySpainNetherlandsAustriaPortugalBelgiumGreeceItalyPolandRomaniaUnited KingdomSwedenFinlandSwitzerlandCzechiaHungarySloveniaNorwayDenmarkBaltic countriesBalkan countries等北美United States CORSCanada CORS / CHAIN 等拉丁美洲SIRGASBrazil RBMCChile CSNMexico RGNAUruguay IGMArgentinaColombiaPeruEcuadorBoliviaCosta RicaPanama等大洋洲AustraliaNew Zealand GeoNet需要说明的是不同官方数据源的开放方式并不一致。有些可以直接自动下载有些需要账号有些只能通过官方网页操作。GNSS Go 不会“伪造”不存在的接口而是尽量明确区分可在软件内直接下载需要跳转官方站点需要注册/登录五、日本 GEONET、韩国等数据源也做了专门适配不同数据源最难统一的地方是它们并不是同一种下载协议。例如日本 GEONET 的部分数据获取需要经过网页流程。GNSS Go 对这种数据源并不是简单地给一个链接而是针对官方流程做了适配。类似地韩国 National GNSS Data Center 也使用了专门的数据下载逻辑。换句话说GNSS Go 的 provider 层并不是urlbase_urlfilename这么简单。而是针对不同官方数据源分别实现访问逻辑。这也是我希望这个项目后续继续扩展的方向一个数据源一个可靠 provider。六、除了观测文件还可以规划导航文件和精密产品GNSS Go 不只是 RINEX OBS 下载器。目前也支持导航数据和精密产品的规划。例如 CLI 中可以直接下载/规划观测数据gnssgo obs\--stationWUH200CHN\--start2026-08-01\--end2026-08-03\--providerwhu\--dry-run导航文件gnssgo nav\--start2026-08-01\--end2026-08-02\--typemixed\--providerwhu\--dry-run精密产品gnssgo product\--typeorbit clock erp\--date2026-08-01\--dry-run\--explain这意味着它可以继续往一个更完整的 GNSS 数据工作台方向扩展而不仅仅是“下载某个站的 RINEX”。七、RINEX、压缩文件、断点与批量下载做 GNSS 数据下载文件格式本身也是一个麻烦点。不同年代、不同数据中心可能出现RINEX 2 RINEX 3 RINEX 4 .gz .Z Hatanaka 普通 RINEXGNSS Go 内部已经加入对应的文件名、压缩格式和后处理逻辑并支持并发下载重试断点/恢复文件校验自动整理可选解压保留原始压缩文件。对于长时间、多测站下载这些功能比“浏览器另存为”更实用。八、GUI、CLI、Python API 都可以用我不希望 GNSS Go 只能给“会写 Python 的人”使用所以目前同时保留了三套入口。1. GUI适合地图选站日期选择数据源选择直接查看下载计划普通科研用户。2. CLI适合服务器、批处理和自动化任务。例如gnssgo--helpgnssgo doctor3. Python API如果你希望把 GNSS Go 接入自己的程序也可以直接fromgnssgoimportGNSSGo clientGNSSGo()planclient.plan_observations(stations[WUH200CHN],start2026-08-01,end2026-08-03,)resultsclient.execute_plan(plan)后续如果做 GNSS 数据自动处理流水线这种方式会更方便。九、支持代理设置这一点对国内用户可能比较重要。部分海外 GNSS 数据站点存在网络不稳定FTP/SFTP 访问失败HTTPS 被重置不同协议需要不同代理方式GNSS Go 中已经加入网络与代理配置包括DirectSystem ProxyHTTP ProxySOCKS5HTTP/HTTPSSFTPFTPChrome/Edge 浏览器辅助流程这样可以尽量减少“浏览器能打开但程序连不上”的情况。十、内置站点快照第一次打开也能看到站GNSS Go 会打包一份站点坐标快照。也就是说软件启动时不需要先等待所有官方站点接口返回地图就可以先显示已经打包的站点。之后再在后台更新在线站点信息。这个设计主要解决一个体验问题GNSS 软件第一次打开时不应该面对一张空地图。十一、如何安装项目目前已经开源GitHubhttps://github.com/Ztsdut/GNSS-Go如果从源码运行需要 Python 3.11。Windowsgit clone https://github.com/Ztsdut/GNSS-Go.git cd GNSS-Go python-m venv.venv.\.venv\Scripts\Activate.ps1 python-m pip install--upgrade pip python-m pip install-e.[build,hatanaka,unix-z]gnssgo guimacOS / Linuxgitclone https://github.com/Ztsdut/GNSS-Go.gitcdGNSS-Go python-mvenv .venvsource.venv/bin/activate python-mpipinstall-Upip python-mpipinstall-e.[build,hatanaka,unix-z]gnssgo gui如果只想看命令行功能gnssgo--help十二、它适合哪些人如果你属于下面这些方向可能会比较有用GNSS / GPS / BDS / Galileo 数据处理PPP / PPP-ARRTK / CORS电离层 TEC 研究TID / 空间天气GNSS 气象地壳形变地震 GNSSGNSS 产品评估多站批处理需要长期维护 GNSS 数据下载脚本的人。特别是当你的研究需要同时使用IGS 国家 CORS 区域 GNSS 网络时一个统一入口会节省很多重复工作。十三、这个项目还远没有“做完”GNSS 数据源有一个非常现实的问题网站会变、接口会变、目录会变、证书会变、登录方式也会变。所以 GNSS Go 更适合作为一个持续维护的开源项目而不是一个“一次写完”的脚本。后续我希望继续完善更多国家/地区 CORS 网络更完整的数据可用性检测更稳定的站点元数据更新更多精密产品下载任务管理更强的批处理能力Provider 插件化更多真实数据源测试。如果你发现某个国家的数据源失效或者有新的公开 GNSS/CORS 数据源也欢迎提交 Issue。十四、为什么选择开源GNSS 数据获取其实是很多研究工作的共同基础。不同课题组、不同学生经常会重复写IGS downloader EPN downloader CORS downloader RINEX downloader FTP downloader SFTP downloader如果这些代码永远只留在自己的电脑里每个人都会重新踩一次坑。所以我更希望把 GNSS Go 做成一个公开、可修改、可扩展的工具。项目采用MIT License。你可以使用修改二次开发提交 PR增加新的 provider。项目地址GNSS GoGitHubhttps://github.com/Ztsdut/GNSS-Go如果这个项目对你有帮助欢迎⭐Star提交 Issue提交 Pull Request提供GNSS/CORSORS 数据源最后也想问一个问题你平时最常下载哪个国家、哪个 CORS 网络的 GNSS 数据如果留言里某个数据源需求比较多我也会优先考虑继续接入。