- 后端
- 数据可视化
- 网络安全
- AI 应用
【免费下载链接】GeoSentinel
**GeoSentinel** is a geospatial monitoring platform that tracks global movement in real time. It aggregates ship and flight routes, live coordinates, and geodata into a unified system, providing clear geographic and geopolitical awareness for analysis, visualization, and decision-making.
GeoSentinel是一款开源全球地理空间监控平台,能把 TomTom 实时路况和各国交通摄像头(CCTV)直播画面直接渲染在地球视图之上——不用打开多个网页,全球道路拥堵与街景实况一目了然。本文面向新手,完整拆解这两大核心功能的用法与实现逻辑。
快速上手:环境准备与 API Key 配置

整个流程只有四步:
- 获取项目代码:
git clone https://gitcode.com/gh_mirrors/ge/GeoSentinel cd GeoSentinel - 安装依赖:
pip install -r requirements.txt - 填入 API Key:流量功能依赖 TomTom Maps API,需要在 templates/earth.html 中找到
const tomtomApiKey = '';,把你的 Key 填入引号内(该变量在文件中出现多处,全局流量瓦片层、区域路况查询各引用一处) - 启动应用:
python app.py,然后浏览器访问http://127.0.0.1:8000/earth进入地球视图
💡 提示:3D 地球模式可选配 Mapbox Token(templates/earth.html),天气弹窗则使用 OpenWeatherMap Key(templates/earth.html)。不填也能正常看 2D 路况图层。
开启 TomTom 流量层:路况粒子流如何铺满地球
进入 Earth 视图后,在右侧传感器面板勾选TOMTOM TRAFFIC UPLINK开关(定义在 templates/earth.html)。此时系统会同时挂载四层数据,共同组成"全球路况":
| 图层 | 作用 | 实现位置 |
|---|---|---|
| 流量瓦片层 | 用红黄绿色带覆盖全球高速,直观呈现拥堵 | earth.html |
| 事故瓦片层 | 标注交通事故、封路事件图标 | earth.html |
| 区域路况 API | 查询当前视野中心的实时速度 | earth.html |
| 粒子流引擎 | 沿道路"跑光点"的粒子动画 | earth.html |
前两层是 TomTom 官方地图瓦片(api.tomtom.com 的 traffic/map 端点),打开开关即自动叠加到地图上,透明度 0.7,不会遮住底图。第三层则调用 TomTomflowSegmentData接口,**每 60 秒自动轮询一次**当前地图中心,把结果写入侧边栏的ZONE_TRAFFIC_STATUS` 面板:
- 当前速度 > 70% 自由流速度 →FLUID(畅通,绿色)
- 40%~70% →MODERATE(缓行,橙色)
- < 40% →HEAVY(拥堵,红色)
- 若接口返回
roadClosure标志,面板还会追加一条ROAD_CLOSURE_DETECTED封路告警
最炫酷的是第四层——粒子流引擎(TrafficParticleEngine类)。它会通过 Overpass API 拉取视野内的真实道路几何(高速、干线、县道、居民区道路),再在 Canvas 上按 45% 青色(畅通)、25% 橙色(缓行)、15% 红色(拥堵)的权重投放光点粒子,沿道路持续流动。缩放级别 < 12 时粒子自动隐藏,避免全球视野下过度渲染。

👆 上图中右侧面板可以看到TOMTOM_TRAFFIC_UPLINK与TRAFFIC_CAMERA_FEEDS两个开关均已激活,摄像头标记已同步投射到 3D 地球表面。
实时 CCTV 摄像头直播:点击地图即看街景
勾选TRAFFIC CAMERA FEEDS开关(templates/earth.html)后,地图会按当前视野范围聚合三类摄像头数据源(加载逻辑见 templates/earth.html):
- 本地摄像头清单:从
/static/data/cameras.json加载并缓存在内存中 - Iowa DOT 服务:通过 ArcGIS FeatureServer 接口获取爱荷华州公路摄像头,支持
.m3u8直播流 - Austin 开放数据:从 Austin 市开放数据平台拉取最多 200 路摄像头实时截图
每个摄像头在地图上显示为一个视频图标,点击即弹出播放窗口,按源类型自动适配四种播放形态:
- HLS 直播流:内置
hls.js播放器,开启低延迟模式(lowLatencyMode)直接在线播放,Safari 则走原生 HLS 支持 - 图片快照:显示实时截图并标注
LIVE_SNAPSHOT,图片失效时自动切换为 CAMERA_OFFLINE 占位 - YouTube / iframe 嵌入:直接内嵌播放
- 普通链接:显示"OPEN DOT STREAM"按钮跳转官方直播页
弹窗关闭时系统会自动销毁所有 HLS 播放器实例释放资源(templates/earth.html),流媒体掉线也会给出STREAM_OFFLINE提示与跳转链接。侧边栏还会同步列出视野内所有摄像头,方便逐个切换。

2D 地图与 3D 地球无缝同步
GeoSentinel 的地球视图支持一键在 2D Leaflet 平面地图与 Mapbox 3D 地球之间切换。流量与摄像头层在两种模式下都可用:
- 切换至 3D 地球时,粒子引擎自动切换到 Mapbox 地图重新拉取道路数据,摄像头标记同步投射到球体表面(3D 同步逻辑见 templates/earth.html)
- 粒子数量在 3D 模式下提升至 1200 个,2D 模式 800 个,保证球面渲染流畅
- 地球旋转、缩放后(moveend 事件),路况面板与摄像头列表会重新按新视野刷新
这意味着你既能俯瞰整个地球的追踪态势,又能随时俯冲进某个城市细看路口摄像头实况,体验非常连贯。

常见问题 FAQ
Q1:流量层为什么是空白的?TomTom 瓦片层必须填入有效 API Key 才能返回图像,请在 templates/earth.html 处配置后刷新页面。
Q2:FLUID / MODERATE / HEAVY 是如何判定的?以自由流速度(freeFlowSpeed)为基准,取当前速度与其比值:< 40% 为 HEAVY,40%~70% 为 MODERATE,其余为 FLUID,同时面板会显示当前速度、自由流速度、道路等级(FRC)与数据置信度。
Q3:摄像头直播打不开?官方流可能临时下线,此时弹窗会显示STREAM_OFFLINE,可点击其中的链接在新标签页播放;快照类摄像头若图片 404 会自动降级为占位图。
延伸阅读
- 功能总览与安装指南:README.md
- 后端 API 实现(地理数据、新闻、AI 等端点):app.py
- 地球视图全部前端逻辑:templates/earth.html
- AI 助手使用指南:docs/geosential_ai.md
- 搜索与 OSINT 指南:docs/search_options.md
- 项目依赖清单:requirements.txt
- 后端
- 数据可视化
- 网络安全
- AI 应用
【免费下载链接】GeoSentinel
**GeoSentinel** is a geospatial monitoring platform that tracks global movement in real time. It aggregates ship and flight routes, live coordinates, and geodata into a unified system, providing clear geographic and geopolitical awareness for analysis, visualization, and decision-making.
相关推荐
RTSPtoWeb终极指南:5分钟实现摄像头实时直播
RTSPtoWeb终极指南:5分钟实现摄像头实时直播 RTSPtoWeb是一个强大的开源工具,能够将RTSP视频流转换为浏览器友好的格式,让你轻松实现摄像头实时
后端音视频视频Yasea多摄像头切换:实现前后摄像头无缝切换直播
Yasea多摄像头切换:实现前后摄像头无缝切换直播 Yasea是一款专为Android平台设计的RTMP直播推流客户端,提供了强大的多摄像头切换功能,让直播创作
音视频直播移动开发Kube-Vip UPNP功能详解:将服务暴露到网关
Kube Vip UPNP功能详解:将服务暴露到网关 Kube Vip作为Kubernetes的控制平面虚拟IP和负载均衡器,提供了强大的UPnP功能,帮助用户
云原生网络与通信
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考