v2/crates/wifi-densepose-geo/README.md
Free satellite imagery, terrain elevation, and map data for RuView spatial sensing. No API keys required.
Integrates your local sensor data (camera + WiFi CSI point cloud) with geographic context:
| Source | Data | Resolution | License |
|---|---|---|---|
| EOX S2 Cloudless | Satellite tiles | 10m | CC-BY-4.0 |
| SRTM GL1 | Elevation/DEM | 30m | Public domain |
| Overpass API | OSM buildings/roads | Vector | ODbL |
| ip-api.com | IP geolocation | ~1km | Free |
| Open Meteo | Weather | Point | CC-BY-4.0 |
| Module | LOC | Purpose |
|---|---|---|
types.rs | 140 | GeoPoint, GeoBBox, TileCoord, ElevationGrid, OsmFeature |
coord.rs | 80 | WGS84/ENU transforms, tile math, haversine distance |
locate.rs | 45 | IP geolocation with caching |
cache.rs | 55 | Disk cache (~/.local/share/ruview/geo-cache/) |
tiles.rs | 80 | Sentinel-2/ESRI/OSM tile fetcher |
terrain.rs | 100 | SRTM HGT parser, elevation lookup |
osm.rs | 150 | Overpass API client, building/road extraction |
register.rs | 50 | Local-to-WGS84 coordinate registration |
fuse.rs | 70 | Multi-source scene builder + summary |
brain.rs | 30 | Store geo context in ruOS brain |
temporal.rs | 100 | Weather, OSM change detection |
use wifi_densepose_geo::{fuse, brain, temporal};
// Build geo scene for current location
let scene = fuse::build_scene(500.0).await?; // 500m radius
println!("{}", fuse::summarize(&scene));
// "Location: 43.6532N, 79.3832W, elevation 76m ASL.
// 23 buildings within view. 8 roads nearby (King St, Queen St).
// 12 satellite tiles at zoom 16."
// Store in brain
brain::store_geo_context(&scene).await?;
// Fetch weather
let weather = temporal::fetch_weather(&scene.location).await?;
// temperature: 12°C, partly cloudy, humidity 65%
Geospatial context is stored as brain memories:
| Category | Content | Frequency |
|---|---|---|
spatial-geo | Location, elevation, buildings, roads | On startup + daily |
spatial-weather | Temperature, conditions, humidity, wind | Nightly |
spatial-change | New/removed buildings, road changes | Nightly diff |
The ruOS agent can search: "what buildings are near me?" or "what's the weather?" and get geospatial context from the brain.
IP Geolocation ──→ (lat, lon)
│
┌─────────────┼─────────────┐
▼ ▼ ▼
Sentinel-2 SRTM DEM Overpass API
(tiles) (elevation) (buildings/roads)
│ │ │
└─────────────┼─────────────┘
▼
GeoScene (fused)
│
┌───────┴───────┐
▼ ▼
Brain Memory Three.js Viewer
MIT (same as RuView)