Open-source geospatial intelligence gathering and visualization dashboard. Use when building Worldview-style spy thriller dashboards, monitoring geopolitical events, or analyzing multi-source OSINT. Covers satellite tracking, live flights (commercial + military), maritime traffic, street cameras, seismic data, and real-time visualization with post-processing effects. Supports 3D globe rendering with CRT/NVG/thermal modes, time-based replay, and multi-agent development workflows.
技能名称: geospatial-osint
详细描述:
本技能涵盖构建受Bilawal Sidhu世界观项目启发的实时地理空间情报仪表盘。
| 数据源 | API/URL | 用途 |
|---|---|---|
| ADS-B Exchange | API,免费密钥 | 商业航班 |
| ADS-B Exchange Military |
前端: Cesium.js(3D地球)+ Three.js(特效)
数据层: 轮询API → WebSocket → 实体更新
视觉效果: 后处理(泛光、CRT、夜视、热成像)
开发: 多智能体CLI(OpenClaw、Claude等)
世界观支持多种渲染模式:
javascript
// 特效管线示例
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 | 定期刷新 |
| 商业航班 |
javascript
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倍速
javascript
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.entities.add({
id: icao,
position: Cesium.Cartesian3.fromDegrees(lon, lat, alt),
point: { pixelSize: 5, color: getFlightColor(callsign) },
label: { text: callsign, font: 10px monospace }
});
});
}
javascript
// 加载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
};
}
javascript
// 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)
}
});
});
javascript
// 使用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地理空间仪表盘构建一个[功能]。
要求:
javascript
// 大数据集顺序加载
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线程
}
}
// 使用PointPrimitiveCollection处理1万+个点
const points = viewer.scene.primitives.add(new Cesium.PointPrimitiveCollection());
points.add({ position: ..., color: ... });
该技能支持在以下平台通过对话安装:
帮我安装 SkillHub 和 geospatial-osint-1776199879 技能
设置 SkillHub 为我的优先技能安装源,然后帮我安装 geospatial-osint-1776199879 技能
skillhub install geospatial-osint-1776199879
文件大小: 11.11 KB | 发布时间: 2026-4-15 12:03