dev-Armaan/satellites
数据在浏览器中回放任意地点过去一周的卫星过境,并匹配公开卫星影像。
项目介绍
Watched 用来回答一个具体问题:地球上任意一点在过去 7 天里被哪些成像、气象、雷达和载人卫星经过,以及有哪些公开照片拍到了这里。输入城市、地标或坐标后,浏览器会回放近 400 颗卫星一周的轨道,找出视场覆盖该点的所有过境,并到 Sentinel-2、Landsat、NASA 气象影像和 Sentinel-1 雷达存档中匹配照片。结果包含图片、时间线和过境回放,回放会沿卫星轨迹逐行揭开照片。
每次过境有四种标签:确认拍到、可能拍到、可能对准过、仅从上方经过,只有第一种表示确实有公开照片。可以打开示例地点直接体验,匹配与影像流程见架构文档。
本地运行
需要 Node 22.12+、24 或 26+ 以及 npm。无需后端配置即可启动:
git clone https://github.com/dev-Armaan/satellites.git
cd satellites
npm install
npm run dev
开发服务器地址为 http://localhost:5173。没有 Supabase 时不会记录任何数据,首页的查询计数隐藏,分享链接会把过境信息直接编码在 URL 中,而不是生成短 /s/ 链接。若要启用持久化查询和分享,需要创建 Supabase 项目并应用迁移,将 .env.example 复制为 .env.local,设置 VITE_SUPABASE_URL 和 VITE_SUPABASE_PUBLISHABLE_KEY。不要把 secret key 放进以 VITE_ 开头的变量。还需要分享卡片和分享页函数时,用 npx vercel dev 启动。
npm test 运行引擎、影像和界面测试,npm run test:backend 测试 api/ 下的函数。包含轨道目录刷新 GitHub Action 的完整部署流程见自托管指南。
使用约束
过境搜索只覆盖应用已知载荷的卫星,其余约 1.7 万个目录对象会画在地球上但不参与搜索;军用和情报卫星大多不在公开目录中。展示的照片最好分辨率为 10 米,Landsat 8/9 可用同时相的 15 米全色波段锐化,仍远高于人的尺度。公开轨道根数发布时约有一公里精度,之后会漂移,过境时间可能相差数秒。影像存档在拍摄后数小时到数天发布,最新过境可能还没有照片。Sentinel-1 雷达图按 20 米显示,和光学影像的匹配方式不同。
轨道计算和照片调色在浏览器的 Web Worker 中运行。站点用 Supabase 保存查询、分享和使用计数;数据库不保存精确坐标、IP 地址或 Cookie,原始事件 48 小时后删除。多数地名从内置列表解析,无法解析的搜索会发往 Open-Meteo、Photon 和 Nominatim,因此这些地理编码和影像服务会看到查询点及周边区域。代码采用 MIT 许可证,但影像、轨道数据、纹理和字体各有自己的条款,分叉部署不应冒充官方站点。
HotRepo 点评
Watched 在 2026 年 11 月 13 日进入 TypeScript 新项目榜,报告窗口内新增 48 星,快照时共 176 星。此前数日的逐小时采样从 101 星逐步升到 176 星,不是单点爆发。仓库提供的是完整应用而非展示页:过境搜索、GPU 卫星渲染、影像匹配、分享后端和 Supabase 迁移都在其中。较具体的工程数据是项目测试中 394 颗卫星、7 天搜索在 Node 单线程约 1.3 秒完成,浏览器会分给多个 Web Worker;这是作者自测条件下的结果,不是通用基准。
本文由 AI 根据项目 README 生成,更新于 ,以项目官方文档为准。