---
# System prepended metadata

title: Structure de l'ICU parisien à partir de données crowdsourcées

---

# Structure de l'ICU parisien à partir de données crowdsourcées
# Lien zoom pour les visios:
https://pantheonsorbonne.zoom.us/j/93315307983?pwd=cmVMc2wxN2FSQThPMlMwUXpQRG55Zz09
ID de réunion: 933 1530 7983  Code secret: 089598


## 11/03/2024 : début du stage
Programme du jour: 
- Bibliographie sur l'usage des données NETATMO dans le cadre de l'étude du climat urbain
- Découverte du modèle TEB
- Réunion de présentation
- Travail sur R : découverte de Quarto (installation et principe de fonctionnement)

## 12/03/2024
Programme de la matinée:Elaboration de cartes avec leaflet et graphiques avec plotly à partir d'un échantillon d'une semaine en juillet 2019

A la mi-journée: retour avec Malika sur ces premiers éléments:
- Concernant la carto: 
    - privilégier le html et le rendu sur quarto
    - Aller plus loin concernant la symbologie, mieux maitriser les palettes de couleur
    - Voir comment sourcer la carte
    - Envisager de crée une boucle pour faire une cartographie à chaque heure...
    - ...pour essayer de créer un GIF en reprenant les cartes (timelapse)
- Concernant le graphique:
    - Voir comment axer le graphique sur la nuit (de midi à midi et non de minuit à minuit)

Programme de l'après-midi: Recherche de solutions et tentatives pour arriver à un résultat abouti d'ici demain à la mi journée

## 13/03/2024
Le matin: 
- Concernant la progression sur R:
    - Terminer les recherches de solutions sur les problématiques R
    - Réaliser les améliorations et les productions supplémentaires
- Concernant le protocole des relevés NETATMO
    - Relecture de mon travail de l'an dernier avec du recul pour voir quoi garder/quoi améliorer

L'après-midi
- Portage de tous mes petits bouts de scripts sur un quarto qui est désormais opérationnel
- Amélioration du rendu de la carte et du graphique

## 14/04/2024
Le matin:
Progression sur R:
- Apprendre à faire la boucle...
- ...l'expérimenter pour tenter de faire le GIF

L'après-midi:
- Finaliser un peu la carte et le graphique
- Revoir le GIF
- Tenter de faire la carte avec menu déroulant
- Mettre un peu d'ordre dans les scripts

## 15/03/2024

Préparation de la présentation

# Bilan première semaine:
- Concernant le chunk 1 (carte simple)
    -    Carte pas si mal
    -    Pas réussi à intégrer les sources en bas à drte
    -    Pas réussi à retirer les miles (imperial = FALSE).
    -    Pas réussi à inverser la légende

- Concernant le chunk 2 (graphique simple)
    - Graphique ok
    - Petit regret: couleurs n'ont pas de sens, il aurait été intéressant qu'on puisse identifier l'évolution J -> J+1 -> J+2

- Concernant le chunk 3 (boucle simple)
    - Elle est opérationnelle. A la présentation de vendredi les températures étaient les memes, mais le lundi tout va bien!

- Concernant le chunk 4 (températures max à Paris Montsouris)
    - Choix des couleurs?
    - Bien indiquer qu'on parle des TX...
    - Améliorer la collecte des données

- Concernant le chunk 4 (Créer des cartes avec la boucle)
    - Le code a l'air opérationnel (chargement des cartes en html dans mon répertoire) mais cela ne charge pas dans le marked on. J'ai tenté d'incorporer un print mais ça n'a pas fonctionné (je l'ai sans doute positionné à un mauvais endroit)

- Concernant le chunk 5 (Créer le GIF)
    - Pas eu le temps de m'y replonger sérieusement depuis notre visio... En html les cartes sont parfaites, en passant en PNG il y a une bordure moche qui s'installe et la résolution est mauvaise. Pour la bordure je n'ai pas l'impression d'avoir demandé la création dans le code. Pour la résolution je pense qu'il faut ajouter un paramêtre pour choisir soi-même.
    - Problème avec webshot

- Concernant le chunk 6 (Créer la carte avec le menu déroulant)
    - Ne fonctionne pas sur la quarto mais fonctionne bien lancé seul
    - Top d'avoir pu faire fonctionner shiny
    - Réflexion intéressante concernant la légende:
        - 1 seule légende = + évolution temporelle
        - 1 légende/carte = + évolution spatiale


Remarques en vrac:
- Penser à laisser les heures en UTC!
- Objectif: petit à petit moins s'appuyer sur le copilot et mieux comprendre ce qui est demandé à R
---
# Deuxième semaine
## 18/03/2024

Recherche de sources de données
### meteo.data.gouv (opensource de météofrance)
1) Données climato de base
    - Relevés des stations à différents pas de temps (6min, horaire, quotidien, décadaire, mensuel +métadata)

2) Données climato de référence pour le CC
    - Séries Quotidiennes de référence (SQR): TX et TN sur une période par ex.
    - Simulation des schémas de surface

Petit graphique garanti sans copilot pour s'entrainer!
```
install.packages("data.table")
install.packages("lubridate")
install.packages("plotly")
library(data.table)
library(lubridate)
library(plotly)

#Je charge les fichiers

MTX <- fread("SQR_MTX475114001.csv")
MTN <- fread("SQR_MTN475114001.csv")

#Je fusionne
ParisM <- merge(MTX,MTN, by = "AAAAMMJJ")


#Je rends la date présentable
ParisM$AAAAMMJJ <- ymd(ParisM$AAAAMMJJ)

#Je supprime les colonnes en trop
ParisM [,':='("Q_SQR.x"=NULL,"Q_SQR.y"=NULL)]


#J'isole juillet 2019
ParisM0719 <- ParisM[ParisM$AAAAMMJJ >= "2019-07-01" & ParisM$AAAAMMJJ <="2019-07-31", ]

#Je créé le graphique
Graphique <-plot_ly(ParisM0719, x = ~AAAAMMJJ) %>%
  add_trace(y= ~VALEUR.x, name= "TX", mode="lines", line = list(color="red")) %>%
  add_trace(y= ~VALEUR.y, name= "TN", mode="lines", line = list(color="blue"))

#Je renomme les axes
Graphique <- Graphique %>% layout(title = "Séries quotidiennes de référence pour Paris Montsouris (TN et TX) en juillet 2019",
                                  xaxis = list(title="jour"),
                                  yaxis= list(title="Température (en °C)"))

Graphique
```
Résultat : https://r-tools.huma-num.fr/s/81caf9aad29ce9cec7664/files/Deuxi%C3%A8me%20semaine/Graphique%20final.html

https://r-tools.huma-num.fr/s/81caf9aad29cebfcd1460/file_show?path=%2Fdata%2Fuser%2Fl%2Flouislegrand%2FDeuxi%C3%A8me+semaine%2FGraphique+final.html


3) Données de prévision numérique du temps
    - Résultats de simulations des modèles ARPEGE et AROME à différentes résolutions
    - données de surcote océanique et modèles de vagues

### Pour les LCZ: LCZ-generator

[Lien vers l'article](https://www.frontiersin.org/articles/10.3389/fenvs.2021.637455/full)
- Plusieurs villes en téléchargement sur le site, avec indice pour la fiabilité
- Carte mondiale sur GEE:

```
var dataset = ee.ImageCollection("RUB/RUBCLIM/LCZ/global_lcz_map/latest")
            .mosaic();
            

var visualization = {
  bands: ['LCZ'],
  min: 1,
  max: 17,
  palette: [
    '8c0000','d10000','ff0000','bf4d00','ff6600',
    'ff9955','faee05','bcbcbc','ffccaa','555555',
    '006a00','00aa00','648525','b9db79','000000',
    'fbf7ae','6a6aff'
    ]
};

Map.addLayer(dataset, visualization, 'LCZ_Filter');
```

https://r-tools.huma-num.fr/s/81caf9aad29ce50829289/graphics/80fe5e5b-83c3-4184-8ec4-123d2c9b26de.png


### Concernant les arbres?
<iframe src="https://opendata.paris.fr/explore/embed/dataset/les-arbres/map/?disjunctive.typeemplacement&disjunctive.arrondissement&disjunctive.libellefrancais&disjunctive.genre&disjunctive.espece&disjunctive.varieteoucultivar&disjunctive.stadedeveloppement&disjunctive.remarquable&dataChart=eyJxdWVyaWVzIjpbeyJjb25maWciOnsiZGF0YXNldCI6Imxlcy1hcmJyZXMiLCJvcHRpb25zIjp7ImRpc2p1bmN0aXZlLnR5cGVlbXBsYWNlbWVudCI6dHJ1ZSwiZGlzanVuY3RpdmUuYXJyb25kaXNzZW1lbnQiOnRydWUsImRpc2p1bmN0aXZlLmxpYmVsbGVmcmFuY2FpcyI6dHJ1ZSwiZGlzanVuY3RpdmUuZ2VucmUiOnRydWUsImRpc2p1bmN0aXZlLmVzcGVjZSI6dHJ1ZSwiZGlzanVuY3RpdmUudmFyaWV0ZW91Y3VsdGl2YXIiOnRydWUsImRpc2p1bmN0aXZlLnN0YWRlZGV2ZWxvcHBlbWVudCI6dHJ1ZSwiZGlzanVuY3RpdmUucmVtYXJxdWFibGUiOnRydWV9fSwiY2hhcnRzIjpbeyJhbGlnbk1vbnRoIjp0cnVlLCJ0eXBlIjoiY29sdW1uIiwiZnVuYyI6IkFWRyIsInlBeGlzIjoiaWRiYXNlIiwic2NpZW50aWZpY0Rpc3BsYXkiOnRydWUsImNvbG9yIjoiIzAwMzM2NiJ9XSwieEF4aXMiOiJ0eXBlZW1wbGFjZW1lbnQiLCJtYXhwb2ludHMiOjUwLCJzb3J0IjoiIn1dLCJ0aW1lc2NhbGUiOiIiLCJkaXNwbGF5TGVnZW5kIjp0cnVlLCJhbGlnbk1vbnRoIjp0cnVlfQ%3D%3D&basemap=jawg.dark&location=10,48.7785,2.51285&static=false&datasetcard=false&scrollWheelZoom=false" width="800" height="300" frameborder="0"></iframe>

## 19/03/2024

#### Listing des différents éléments pouvant jouer sur le capteur

**Les éléments qui impactent l'ICU**
- Altitude du capteur par rapport au niveau de la mer (à voir si à Paris l'impact est grand)
- La LCZ dans laquelle est située le capteur
- L'hydrographie aux alentours du capteur (dans la limite du raisonable)
- Le SVF
- La localisation à proximité de grands axes routiers par exemple
- Les matériaux utilisés pour la rue/les murs (LST?/Analyse visuelle?)
- La végétation


**Les éléments qui parasitent le capteur**
- Altitude du capteur par rapport au sol (étages)
- Humidité anormale (serre/véranda?)
- Exposition du capteur à l'ensoleillement
- Position par rapport au batiment ou à d'éventuels obstacles
- Réflexions et émissions thermiques
- Station située à l'intérieur
- Flux anthropique comme une climatisation qui rejette sur le balcon

Moteur de recherche d'aide pour R: rseek

**Base de données à créer pour qualifier tes capteurs**
- [x] - MNT1m bd alti: via GEE
- [x] - LCZ: Demuzere et al.
- [ ] - BDtopo via IGN
- [x] - Route500 via IGN
- [x] - SVF (bricolage dans un premier temps, "à la main")
- [x] - NDVI à une seule date: 01/04/2019
- [ ] - LST?

**Traitement des données**
- [x] - MNT1m bd alti: via GEE Problème de projection
- [x] - LCZ: Demuzere et al.
- [ ] - BDtopo via IGN
- [x] - Route500 via IGN
- [x] - SVF (bricolage dans un premier temps, "à la main")
- [x] - NDVI à une seule date: 01/04/2019 Problème de projection
- [ ] - LST?

## 20 et 21/03

Poursuite des recherches et de l'apprentissage de R pour présenter des résultats propres le 22/03

## 22/03/2024

Préparation de l'oral avec une présentation quarto

https://rcarto.github.io/posts/mapsf_raster_v0.9.0/

# Bilan deuxième semaine

Concernant la production effectuée cette semaine:
- Prendre un peu plus de temps pour faire la présentation sur quarto.
- Pour les critères séléctionnées, ça a fonctionné mais méthode ou data parfois à revoir.
- Pour ceux qui n'ont pas été vus (Hydrographie et LCZ (?)) à voir en troisième semaine.



Concernant l'apprentissage global de R 
- Continuer à moins être sur copilot quitte à prendre un peu plus de temps
- Commencer à être plus rigoureux scientifiquement
- Mieux apprivoiser l'environnement R, mieux gérer les scr
- Voir pour faire des fiches avec les lignes de code régulièrement utilisées


- Voir pour mail NETATMO


# Troisième semaine
## 25/03/2019

- J'ai fait le bilan de la semaine dernière et revu un peu le code en identifiant les éléments sur lesquels je dois être le + vigilant
- Lecture de la thèse de X Froissard
- Commencer gradient à travailler gradient

## 26/03 puis 27/03/2023
- J'ai terminé le travail sur le gradient
- Petit point à 10h
- Travail sur la BDD

Base de donnée utilisée:
- Pour l'altitude: MNT RGE alti résolution 1m sur l'île de France (+sud hauts de france) téléchargé en mosaique pour ensuite être récupéré via une boucle sur R. 
    - Extraction de l'altitude au point localisé grâce à la station NETATMO. C'est ok
- Pour l'hydrologie: Surface hydrographique de la BD topo de l'IGN. Téléchargé sous la forme shp. 
    - Représentation de la part de surface hydrographique dans un buffer de 100m. Problème: valeurs faibles voire inéxistantes pour la majorité des points. Augmenter la taille du buffer? trouver une autre solution: mesurer la distance de la station au réseau hydro?(sauf qu'être à 100m d'un petit point d'eau et 100m de la Seine n'apporte pas le même intérêt)
- Pour les surfaces bâties: Batiments de la BD topo de l'IGN sous format shp.
    - Représentation de la part de surface batie dans un buffer de 100m. C'est ok
    - Représentation de la hauteur moyenne des batiments dans un buffer de 100m. C'est ok
- Pour la végétation: J'hésite encore (je fais des essais):
    - Soit je fais un NDVI à 10m (plus simple dans un premier temps)
    - Soit je tente une classification pour obtenir la végétation basse, la végétation haute, les zones agricoles pour tenter de quantifier chacune.
- Pour la classification LCZ: Demuzere et al. 2021
    - Séléction de la classe LCZ la plus représentative dans tout le buffer de 100m. C'est ok.
- Pour le SVF: En attente de data
    - SVF moyen mais sans doute dans un buffer plus réduit, à voir en fonction de ce que cela donne.

## 28/03
Concernant la base de données (suite):
- Pour la végétation: j'ai produit un ndvi moyen à l'intérieur de chaque buffer. Pour la classification je vais faire des recherches
- Pour l'hydrologie: J'ai tranché: entre augmenter le rayon du buffer et trouver la distance à la surface hydro la plus proche, j'ai choisi la première option. Je suis passé d'un rayon de 100 à 250. 

Travail sur la matrice de corrélation:


|  | Température |
| -------- | -------- |
| Distance du centre-ville | -0.73     |
|Part surface batie | 0.61 |
|Hauteur moyenne du bâti | 0.71|
|Part surfaces hydro | 0.03 |
|NDVI moyen|-0.66|
|Altitude|-0.33|


![image](https://hackmd.io/_uploads/SkhQEJEyA.png)
![image](https://hackmd.io/_uploads/HkhN41Ek0.png)
![image](https://hackmd.io/_uploads/HJKD_k4JC.png)

> [name=Malika]c'est quoi les points qui s'alignent sur la droite pour l'altitude ?? curieux...

## 29/03
Concernant le code écrit cette semaine, il est présent dans le projet "Deuxième semaine", tout comme les données de stations utilisées "stations_juillet19" et les résultats obtenus avec 100 stations dans le csv "stations"

Commencer à voir le stepwise

Préparer la présentation

Réunion à 14h

# Bilan troisième semaine

Concernant l'étude de l'environnement autour des stations: Le code est bon, les corrélations sont encourageantes. Voir avec les résultats de la thèse de X. Froissard si ça colle notamment en ce qui concerne l'hydrologie.
Pour semaine 4: tester la fiabilité avec 4 autres échantillons de 100 stations, et monter l'échantillon à 300/400 pour voir si les résultats sont similaires.

Autre challenge: trouver quelques 10aines de stations pathologiques
- Voir si dans la semaine j'ai une nuit sans gradient, sinon ne garder que Paris intramuros
- Obtenir l'équation du gradient (pour calculer les températures en anomalie et identifier les stations patholofiques)
- Faire des couples de station avec la distance et l'écart de température
- et/ou temp médiane dans un buffer autour d'une station

## 02/04

- Bilan troisième semaine
- Lecture de la partie résultat de la thèse de X.F.
- Lancement des autres échantillons de 100 stations avec le code élaboré auparavant (près de 2h par échantillon)
- Début de mise en page des résultats pour les différents échantillons.
- Travailler sur l'obtention de l'équation liée à la courbe du gradient du 25/07

## 03/04

Variation des R² pour les 5 échantillons:
![image](https://hackmd.io/_uploads/BkuvHc510.png)

Concernant les variations de LCZ d'un échantillon à l'autre:
- généralement trois classes dominent les autres: 2/5/8.
- ... laissant peu de place aux autres classes 
> [name=Malika]oui, c'est un pb ensuite pour les stats, etc.
- Ce sera plus intéressant de voir avec des échantillons de 400 stations.

Actuellement en train de rédiger un code pour avoir la température médiane des stations 400m autour de chacune. Cela met du temps (trop?) donc je suis passé sur humanum pour que ça tourne + vite, à voir
Update: ça n'a pas bien marché
> [name=Malika]je n'ai pas pris le temps de regarder ton code... 


## 04/04

Travail sur l'équatien du gradient du 25/07
-> J'ai utilisé la formule t(z)= (turb-trur)*e(-z/portée)+trur. Cela n'a pas fonctionné comme je l'aurai souhaité
![image](https://hackmd.io/_uploads/BJxjl8hJR.png)
ça part bien mais ça ne décroche pas assez pas.
J'ai également tenté de varier les courbes de tendance sur excel mais pas très probant.
A voir peut être avec les ruptures de pente


L'après-midi: J'ai fait rapidement les sheet-cheat essentielles


J'ai enfin réussi à comparer la température des stations à la moyenne des stations alentours
- C'est une moyenne car pas réussi à faire fonctionner le code sur R pour faire une médiane, et sur excel le TCD ne permet pas d'obtenir la médiane
- ça fonctionne et c'est intéressant


## 05/04

Le matin: Finalisation des différents travaux et préparation de la présentation.

L'après-midi: Réunion puis téléchargement fichiers avec Filezilla et chargement code online.

# Bilan quatrième semaine

Concernant l'équation de mon gradient:
- portée =/ 50km Plutot 15, mais adapter pour voir
- portée ~75% de la décroissance
- Puis ensuite travailler en anomalie -> objectif pour S5

Concernant ma qualification des capteurs:
- ajouter le SVF: en attente du fichier
- Trouver une date sans îlot (voir en 2019 ou 2022)
- Une fois toutes les données acquises, lancer le code x5 avec 400 stations -> objectif pour S5

Concernant mon travail sur le comportement des stations vis à vis des autres
- Faire fonctionner avec la médiane
- Savoir si les stations anormales le sont sur d'autres nuits
- => Faire un score pour avoir un aperçu sur le long terme
- Pour les paires de points: faire correlographe/semivariogramme
- Délimiter intramuros/petite couronne/grande

Remarques en vrac:
- prévoir de regarder les fonctions pour voir
- prévoir un peu de biblio

## 08/04

Bilan quatrième semaine
Relecture codes
-> j'ai envisagé des manières de l'améliorer pour tout faire sur R + faire fonctionner la médiane j'ai fait des essais avec un jeu de données sans tri préalable

Un peu de biblio: Can the crowdsourcing data paradigm takeatmospheric science to a new level? Chapman, Lee; Bell, Cassandra; Bell, Simon

## 09/04

J'ai repris mon code qui de base calculait la moyenne des stations dans le buffer. Désormais c'est une station qui calcule la médiane dans le buffer pour la date que je souhaite!
ça fonctionne mais pas tout à fait puisque lorsque je lance ma boucle trop de fois j'ai le message d'erreur 
Erreur dans vecseq(f__, len__, if (allow.cartesian || notjoin || !anyDuplicated(f__,  : 
  Join results in 291877 rows; more than 59180 = nrow(x)+nrow(i). Check for duplicate key values in i each of which join to the same group in x over and over again. If that's ok, try by=.EACHI to run j for each group to avoid the large allocation. If you are sure you wish to proceed, rerun with allow.cartesian=TRUE. Otherwise, please search for this error message in the FAQ, Wiki, Stack Overflow and data.table issue tracker for advice.
  
Je pense que c'est au moment où cela execute une jointure dans la fonction sauf que dans la fonction des jointures il y en a pas mal! Si je repars de 0 je peux bien lancer la date en question et cela fonctionne, mais au bout de généralement 5 dates de nouveau le même message d'erreur...

![image](https://hackmd.io/_uploads/S1EIZaMeA.png)

J'ai travaillé sur le gradient: 
J'ai revu mon équation, et en effet ça fonctionne beaucoup mieux. Là où c'est embêtant c'est qu'au centre de Paris mon gradient ne colle pas vraiment aux valeurs mesurées. Je pense que le gradient est bon mais qu'un grand nombre de mesures posent des soucis.
![image](https://hackmd.io/_uploads/SJs3c6zxA.png)
Explications: J'ai réussi à appliquer l'équation du gradient pour chaque point en fonction de sa distance de Paris, j'ai ensuite calculé la différence entre la valeur mesurée et celle estimée. Si le point est rouge, on est loin du gradient, vert foncé l'inverse.

En soit l'apport de la couleur ne change pas grand chose à ce que j'avais avant, c'est surtout pour matérialiser le fait que j'ai réussi à appliquer le gradient pour chaque point.

## 10/04
au programme:
- J'essaie de revoir mon équation: avoir une meilleure Trur/Turb?

-> J'ai essayé, mais chaque nuit a son gradient. J'ai tenté plusieurs seuils pour Turb (<5km?) et pour Trur (>35km?). Pour la portée, cela s'adapte en fonction du gradient. Peut être serait il pertinent d'ajouter à la fonction un calcul de la portée en fonction de l'évolution de la décroissance? 

- Je transforme mon code en fonction et/ou boucle de manière à obtenir à différents moments l'écart de la station par rapport au gradient, et faire tourner sur un grand nombre de dates pour obtenir un score global de la manière dont la station s'est comportée par rapport aux différents gradients sur la semaine

-> J'ai fait une fonction et ça fonctionne ça a des défauts:
    Quand je fais tourner la fonction une deuxième fois ça m'écrase le résultat précédent. J'ai essayé de renommer les colonnes crées en ajoutant en suffixe la date du calcul mais ne fonctionne pas
    Quand je fais tourner la fonction, cela supprime toutes les stations qui ne sont pas concernées par la date en question (je pensais que c'etait all.x=TRUE mais à priori non?)

En bonus j'ai commencé à travailler sur l'étude de la variation de température entre les voisins. Je n'avais pas fait la matrice de corrélation sur qgis car je voulais une matrice en 3 colonnes alors que R la fait en n=ligne=colonnes. Je l'ai faite et modelée comme je souhaite.

## 11/04

J'ai retravaillé le code de la comparaison entre voisins qui reposait beaucoup sur du travail hors R (ex: matrice de corrélation faite sur qgis, comme les jointures).

J'ai fais la matrice de corrélation sur R, j'ai désormais la distance entre chaque paire de stations, et la différence de température pour un jour donné (je peux je pense rapidement passer tout ça en fonction)

J'obtiens donc les données de la semaine dernière mais en optimisé sur R.
![image](https://hackmd.io/_uploads/SJ7PG9BgC.png)

## 12/04

Programme: 
- J'ai beaucoup travaillé sur des manières de dire si oui ou non une station est "clean". Il faudrait avoir un peu de recul sur ces analyses: elles ciblent les mêmes stations pathologiques? les techniques sont complémentaires?
- Transformer fonction courbe tendance en boucle?
- Préparation de la réunion du vendredi

# Point semaine 5

Pour le gradient de température: 
- Régler le fait que ça écrase les résultats précédents quand je relance la fonction
- Automatiser le calcul de la portée
- Faire fonctionner sur plusieurs relevés

Pour l'écart à la température médiane des stations alentours
- Régler mon soucis de jointure
- Quand il sera réglé, lancer sur un grand nombre de relevés
- Revoir mes scores pour mieux détailler notamment quand l'écart est léger

Pour les paires de points:
- Pour l'instant je garde mon écart en °C
- Transformer en boucle pour passer sur une longue période et avoir un résultat + représentatif
- Voir si j'en fait un score ou que je fais des stats descriptives avec les résultats obtenus

## 15/04

Bilan semaine précédente.
J'ai ensuite retrvaillé sur l'écart à la médiane et réglé pas mal de soucis:
- avant c'etait une fonction avec laquelle je ne pouvais pas effectuer + de 5 jours => Maintenant c'est une boucle qui peut enchainer tout l'été heure par heure si on en a envie
- J'ai revu le score pour l'adapter: Avant ça allait de 1 à 5 avec des intervalles qui étaient très (trop) larges => Désormais: cela va de 1 à 13 avec des intervalles de 0,25

J'ai commencé à retravailler le gradient de température
- Je suis passé sur une boucle, ça n'écrase plus l'ancien résultat et je peux désormais enchainer toute la semaine sans soucis
- portée conservée à 15km ça reste un soucis il faut que je me mette dessus


## 16/04
Pour les paires de points:
- Le code est transformé en boucle
- J'en ai fait une moyenne, a voir si je peux pas faire mieux

Corrélation entre les méthodes:
![image](https://hackmd.io/_uploads/S1kCYAolA.png)
![image](https://hackmd.io/_uploads/BJZW9Rol0.png)
![image](https://hackmd.io/_uploads/BkcmcRslC.png)

Maintenant que les codes fonctionnent il faut que je regarde les modalités 
Faut garder en tête que les méthodes n'ont pas l'obligation d'être corrélées, ces graphs sont surtout là pour observer la répartition des points

## 17/04

J'ai travaillé sur une méthode de séléction des stations basée sur la distance à Paris et la LCZ.
Pour l'instant le code fonctionne, il faut que je réflechisse à ce que je fais des LCZ qui ont trop peu de stations (voir si je fusionne). Idem, est-ce que je fusionne la végétation?
![image](https://hackmd.io/_uploads/SyPRBYTeA.png)

## 18/04

![temp par LCZ le 2507 6h](https://hackmd.io/_uploads/HJEQhIAgA.png)
Température en fonction des LCZ et de la distance à Paris le 25 juillet 2019 à 6h UTC
J'ai étudié les résultats sur plusieurs jours: J'ai décidé de considérer comme NA les stations n'ayant pas au moins 5 jumelles (même LCZ et même distance). J'ai procédé à la moyenne des écarts entre la temp. mesurée et la temp.LCZ/distance pour chaque station.


# 19/04
Petite remarque: la moyenne de l'écart pour la méthode du plus proche voisin n'a pas de sens puisque la médiane des stations proches a déja ce rôle.
J'ai organisé les scores, et les évaluations

![image](https://hackmd.io/_uploads/HyHsqwHbA.png)

## Bilan semaine 6
Fin de ma méthodologie d'évaluation des stations par comparaisons mutuelles. C'etait intéréssant comme approche.
Les 4 méthodes ont des approches différentes mais puisque l'objectif est le même (comparaison entre elles) elles se complètent/superposent/chevauchent. La méthode médiane et la méthode voisins ont des similarités. Le gradient et la dist/LCZ ont eux aussi des similarités. 

Dans la globalité la méthode permet de se faire une idée fiable sur la moitié des stations environ (le reste non car résultats mitigés ou trop de N/A).

Cette méthode s'inscrit évidemment dans une démarche plus globale de sélection des stations et ne peut en aucun cas se suffire à elle même.

Il y a de nombreux points dont on peut discuter:
- Les scores
- Les couleurs
- Les évaluations
- Ce qu'on peut en faire

Dans l'attente des avis sur ce travail!
Remarques en vrac:
-> + à l'aise sur R
-> J'ai fait 2 évaluations/4 sur excel pour être à l'aise avec ce que je faisais, il faudrait les faire passer sur R.

## 22/04

Bilan semaine précédente
Préparation de la présentation pour le rdv à 16h
RDV

## 23/04

Résolution de mon problème de projection
Biblio
Commencé à travailler sur les gradients par LCZ

## 24/04

Biblio
Réflexion sur l'état de l'art
Gradients par LCZ

## 25/04
Réunion à 3
Reprise en main du code de qualification des capteurs
A l'heure actuelle:
- Récupération des stations sur un seul relevé
-> Sélection de 100 stations au hasard
-> LCZ la plus importante dans un buffer de 100m
-> Part de bati dans un buffer de 100m
-> Hauteur moyenne du bati dans un buffer de 100m
-> NDVI dans un buffer de 100m
-> Surface hydro dans un buffer de 250m
-> Altitude MNT au point près

Objectif pour semaine prochaine:
A l'heure actuelle:
- Récupération **de l'ensemble** des stations ~~sur un seul relevé~~ ayant émises au moins une fois sur l'intervalle de temps
-> Sélection de ~~100~~**400** stations au hasard
-> LCZ la plus importante dans un buffer de 100m, **250m, 500m, et ponctuel**
-> Part de bati dans un buffer de 100m, **250m et 500m**
-> Hauteur moyenne du bati dans un buffer de 100m, **250m et 500m**
-> NDVI dans un buffer de 100m, **250m et 500m**
-> Surface hydro dans un buffer de 250m **et 500m + distance au point d'eau le plus proche**
-> Altitude MNT au point près **+ écart avec l'altitude indiquée pour la station**
**-> Nombre de NA en tout et Nombre de NA la nuit**
**->SVF moyen dans un buffer de 100m, 250m et 500m**

## 26/04
Téléchargement du SVF
![image](https://hackmd.io/_uploads/BkZK8VYWR.png)

-> Je l'envoie sur humanum (12h de chargement)
Réflexion sur le titre du mémoire
Intitulé du stage: Structure de l’îlot de chaleur urbain parisien, à partir de données crowdsourcées
Idée: Les données participatives pour mieux connaitre le risque d'ICU, le cas de la région Parisienne
Mieux connaitre le risque d'ICU en IDF grâce aux données participatives
Risque d'ICU en région Parisienne, spatialisation et enjeux


!! Problème avec le SVF il fait une taille trop réduite!
J'ai commencé à retravailler le code de qualification des capteurs.


## Bilan semaine 7
J'ai fait pas mal de biblio en attendant le RDV de jeudi
Il faut que je veille à ce que les présentations contiennent bien toutes les infos nécéssaires
Prochains objectifs: 
- Se replonger dans la qualification des capteurs
- Concernant l'étude de la base de données
    - Fusionner score médiane et score voisin
    - Fusionner score gradient et LCZ/distance
    - Revoir gradient: quelle fonction est la meilleure?
    - Faire un gradient dans tous les sens
    - Dans les scores, ne garder que la nuit
    - 


Je vais m'intérésser à:
- Rayonnement théorique (sans nuage): il faudrait obtenir ce rayonnement théorique dans un buffer de 20M mais avant cela se demander comment ça fonctionne.
- Je devrais penser à voir comment classifier les différentes courbes à partir du levée du soleil
## 29/04
Bilan semaine précédente
J'ai passé la journée à retravailler le code et normalement tout est ok, il fonctionne bien. En tout cas j'ai testé avec 5 stations et ça marche! Test sur 100 stations dans la nuit de lundi à mardi en espérant que R ne crash pas!
![image](https://hackmd.io/_uploads/rkO7TOTbR.png)
Soucis en vrac: 
- SVF sur une trop petite zone
- Toujours sur ma semaine de juillet
- Code peut être pas optimisé (pour 100 stations ça devrait mettre 3/4h, alors quand il faudra faire tourner pour 10000...) + Risque de crash important

## 30/04
Premier échantillon de 100 a bien tourné, j'en ai lancé un second dans la foulée
J'ai rapidement regardé la matrice de corrélation. Il y a divers enseignements à tirer
- SVF assez peu corrélé (le mieux étant pour le buffer 250)
- Le reste est logiquement assez corrélé
- Varier les buffers est intéressant.
- Le buffer 100 est révélateur d'une situation très locale mais souvent le 250 a une + forte corrélation et serait utilisée dans le stepwise
- Il me manque deux éléments dans ma qualification: rayonnement et sol

![image](https://hackmd.io/_uploads/Sk3y-cTbC.png)

J'ai travaillé sur le rayonnement: Je vais essayer d'obtenir l'ombrage à deux moments de la journée (10h et 16h)avec pour data la hauteur du bâti (pas de végétation ou d'altitude...). J'envisage ensuite de calculer la moyenne de l'ombrage dans un buffer de 20m autour de la station

## 02/04
Concernant le rayonnement: j'ai 3 data:
- Orientation probable de la station
- Ensoleillement en milieu de matinée
- Ensoleillement en milieu d'après-midi

L'orientation est celle du mur extérieur le plus proche de la station. Impossible d'être certain à 100% comme pour l'altitude MNT.
L'ensoleillement est basé sur un angle de 40°. L'azimuth est de 90 pour le matin et 240 pour l'après-midi. C'est une moyenne de l'ensoleillement pour les parois proches. Ce coup ci la donnée est basée sur l'altitude des batiments + le MNT. Donc l'ensoleillement dépend de l'orientation et du bâti alentour (et de l'altitude parfois)

A l'heure actuelle, j'ai 3 échantillon de 400 stations et 4 de 100.
J'ai eu le temps égalemnt d'analyser la matrice de corrélation

## 03/04
Réfléxions sur la manière de revoir mes scores
Préparation de la réunion
Réunion

## Bilan semaine 8
J'ai passé pas mal de temps à revoir le code de qualification des capteurs. Quelques remarques:
- LCZ n'est pas une valeur quantitative, plutot utiliser des boxplot
- Concernant les surfaces(sols/toits): tester BD ortho pour tenter de relever des couleurs. En fonction des bandes présentes voir si possible de faire une classification?
- Distinguer toits et sols avec BD topo. Pas mal de stations sont sans doutes + sensibles à l'ocsol qu'aux toits
- Voir si il existe une BD permettant d'avoir une idée de la structure du bâti(murs/couleurs?). Si pas possible, voir si avec l'âge des bâtiments?
- Essayer de voir pour déterminer si telle ou telle rue est canyon
- Actuellement sur une configuration de qualif stations par stations >>> Il faudrait voir pour passer sur une maille de 50m/50m

Concernant le gradient par LCZ:
- Au niveau de la distance, passer sur un axe conique
- Pour la courbe exponentielle >>> Passer sur du linéaire pour faire plus simple

Maintenant que j'ai JJA19 voir pour étudier les nuits sans gradient

## Semaine 9
Programme:
Lundi: bilan semaine précédente/Regarder BD Ortho/BD topo/ autres sources? Revoir code pour passer sur un maillage 50m/50m
Mardi: Graph hauteur bati/LCZ pour voir une corrélation? Bâtir les axes coniques pour étudier le gradient avec LCZ. Revoir et adapter le code pour qu'il fonctionne de cette manière.
Vendredi: Faire fonctionner gradient LCZ, analyse + présentation. Voir pour les variables manquantes semaine précédente: murs/sols/toits: créer un code pouvant utiliser les éléments trouvés lundi


## 06/05
Bilan semaine précédente
Programme semaine
J'ai téléchargé la BD ortho de Paris pour voir ce qu'on peut en faire: maillage 20cm c'est intéressant mais lourd. Il y a trois bandes (RVB), de quoi faire une classification? Sinon il peut être envisageable d'obtenir une sorte de signature spectrale/couleur dominante à la rigueur.
Pour les bâtiments chaque polygone peut être utilisé comme emprise pour déterminer la couleur du toit.
Pour les routes, il peut être envisagé de faire des buffers par tronçons et d'étudier par rapport à cela.
Avec ces deux éléments cela permettra d'obtenir une information intéressanté sur les surfaces horizontales.

Pour les parois: soit l'age des batiments bien que sommaire, sinon Référentiel National des Bâtiments?
## 07/05
Concernant le RNB : Plein d'infos intéressantes!

- infos relatives à la hauteur du bâti (hauteur moyenne et max)
- infos relatives aux murs. Pas de couleur à priori mais des matériaux. Voir la corrélation. Ex: pierre taillée = supposément de couleur claire
- infos relatives aux toits: catégorisation d'une très grande majorité des toits:
![image](https://hackmd.io/_uploads/HyFe6FvfA.png)
-> Pour cette variable, possible de déterminer la valeur la plus présente!
- Age du bâti

Concernant le soucis d'absence de corrélation du SVF avec les autres variables
![image](https://hackmd.io/_uploads/HygeGqwzA.png)
=> Le SVF tire sans doute pas mal vers le haut. Il faudrait envisager de retirer du raster les bâtiments (toits avec SVF =1). Je vais résoudre ce soucis pour la maille de 50m/50m

J'ai ensuite procédé au découpage de cones intéressants:
![image](https://hackmd.io/_uploads/Bk3y9jDzA.png)


4 cônes différents
Cône 1: Très rural, et ce rapidement après Paris. Zones végétalisées. Hypothèse: baisse du gradient rapide plus peu de variations. Peut être une augmentation à la fin car centre urbain important (Creil/Nogent s/ Oise)
Cône 3: Rurale moins rapidement que le cône 1 mais ensuite altitude et végétalisation importante. Peu de stations/peu d'immeubles à partir de 15km. Hypothèse: Chute du gradient un peu plus loin que le cône 1. Potentiel soucis avec l'absence de stations après 25km
Cône 4: Seine aval. Urbanisation forte le long de la Seine. Fragmentation importante car zone végétalisée sans urbain qui prend une large place à 15/20km. Hypothèse: Chute à environ 15km puis remontée car zones urbaines agglomérées autour d'un méandre de la Seine
Cône 2: Seine amont: Urbanisation qui décroche assez rapidement mais maintien de LCZ 2/4 jusqu'à assez loin. Hypothèse: Peut être le cône pour lequel le gradient ressemblera le plus à celui de toutes les stations cumulées

# 10/05
Voici les cones (en attendant une petite mise en page bien nécéssaire):
![image](https://hackmd.io/_uploads/By4YAooMA.png)

J'ai retapé le code pour que le gradient fonctionne par cone
- Comme prévu manque de stations
- Les parametres sont à ajuster
![image](https://hackmd.io/_uploads/B1VPAojfC.png)

J'ai également trouvé une nuit sans gradient: 18/08 (on en avait parlé.) Sur le rayon de 50km écart max de 2,5°C.
J'ai réfléchi à la manière de calculer l'écart (écart global? écart dans un large buffer? selon une maille?)

# Bilan semaine 9
L'idée de faire des mailles de 50 par 50 c'est vraiment intéressant. Par contre ça met du temps, ça plante souvent. Normalement fin de semaine prochaine ça devrait être bon. Ce qui est prévu:
- LCZ
- population
- NDVI moyen
- SVF moyen
- SVF moyen sans le bati
- surface majoritaire toits
- surface sol
- Proximité hydro
- % bâto
- Hauteur moyenne bâti.

En + de cela, je peux tenter d'obtenir par rue:
- Le NDVI moyen
- Le SVF moyen

Concernant le travail avec JJA19:
- Pour le gradient par LCZ/orientation: J'ai des orientations, j'ai fait des tests, ça marche pas bien bien (pas assez de stations/positionnement pas pertinent?)
- Pour la nuit sans gradient, j'ai la date. Faut que je fasse des essais pour voir quelle méthode est la meilleure


Programme de la semaine:
Lundi: Bilan de la semaine dernière + Faut que j'essaie de terminer le travail avec JJA19

Mardi: terminer travail avec JJA19 si possible + bosser SVF par maille et NDVI par maille + Part matériaux toits et réfléchir à comment faire pour le sol

Mercredi: terminer sol par maille si c'est pas fini + voir LCZ/hauteur moyenne/% bati (normalement les 3 ça devrait aller j'ai juste à reprendre l'ancien code) + proximité hydro

Jeudi: NDVI et SVF par rue. Pour ces éléments c'est expérimental donc il va falloir que je prenne le temps de voir ce que je vais en faire!

Vendredi: finir tout + préparer présentation et réunion à 14h

# 13/05
J'ai fait le bilan
J'ai avancé concernant les orientations avec JJA19 pour le 25/07/19 et j'ai des résultats
J'ai également eu le temps d'avancer sur les nuits sans gradient! Cependant, mes résultats sont pas terribles. Dans la mesure où mon fichier a été trié et que les valeurs s'écartant de + de 4 fois de la mediane+-mad*3, je n'ai plus beaucoup/pas de valeurs à exclure...
J'ai cependant pu travailler sur les nuits sans gradients et c'est intéressant. Je pourrai aller + loin en donnant un score pour chaque heure en fonction de combien la température s'écarte de la médiane

J'ai commencé à bosser avec le SVF. Qgis pour visualiser c'est bien, mais dès que l'emprise du projet est un peu grande, c'est juste du bricolage

# 14/05
J'ai travaillé avec le SVF, effectué la moyenne avec et sans bâti.
J'ai également fait le NDVI, je n'ai pas réussi à faire sans le bâti, problème de projection du NDVI sur R.
J'ai téléchargé la BDD des batiments de France (100Go le geopckg), forcément ça peine un peu..

# 15/05
J'ai obtenu le matériau majoritaire du toit pour chaque maille
![image](https://hackmd.io/_uploads/Byon36mmC.png)

+hauteur et part bati
+bossé sur proximité hydro
# 16/05
NDVI et SVF par rue, ça a pris du temps!

# 17/05
Préparation présentation + présentation 14h

# Bilan semaine 10
Les mailles c'est très très intéressant! Un peu tendance à s'éparpiller au niveau du nombre de variables, mais les résultats sont intéressants. Il va falloir que je recentre mon travail sur les stations/regression multiple.

# Semaine 11

Bilan semaine précédente
J'ai rapidement obtenu la temp min, la temp max, et l'écart entre les deux.
![image](https://hackmd.io/_uploads/HJRF5ihQR.png)
Suite à ça j'ai identifié quelques dates potentiellement intéressantes pour une date sans gradient
J'ai fait la carte rapidement en plot à chaque fois, j'ai enregistré les + intéressantes, à voir ensuite

La carto c'est intéressant, on distingue bien une nuit avec et sans gradient, mais en ce qui concerne les nuances, les zones avec passage froids, etc. c'est plus compliqué.

J'ai édité toutes les courbes (x=distance à paris/y=temp) et exporté en PDF
![image](https://hackmd.io/_uploads/rysBosnQA.png)

J'ai calculé la pente pour obtenir les courbes de tendance les plus plates
![image](https://hackmd.io/_uploads/BkgtX2hQ0.png)
            JH       slope
        <char>       <num>
 1: 1566082800 -0.02252569
 2: 1566079200 -0.02253157
 3: 1566086400 -0.02413029
 4: 1565827200 -0.02617057
 5: 1563487200 -0.02748923
 6: 1566090000 -0.02762485
 7: 1563490800 -0.02935925
 8: 1565830800 -0.03003946
 9: 1566100800 -0.03133987
10: 1566093600 -0.03163171

![image](https://hackmd.io/_uploads/ry1jrhhXR.png)
![image](https://hackmd.io/_uploads/HkThB22Q0.png)
![image](https://hackmd.io/_uploads/SJtHInh70.png)

2 jours sans gradient sélectionnés:
la nuit du 19 au 20/06
-> Le 19 peu d'écart de temp (min/max), fin de journée pluie abondante (qq mm), forte couverture nuageuse et vent à 20km/h
    
![image](https://hackmd.io/_uploads/BJIzan37C.png)
![image](https://hackmd.io/_uploads/H1amph3XC.png)

    
la nuit du 17 au 18 aout
-> journée du 17 ultra pluvieuse, prolongement jusqu'au lendemain, pluie la nuit. vent autour des 20km/h partout avec forte couverture nuageuse
    
![image](https://hackmd.io/_uploads/H1GB1T3QR.png)
![image](https://hackmd.io/_uploads/SJAtJph70.png)

Je ne vais finalement garder que la nuit du 18/08
Que je vais comparer avec la nuit du 25 au 26/07
    
Si Egradient fort et Eplat fort => station qui se démarque des autres dans tous les cas. Soit ce n'est pas bon signe, soit la configuration locale fait que la station bénéficie de conditions très spécifiques (comme en intérieur, ce qui revient à ne pas être bon signe)
Si Egradient faible et Eplat fort => vraiment pas bon signe...
Si Egradient fort et Eplat faible => station qui se démarque par rapport aux voisines mais uniquement en configuration ICU
Si Egradient faible et Eplat faible => station qui se comporte bien par rapport à son environnement et qui ne se démarque pas des autres

    
    

# Semaine 12

Petit bilan de la semaine dernière, retour sur le premier modèle.
J'ai intégré aux stations d'autres variables:
- nature des toits
- proximité hydro
- LCZ
- altitude
J'ai intégré à la grille:
- nature des toits

Pour la proximité hydro j'ai procédé à une zone tampon de x distance autour de y éléments
Chaque pixel reçoit un score allant de 0 à 6 en fonction de sa présence près des surfaces hydro et en fonction de l'importance des surfaces hydro (la Seine par exemple a un bénéfice qui s'étend + qu'un étang par exemple)
    
![image](https://hackmd.io/_uploads/S1VK7VfEC.png)

Journée à Paris le mercredi
    
Intégration des autres variables
    
# Semaine 13
    
![image](https://hackmd.io/_uploads/BkaPxb640.png)
Valeur des LCZ en fonction 
    
    