Position du soleil
Pour une date, une heure et une latitude/longitude données, nous calculons la position du soleil (azimut et altitude) avec la bibliothèque SunCalc, basée sur les algorithmes astronomiques standards (NOAA Solar Calculator). L'azimut est ensuite converti en cap boussole (0° = nord) pour orienter les ombres.
Géométrie des bâtiments
Les empreintes au sol et les hauteurs des bâtiments parisiens viennent d'OpenStreetMap, via les tuiles vectorielles d'OpenFreeMap. Pour chaque bâtiment visible dans le champ de vision, nous utilisons :
- Le tag
render_heights'il existe - Sinon
building:levels× 3 m - Sinon une valeur par défaut conservatrice de 9 m
Projection de l'ombre
Pour chaque bâtiment, nous calculons la longueur de l'ombre au sol :
longueur = hauteur / tan(altitude_solaire)
La direction de l'ombre est l'opposé de l'azimut du soleil. Pour chaque sommet du contour du bâtiment, nous calculons le sommet projeté (origine + déplacement dans la direction de l'ombre, sur la longueur ci-dessus). L'ombre finale est l'enveloppe convexe de l'union du contour d'origine et des sommets projetés.
Détermination du soleil pour une terrasse
Pour chaque bar, nous testons si son point géographique se trouve à l'intérieur d'au moins une ombre de bâtiment (test point-in-polygon avec la bibliothèque Turf.js). En réalité, nous échantillonnons 13 points dans un rayon de quelques mètres autour du bar pour modéliser l'étendue physique de la terrasse : si au moins un point n'est pas dans l'ombre, la terrasse est marquée au soleil.
Données des établissements
Les bars, cafés, pubs et biergartens viennent d'OpenStreetMap via l'API Overpass, filtrés sur le tag outdoor_seating ≠ "no". Nous récupérons et conservons :
- Nom, type, adresse
- Horaires d'ouverture (parsés avec opening_hours.js)
- Site web et téléphone quand disponibles
- Arrondissement (calculé par point-in-polygon contre les limites officielles)
Au total, 4 682 places sont suivies, dont 4 119 dans Paris intra-muros réparties sur les 20 arrondissements.
Limites
- Pas de nuages. Nous simulons uniquement la géométrie. Par temps couvert, l'application reste indicative mais ne remplace pas la météo.
- Arbres et éléments urbains. Nous ne modélisons pas les arbres, les stores, les marquises ni les parasols. Une terrasse théoriquement « au soleil » peut être ombragée par un platane.
- Bâtiments hors champ. Les ombres ne sont calculées qu'à partir des bâtiments visibles à l'écran. Pour des résultats fiables, restez à un niveau de zoom supérieur à 14.
- Hauteurs imprécises. Certains immeubles haussmanniens n'ont pas de hauteur précise dans OSM ; nous appliquons des valeurs par défaut conservatrices, ce qui peut sous-estimer les ombres réelles.
- Orientation des terrasses. Nous testons la position du bar, pas précisément où sont les tables. Une terrasse traversante pourrait être partiellement ombragée même si nous la marquons au soleil.
Crédits
- Données cartographiques : © OpenStreetMap (ODbL)
- Tuiles : OpenFreeMap (style Positron)
- Position du soleil : SunCalc
- Limites des arrondissements : opendata.paris.fr
- Inspiré par jveuxdusoleil.fr