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.

الانتقال إلى التثبيت

معلومات المصدر

المستودع
Ntizar/NtizarBrainMasterMind
آخر نشاط في المصدر
٢٦ يونيو ٢٠٢٦ في ١٢:٠٥
لغة SKILL.md المكتشفة
الإسبانية
النجوم
٢
التفرعات
٠

خيارات التثبيت

يُحدَّد Prompt الذي يراجع المصدر أولًا بشكل افتراضي. يمكنك التبديل إلى أمر مباشر أو تنزيل نسخة محلية.

مراجعة ملفات المصدر

اقرأ SKILL.md وأي ملفات مرافقة يعرضها SkillsMP قبل أن تقرر التثبيت.

عرض SKILL.md

SKILL.md
تعليمات المصدر · معاينة للقراءة فقط
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
عرض على GitHub