Skip to main content

satellite-traffic-detection

DRISH-X/DRISH-ES — detección de tráfico de vehículos desde imágenes satelitales Sentinel-2. RGB offset 1.01s + Random Forest. Fork español en Ntizar/drish-es con autopistas españolas

Zur Installation springen

Quellinformationen

Repository
Ntizar/NtizarBrainMasterMind
Letzte Quellaktivität
26. Juni 2026 um 12:05
Erkannte Sprache von SKILL.md
Spanisch
Sterne
2
Forks
0

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

Datei-Explorer
3 Dateien

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
name
satellite-traffic-detection
description
DRISH-X/DRISH-ES — detección de tráfico de vehículos desde imágenes satelitales Sentinel-2. RGB offset 1.01s + Random Forest. Fork español en Ntizar/drish-es con autopistas españolas
version
1.0.0
author
Ntizar
tags
["vision","satellite","traffic","DRISH-X"]
# DRISH-X — Satellite-Powered Freight Intelligence ## Descripción Inteligencia automatizada de tráfico de vehículos desde imágenes satelitales Sentinel-2. Responde: "¿cuánto tráfico hay en esta carretera y cómo ha cambiado con el tiempo?" ## Repos ### Original (inglés) - **Repo**: sparkyniner/DRISH-X-Satellite-powered-freight-intelligence- (233★) - **URL**: https://github.com/sparkyniner/DRISH-X-Satellite-powered-freight-intelligence- - **License**: MIT - **Autor**: Sairaj Balaji - **Sites preset**: Autopistas alemanas (A7 Braunschweig, A3 Frankfurt, A5 Karlsruhe) ### Fork español — DRISH-ES - **Repo**: Ntizar/drish-es (público) - **URL**: https://github.com/Ntizar/drish-es - **Autor**: David Antizar (adaptación española) - **Diferencias con el original**: - UI 100% traducida al español (HTML, JS, Python logs) - 8 sites predefinidos de autopistas españolas (M-30, A-1, A-2, A-4, A-5, A-6, AP-7, A-7) - Centro por defecto: Madrid (40.45, -3.69) - README completo en castellano - Motor de detección idéntico (mismo RF pickle, mismo pipeline) - **Referencia de targets**: `references/spanish-motorway-targets.md` ## Tecnologías - Python 3.11 (recomendado) - FastAPI + uvicorn (API server) - Sentinel-2 L2A / Copernicus Data Space (imágenes satelitales) - scikit-learn Random Forest (clasificación, NO YOLO) - OSMnx + Overpass API (red de carreteras) - SentinelHub SDK (descarga de imágenes) - Leaflet + Chart.js (frontend) ## Principio Científico El sensor Sentinel-2 registra los canales rojo (B04), verde (B03) y azul (B02) con un desfase de **1.01 segundos**. Un vehículo a 80 km/h se desplaza ~22m en ese intervalo. A 10m/píxel, aparece en posiciones diferentes por canal → firma espectral "azul-verde-roja" de 3-5 píxeles. ## Arquitectura del Pipeline (código real) ``` Sentinel-2 L2A (10m, revisita 5 días) │ ├─ Evalscript: B04(R), B03(G), B02(B), B08(NIR), CLM → array (H,W,5) │ ├─ build_feature_stack() → 7 features por píxel: │ [0] varianza(R,G,B) │ [1] ratio_normalizado(R,B) │ [2] ratio_normalizado(G,B) │ [3] B04 - mean(B04) │ [4] B03 - mean(B03) │ [5] B02 - mean(B02) │ [6] B08 - mean(B08) │ ├─ Clasificación: RandomForestClassifier (rf_model.pickle) │ → 4 clases: fondo, azul, verde, rojo │ → Post-proceso: suprimir fondo con prob < 0.75 │ → Fallback: proxy_classify() si no hay modelo RF │ ├─ ObjectExtractor (recursivo): │ Semilla: píxeles azules (clase 2) │ Crecimiento: azul → verde → rojo │ Validación: 3 colores presentes, 3-5 píxeles, score > 1.2 │ └─ Salida: lat, lon, rumbo, velocidad (~±15 km/h), confianza ``` ## API Endpoints | Método | Endpoint | Descripción | |--------|----------|-------------| | POST | `/api/analyze` | Análisis de zona (streaming NDJSON) | | GET | `/api/roads` | Red de carreteras por bbox | | GET | `/api/sites` | Sites predefinidos + historial | | GET | `/api/feed` | Alertas de detección recientes | | GET | `/api/analytics/trends` | Series temporales diarias | | GET | `/api/detections/:id` | Detecciones de una misión | | POST | `/api/auth` | Credenciales Copernicus (runtime) | ## Despliegue en NaN Builders (Python/FastAPI) Dockerfile patrón para DRISH-ES en NaN: ```dockerfile FROM python:3.11-slim WORKDIR /app ENV PYTHONUNBUFFERED=1 ENV PORT=4000 COPY DrishX/requirements.txt . RUN pip install --no-cache-dir -r requirements.txt COPY DrishX/ ./ RUN mkdir -p drishx_data/sentinel_data/detections drishx_data/osm_cache drishx_data/sh_cache RUN groupadd -S appgroup && useradd -S appuser -G appgroup && \ chown -R appuser:appgroup /app USER appuser HEALTHCHECK --interval=30s --timeout=5s --start-period=15s --retries=3 \ CMD python -c "import urllib.request; urllib.request.urlopen('http://localhost:4000/api/sites')" || exit 1 EXPOSE 4000 CMD ["python", "drishx.py"] ``` **Pitfall NaN + .env:** El `.env` está en `.gitignore` → NO llega al repo → NO está en el contenedor NaN. Las credenciales Copernicus se configuran como **variables de entorno en el dashboard de NaN** (pestaña Env), no vía .env. El código lee `os.getenv("COPERNICUS_CLIENT_ID")` directamente. **Puerto:** El `uvicorn.run()` debe usar `int(os.getenv("PORT", 4000))` para ser flexible entre local (4000) y NaN (PORT inyectado). ## Casos de Uso - **Freight intelligence**: conteo y seguimiento de camiones en autopistas - **Traffic analysis**: patrones de tráfico temporal - **Infrastructure planning**: datos para planificación de infraestructura - **Environmental monitoring**: impacto del tráfico en zonas sensibles ## Targets de Interés - Autopistas principales - Corredores de carga - Fronteras y puntos de control - Zonas industriales ## Patrón de Localización (fork a otro idioma) Para crear una versión localizada (ej: DRISH-ES): 1. Clonar el repo original 2. **Backend (drishx.py):** Cambiar `FEATURED_SITES` con targets locales, traducir log messages y mensajes de error/estado del endpoint `/api/analyze` 3. **Frontend HTML:** Traducir todos los labels, placeholders, botones, títulos de sección 4. **Frontend JS:** Cambiar `testArea` (centro por defecto del mapa), traducir strings de notificación, mensajes de HUD, labels del panel de intel, textos de autenticación, instantiate la clase con nombre localizado 5. **CSS:** No necesita cambios (solo código, sin texto visible) 6. **README:** Reescribir completo en el idioma objetivo 7. **Crear repo** en GitHub y push **Pitfall:** El modelo RF (`rf_model.pickle`) es binario y universal — no necesita cambios al localizar. El modelo fue entrenado en autopistas alemanas pero funciona razonablemente en autopistas europeas similares. ## Pitfalls - Requiere acceso a Copernicus Data Space (gratuito pero con registro) - La resolución de Sentinel-2 (10m/píxel) limita la detección en carreteras secundarias - Las condiciones climáticas (nubes) afectan la disponibilidad de imágenes - El desfase temporal de 1.01s requiere corrección de geometría - **execute_code + patch con comillas escapadas:** Las comillas simples dentro de strings Python que usan comillas dobles causan SyntaxError en execute_code. Dividir en batches pequeños o usar write_file para archivos completos cuando hay muchas traducciones ## Herramientas Complementarias - **Aouei/remote-sensing-satellite-downloader**: descarga de Sentinel-2/Landsat - **orcunkok/AWS-Dem-Downloader**: descargas de DEM de elevación - **c2g-dev/city2graph**: análisis de grafos sobre datos geoespaciales
Auf GitHub ansehen