Satellite & GIS Patterns
Patrones para trabajar con datos satelitales, GIS y routing client-side, inspirados en repos explorados.
1. DRISH-X — Tráfico desde Satélite
Fuente: sparkyniner/DRISH-X (⭐228)
Técnica clave: Spectral Smear Detection
Los satélites Sentinel-2 capturan R, G, B con 1.01s de diferencia. Los vehículos en movimiento dejan un "spectral smear" distintivo (desplazamiento azul-verde-rojo).
Pipeline
Sentinel-2 imagery → Detect spectral smears → Count vehicles → Estimate speed/direction → Time-series analysis
Datos
- Fuente: Copernicus (gratis)
- Resolución: 10m (bandas RGB)
- Revisita: 5 días (constelación Sentinel-2)
- Ejecución: Local en browser, sin infraestructura terrestre
Aplicaciones
- Monitoreo de tráfico en cualquier carretera del mundo
- Análisis de volumen por horas/días/semanas
- Detección de patrones estacionales
2. Client-Side Routing
Fuente: AbelVM/omt-router (⭐11)
Concepto
Routing 100% client-side usando OpenMapTiles vector tiles. Sin backend de routing.
Algoritmos disponibles
- bidirectional-astar — Rápido, bueno para distancias largas
- adaptive-barrier — Balance velocidad/calidad
- delta-stepping — Óptimo para redes grandes
- ultra-dijkstra — Más lento pero más preciso
Modos de transporte
- 🚗 Car
- 🚶 Pedestrian
- 🚲 Bicycle
Integración
- MapLibre GL JS
- Web Workers para no bloquear UI
- Tile caching para rendimiento
Aplicación a Mastermind
- Dashboard Bicimad sin necesidad de backend de routing
- Isolineas (reachability polygons) para estaciones de bike
- Integración con OpenMapTiles existentes
3. Descarga de Datos Satelitales
Fuentes:
- Aouei/remote-sensing-satellite-downloader — Sentinel-2, Landsat-8 via Copernicus OData
- orcunkok/AWS-Dem-Downloader — AWS Terrain Tiles (elevación)
Comandos útiles
# Descargar tiles de elevación AWS
aws-dem-downloader --bbox -3.7,40.4,-3.6,40.5 --zoom 12
# Descargar Sentinel-2
python -m satellite_downloader --sentinel --bbox --date
4. City2Graph — GNN para Ciudades
Fuente: c2g-dev/city2graph (⭐1.2k)
Transforma relaciones geoespaciales en grafos para Graph Neural Networks.
Pipeline
City spatial data → Graph representation → GNN training → Predictions
Aplicaciones
- Predicción de tráfico
- Planificación urbana
- Análisis de movilidad
Integración con Mastermind
Para proyectos de movilidad/bicimad:
- Usar omt-router para routing client-side en dashboards
- DRISH-X como referencia para datos satelitales de tráfico
- City2Graph para análisis avanzado con ML
- Sentinel-2 downloader para obtener datos brutos
5. Isocronas — Patrón Híbrido ORS + NAP
Proyecto: Ntizar/TimeIneco
Arquitectura zero-backend para isocronas de movilidad:
- Coche/Bici/Peatón: OpenRouteService API (gratis, desnivel incluido)
- Transporte público: NAP/GTFS España (catálogo de datos, parseo local)
- PDF: jsPDF + autoTable (informe profesional)
- Todo en un HTML: Leaflet Canvas + vanilla JS
Ver referencias: references/nap-gtfs-integration.md, references/isochrone-architecture.md
6. OpenRailwayMap — Capas de vías férreas en Leaflet
Uso: Superponer infraestructura ferroviaria sobre mapas Leaflet para análisis geoespacial de accidentes, rutas, isocronas.
Capas de tiles
| Capa | URL | Descripción |
|---|---|---|
| standard | https://tiles.openrailwaymap.org/standard/{z}/{x}/{y}.png |
Vías con colores por electrificación (3000Vcc, 25kVac, etc.) |
| fast | https://tiles.openrailwaymap.org/fast/{z}/{x}/{y}.png |
Versión simplificada, más rápida de cargar |
Integración con Leaflet
// Capa base (CARTO Light — buen contraste con vías)
L.tileLayer('https://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}{r}.png', {
subdomains: 'abcd', maxZoom: 19
}).addTo(map);
// Capa OpenRailwayMap (superpuesta con opacidad)
const railwayLayer = L.tileLayer(
'https://tiles.openrailwaymap.org/standard/{z}/{x}/{y}.png',
{ subdomains: 'abcd', maxZoom: 19, opacity: 0.6 }
).addTo(map);
// Toggle en layer control
L.control.layers(null, { "Vías férreas": railwayLayer }).addTo(map);
API GeoJSON
GET https://api.openrailwaymap.org/lines?format=geojson&protected=1
Devuelve: electrificación, ancho de vía, velocidad máxima, nombre de línea. Pitfall: La API a veces bloquea desde IPs de cloud/sandbox. Si falla, usar tiles directamente.
Pitfalls
- OpenRailwayMap tiles devuelven 403 sin headers adecuados. Verificar con
curl -sI. - Opacidad recomendada: 0.4-0.6 sobre CARTO Light. Demasiado alta tapa el mapa base.
- API GeoJSON puede no responder desde sandbox. Fallback: usar tiles.
- Nominatim requiere User-Agent no vacío y tiene rate limit de 1 req/seg.
Referencias
- https://github.com/sparkyniner/DRISH-X-Satellite-powered-freight-intelligence-
- https://github.com/AbelVM/omt-router
- https://github.com/c2g-dev/city2graph
- https://github.com/Aouei/remote-sensing-satellite-downloader
- references/nap-gtfs-integration.md — API NAP completa (endpoints, esquemas, flujos)
- references/isochrone-architecture.md — Patrón arquitectura isocronas ORS+NAP
Comparativa de alternativas
- nasa-gibs/worldview — +1000 capas de imagery NASA GIBS (WMTS/MAP tiles) near-real-time; basemap satelital listo para usar como fondo en patrones GIS.