# 水位卫星平台:河流水位与影像精准匹配
“水位-卫星”服务解决了根据特定河流水位选择卫星影像的难题。水文专家常遇到这种情况:影像可用,但当时水位与分析需求不符。该平台不仅按日期和云量过滤 Landsat 和 Sentinel-2 数据集,还结合俄罗斯国家水文登记联邦信息系统(AIS GMVO)的水文数据,提供河道、洪泛区和淹没区分析所需的精准影像。
Google Earth Engine 原型:早期瓶颈
初始原型在 Google Earth Engine 中为一个流域区构建,使用 AIS GMVO 数据。通过水位站几何过滤影像时暴露问题:界面迟钝、数据集处理缓慢、配额耗尽。改用 GEE API 预处理生成查找表(水位站、影像 ID、云量),减轻前端负担。
但此方案有缺陷:
- 处理一个流域需 8–10 小时;20 多个流域则不现实。
- 新数据添加时需重新计算。
- 任何步骤出错都得从头来过。
极端条件下数据采集
AIS GMVO 水文数据访问面临中断风险。批量下载解析器在野外——船上用 AI 优化。截止前 17:55 成功下载,获得数百万观测记录数据库。如今数据本地存储,无需依赖外部源。
转向 STAC 和 Microsoft Planetary Computer
关键升级是采用 STAC 标准编目卫星影像,并用 Microsoft Planetary Computer (MPC) 访问 API。STAC 统一跨数据集元数据,支持按几何和时间跨提供商搜索。
架构简化为:
- 水位站和观测数据库。
- 按水位、时段、云量过滤。
- 按元数据在 MPC 搜索影像。
- 按需加载影像。
摒弃繁重数据集过滤,实现闪电般速度。
数据库架构
从 CSV/Excel 转向 PostgreSQL + PostGIS,处理 2800 万观测记录。核心实体关联“水文观测 → 日期 → 卫星影像”。查询毫秒级完成:先水文过滤,再影像搜索,最后加载。
数据库包含表:
- 水位站(坐标、几何)。
- 观测(水位、流量、日期)。
- 影像元数据(ID、云量、数据集)。
日期和几何索引加速 JOIN 操作。
当前实现与技术栈
用户选择水位站、水位范围、时段和过滤条件——服务在地图上返回影像并支持导出。Leaflet.js 驱动地图,Chart.js 生成水文图表。
技术栈:
| 层级 | 技术 |
|-------|------|
| 后端 | Python, Flask, Gunicorn |
| 数据库 | PostgreSQL, PostGIS (2800 万记录) |
| 卫星数据 | Microsoft Planetary Computer |
| 前端 | Leaflet.js, Chart.js |
| 基础设施 | Docker, nginx, HTTPS |
服务上线:level-satellite.ru,开源仓库:github.com/ruorv/level-satellite-public。
核心收获
- 影像选择直接绑定实际水位,避免不可比数据。
- STAC/MPC 提供灵活访问,无 GEE 配额限制。
- PostGIS 加速海量数据集空间查询。
- 可扩展架构:新增水位站/数据无需全量重建。
- 开源代码欢迎社区贡献。
— Editorial Team
暂无评论。