Skip to main content

solar-shadow-computation

Calculo de sombras solares con Web Workers + Comlink, cache por terraza/dia/franja, footprints OSM, estimacion de alturas de edificios. Derivado de solmad.

Aller à l'installation

Informations de source

Dépôt
Ntizar/NtizarBrainMasterMind
Dernière activité de la source
26 juin 2026 à 12:05
Langue détectée de SKILL.md
espagnol
Étoiles
2
Forks
0

Options d'installation

Le prompt qui vérifie d'abord la source est sélectionné par défaut. Vous pouvez passer à une commande directe ou télécharger une copie locale.

Vérifiez les fichiers source

Lisez SKILL.md et les fichiers associés affichés par SkillsMP avant de décider de l'installer.

Affichage de SKILL.md

SKILL.md
Instructions source · Aperçu en lecture seule
name
solar-shadow-computation
description
Calculo de sombras solares con Web Workers + Comlink, cache por terraza/dia/franja, footprints OSM, estimacion de alturas de edificios. Derivado de solmad.
version
1.0.0
tags
["solar","sombras","web-workers","gis","solmad"]
# Solar Shadow Computation - Patron de Calculo de Sombras Solares ## Descripcion Patron para calcular si una ubicacion tiene sol directo en un momento dado, cruzando datos de terrazas/ubicaciones con footprints de edificios de OpenStreetMap y posicion solar via SunCalc. ## Origen Derivado del repositorio [solmad](https://github.com/Ntizar/solmad) (Madrid Solea) — buscador de terrazas con sol en Madrid. ## Algoritmo 1. Cargar las ubicaciones (terrazas, puntos de interes) 2. Descargar footprints de edificios desde Overpass/OpenStreetMap por zona visible 3. Estimar alturas con `height`, `building:levels * 3.2m` o fallback de `10m` 4. Indexar segmentos de fachadas en un grid dentro de un Web Worker 5. Para cada ubicacion trazar un rayo hacia el sol y comprobar si algun edificio lo tapa 6. Repetir en pasos de tiempo para estimar minutos restantes y ritmo solar del dia 7. Cachear resultados por ubicacion, dia del ano y franja de 15 minutos ## Stack Tecnologico - **Vite + React + TypeScript** - **Leaflet** para el mapa - **Leaflet.markercluster** para 6.200+ terrazas sin lag - **SunCalc** para posicion solar - **Web Workers + Comlink** para calculos sin bloquear UI - **Zustand** para estado global - **Tailwind** para interfaz ## Cache Solar ```javascript // Cache por terraza, dia del ano y franja de 15 minutos const cacheKey = `${terrazzaId}_${dayOfYear}_${quarterHour}`; // localStorage + data/sun-cache.json via API ``` ## Datos y Fuentes - Terrazas: censo oficial del Ayuntamiento de Madrid (CC BY 4.0) - Edificios: OpenStreetMap contributors (ODbL) - Calculo solar: SunCalc - Proyeccion: EPSG:25830 -> WGS84 ## Limitaciones - No considera arbolado real, toldos, sombrillas - Overpass puede devolver menos edificios si la red/API esta lenta - Por eso se trabaja por zona y se cachea ## Implementacion en Hermes Para replicar este patron: 1. Usar Web Workers para calculos pesados de sombras 2. Implementar cache por ubicacion + dia + franja horaria 3. Usar Overpass API para footprints por zona (no todo el mapa de golpe) 4. Estimar alturas con multiples fuentes: height, levels*3.2, fallback 10m 5. Priorizar rendimiento percibido: primero calculo del punto seleccionado, luego cercanos ## Pitfalls - **Overpass API rate limit** — trabajar por zona visible, no descargar todo - **Web Worker** — los calculos deben ir en hilo secundario para no bloquear UI - **Cache invalidation** — invalidar cache cuando cambian datos de edificios - **Precision** — comunicar claramente que las sombras son aproximadas
Voir sur GitHub