开源地理空间情报收集与可视化仪表盘。用于构建类似Worldview的间谍惊悚仪表盘,监控地缘政治...
Graceraphy OSINT / Worldview Dashboard. 这一技能涵盖建设由Bilawal Sidhu的世界观项目启发的实时地理空间智能仪是一项面向实际任务的技能,主要用于QQ快速启动.;Core Data Required (Free).。
实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;
涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。
本技能涵盖构建实时地理空间情报仪表盘,灵感源自 Bilawal Sidhu 的 Worldview 项目。
| 数据源 | API / URL | 使用场景 |
|---|---|---|
| ADS-B Exchange | API,需申请免费密钥 | 商用航班 |
| ADS-B Exchange Military | API | 军用飞机 |
| OpenSky Network | 免费 API | 飞行数据 |
| MarineTraffic | 免费层级 | 船舶位置 |
| CelesTrak | TLE 文件 | 卫星轨道 |
| n2yo.com | 免费 API | 卫星过境预报 |
| GPSJam | 静态数据 | GPS 干扰热力图 |
| Earthquakes | GeoJSON | 地震数据 |
| Insecam | 公开摄像头流 | CCTV 摄像头 |
| OpenStreetMap | Overpass API | 道路网络 |
前端: Cesium.js(3D 地球) + Three.js(视觉特效) 数据层: 轮询 API → WebSocket → 实体动态更新 可视化: 后处理效果(泛光、CRT、夜视仪 NVG、热成像) 开发方式: 多智能体 CLI(OpenClaw、Claude 等)
Worldview 支持多种渲染模式:
// 后处理效果管线示例
const effects = {
// 夜视仪模式(绿色色调 + 扫描线)
nvg: {
colorMatrix: [0,1,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1],
scanlines: true,
vignette: 0.3
},
// 热成像模式(热力图着色)
thermal: {
colorMap: 'inferno',
threshold: true
},
// CRT 模式(扫描线 + 曲面畸变 + 泛光)
crt: {
scanlines: 0.5,
curvature: 0.02,
bloom: 0.5
},
// 荧光绿模式(高对比度军用绿色)
fluor: {
colorMatrix: [0,0.5,0,0, 0,1,0,0, 0,0.5,0,0, 0,0,0,1],
contrast: 1.5
}
};
| 图层 | 数据源 | 更新频率 |
|---|---|---|
| 卫星 | CelesTrak TLE | 周期性刷新 |
| 商用航班 | ADS-B / OpenSky | 约 5 秒 |
| 军用航班 | ADS-B Exchange military | 约 5 秒 |
| 船舶 | MarineTraffic | 约 1 分钟 |
| CCTV | Insecam | 约 1 分钟 |
| 道路交通 | OSM + 模拟数据 | 静态底图 + 粒子动画 |
| 地震 | USGS | 实时 |
| GPS 干扰 | GPSJam | 静态 / 每日更新 |
import * as Cesium from 'cesium';
const viewer = new Cesium.Viewer('container', {
terrainProvider: Cesium.createWorldTerrain(),
baseLayerPicker: false,
timeline: true,
animation: true,
sceneMode: Cesium.SceneMode.SCENE3D
});
// 启用 3D 建筑模型
viewer.scene.primitives.add(Cesium.createOsmBuildings());
// 设置时钟以支持回放功能
viewer.clock.shouldAnimate = true;
viewer.clock.multiplier = 60; // 加速至 60 倍速
async function loadFlights(bounds) {
const response = await fetch(
`https://opensky-network.org/api/states/all?lamin=${bounds.minLat}&lomin=${bounds.minLon}&lamax=${bounds.maxLat}&lomax=${bounds.maxLon}`
);
const data = await response.json();
data.states.forEach(flight => {
const [icao, callsign, .., lat, lon, alt, .., velocity, heading] = flight;
// 向 viewer 添加实体
viewer.entities.add({
id: icao,
position: Cesium.Cartesian3.fromDegrees(lon, lat, alt),
point: { pixelSize: 5, color: getFlightColor(callsign) },
label: { text: callsign, font: '10px monospace' }
});
});
}
// 加载 TLE 并计算轨道位置
const satellites = await fetch('https://celestrak.org/NORAD/elements/gp.php?GROUP=visual&FORMAT=tle')
.then(r => r.text());
// 使用 satellite.js 进行轨道推演
import { propagate, eciToEcf } from 'satellite.js';
function updateSatellite(satrec, time) {
const position = propagate(satrec, time);
const gmst = satellite.gstime(time);
const positionEcf = eciToEcf(position.position, gmst);
return {
x: positionEcf.x * 1000,
y: positionEcf.y * 1000,
z: positionEcf.z * 1000
};
}
// Insecam — 公开摄像头
async function loadCameras(bounds) {
const response = await fetch(
`https://www.insecam.org/en/by-country/XX/?page=1` // 按国家筛选
);
// 解析摄像头列表,并作为带视频纹理的实体添加
}
// 将摄像头投影到 3D 几何体上
cameraEntities.forEach(cam => {
viewer.entities.add({
position: cam.location,
billboard: {
image: cam.snapshot,
width: 320,
height: 240,
pixelOffset: new Cesium.Cartesian2(0, -120)
}
});
});
// 使用 Cesium 的 PostProcessStage
const bloom = viewer.scene.postProcessStages.bloom;
bloom.enabled = true;
bloom.threshold = 0.5;
bloom.strength = 0.5;
// 自定义 CRT 效果着色器
const crtEffect = new Cesium.PostProcessStage({
name: 'crt',
fragmentShader: `
uniform sampler2D colorTexture;
varying vec2 v_textureCoord;
void main() {
vec4 color = texture2D(colorTexture, v_textureCoord);
// 扫描线
float scanline = sin(v_textureCoord.y * 800.0) * 0.04;
// 暗角
float vignette = 1.0 - length(v_textureCoord - 0.5) * 0.5;
gl_FragColor = vec4(color.rgb * (1.0 - scanline) * vignette, 1.0);
}
`
});
并行运行多个终端:
终端 1:核心 3D 地球 + Cesium 初始化 终端 2:数据集成(航班、卫星等) 终端 3:视觉效果(着色器、后处理) 终端 4:UI 控制系统 + 相机管理
为我的 Cesium.js 地理空间仪表盘构建一个 [功能]。 要求: - [具体行为] - 与现有数据图层集成 - 性能:在无卡顿前提下支持 [N] 个实体 - 视觉风格:[CRT/NVG/thermal/none]
// 大数据集分块加载
async function loadSequential(data, chunkSize = 1000) {
for (let i = 0; i < data.length; i += chunkSize) {
const chunk = data.slice(i, i + chunkSize);
chunk.forEach(addEntity);
await new Promise(r => setTimeout(r, 100)); // 释放 UI 主线程
}
}
// 对于超 10,000 个点,使用 PointPrimitiveCollection
const points = viewer.scene.primitives.add(new Cesium.PointPrimitiveCollection());
points.add({ position: ..., color: ... });
import requests
import schedule
from datetime import datetime
REGIONS = {
'iran': {'lat': 32.0, 'lon': 52.0, 'radius': 500},
'gulf': {'lat': 26.0, 'lon': 52.0, 'radius': 300},
}
def monitor():
for name, bounds in REGIONS.items():
flights = get_flights(bounds)
military = get_military(bounds)
if detect_anomaly(flights, military):
alert(f"Anomaly in {name}: {details}")
schedule.every(5).minutes.do(monitor)
相关专题
热门下载
相关下载
精品课程
共6课时 | 54.6万人学习
共89课时 | 133.4万人学习
共49课时 | 82.2万人学习