# Exercice 2 - Effectuer un géoscoring avec refFunctions
Dans cet exercice, nous allons utiliser le plugin QGIS refFunctions pour effectuer un géoscoring permettant de déterminer la zone optimale pour l'implantation d'un parc éolien en Bretagne.
Utiliser cet outil pour réaliser un géoscoring n'est pas forcément recommandé car les temps de certains traitements sont vraiment très longs.
Vous pouvez tenter de réaliser cet exercice en autonomie ou de suivre les étapes de ce document.
---
## Quelques rappels de refFunctions
Le plugin QGIS refFunctions ajoute des fonctions utilisateur personnalisées à la calculatrice de champs de QGIS. Ces fonctions permettent d'effectuer des jointures attributaires et spatiales entre deux couches, de transformer des entités polygonales en entités ponctuelles et de calculer des longueurs et des surfaces.
Documentation du plugin : https://github.com/enricofer/refFunctions
**CheatSheet de refFunctions :**

Cette cheatsheet regroupe toutes les fonctions du plugin refFunctions.
---
## Les données
Dans cet exercice, nous allons utiliser des données de limites communales, de population, des éoliennes existantes, de densité de puissance du vent, du Schéma Régional Eolien, des parcs naturels régionaux et du réseau électrique, provenant de plusieurs sources (IGN, INSEE, DREAL Bretagne, EED, ENEDIS, INPN). Vous pouvez télécharger les données [ici](https://drive.google.com/drive/folders/1ygjsZ2HtLBpVttx9E8_BH7Y1S4fsXPtH)
### Détail des données
**IGN :**
* **Communes** : Couche des limites administratives des communes de Bretagne
**INSEE :**
* **Population_1km** : Population de la Bretagne à l'échelle d'un carreau d'1 km issue de Filosofi 2015
**DREAL Bretagne :**
* **SRE** : Couche du Schéma Régional Eolien de Bretagne
* **Eoliennes** : Localisation des éoliennes existantes en Bretagne
**EED (Société privée) :**
* **Densite_puissance** : Densité de puissance de vent (en Watt) de la Bretagne à l'échelle d'un carreau de 1 km
**ENEDIS :**
* **Reseau_souterrain_HTA** : Réseau électrique souterrain haute tension de Bretagne.
**INPN :**
* **PNR** : Couche des Parcs Naturels Régionaux de Bretagne.
---
## Les critères d'implantation
* Se trouver dans une zone avec un potentiel éolien intéressant (Gridcode >350)
* Se trouver dans une zone non-peuplée
* Se trouver en dehors d'un PNR
* Se trouver dans une zone du Schéma Régional Éolien (SRE)
* Se trouver à plus de 3 km d’un parc éolien existant
* Se trouver dans une zone traversée par une ligne électrique souterraine HTA
---
## Les prérequis
* Ouvrir QGIS 3.16 (dernière version stable). Vous pouvez télécharger QGIS via ce [lien](https://www.qgis.org/fr/site/forusers/download.html)
* Installer le plugin refFunctions : **Extensions > Installer/gérer les extensions**

De nouvelles fonctionnalités sont apparues dans la calculatrice de champs de QGIS.

Voila! Vous êtes maintenant prêt pour commencer l'exercice.
---
## Importation des données dans QGIS
Récupérez les données, si ce n'est pas déjà fait, en cliquant sur le [lien](https://drive.google.com/drive/folders/1ygjsZ2HtLBpVttx9E8_BH7Y1S4fsXPtH).
Pour importer les données dans QGIS, plusieurs options s'offrent à vous :
Vous pouvez sélectionner les fichiers **.shp** du répertoire **Données - Géoscoring** que vous venez de télécharger et les faire glisser dans la fenêtre de QGIS.
Ou alors, importer les couches shapefiles une par une en se rendant dans le gestionnaire des sources de données : **Couche > Ajouter une couche > Ajouter une couche vecteur...** ou en utilisant le raccourci clavier **Ctrl+Maj+V**.


---
## Le critère de densité de puissance de vent
Dans un premier temps, rendez-vous dans la calculatrice de champs de la couche **Densite_puissance**, ce sera notre grille de référence pour la création du géoscoring. Nous allons créer un nouveau champ et y calculer le score de densité de puissance à l'aide de la fonction conditionnelle **Case when ... then ... else ... end**. Il faut supprimer toutes les entités dont le **Gridcode** est inférieur à 350 en y associant la valeur **NULL**. Pour les valeurs supérieures à 350, il faut observer l'histogramme de distribution afin de déterminer les différents jalons pour l'attribution du score.
Pour se faire nous allons directement supprimer dans le champ **Gridcode** des valeurs inférieures à 350.
```
case when "gridcode" < 350 then NULL else "gridcode" end
```
Voici ce que vous devez obtenir dans votre table attibutaire :

Il faut ensuite regarder l'histogramme de distribution des valeurs.

La discrétisation utilisée est le **quantile**, nous suivrons cette discrétisation tout au long de l'exercice, mais vous pouvez en utiliser une autre si vous le souhaitez.
Il faut maintenant créer un nouveau champ de type **nombre entier** et utiliser l'expression suivante :
```
case when "gridcode" <= 364 then 2
when "gridcode" <= 379 then 4
when "gridcode" <= 398 then 6
when "gridcode" <= 440 then 8
when "gridcode" <= 813 then 10
else NULL
end
```
Vous devez obtenir ceci :

Carte du score de densité de puissance de vent :

Voila, vous avez maintenant votre score de densité de puissance du vent.
---
## Le critère de population
Toujours sur la couche **Densite_puissance**, dans la calculatrice de champs, nous allons utiliser la première fonction de **refFunctions** **geomintersects**. Cette fonction permet de récupérer les informations d'une couche cible intersectant la couche source, comme une jointure spatiale. Asscociée à une fonction conditionnelle, nous allons pouvoir supprimer les entités de la couche **Densite_puissance** dont les valeurs du champ **"ind"** de la couche **Population_1km** sont supérieures à 10.
```
case when geomintersects('Population_1km','ind') > 10 then NULL
when geomintersects('Population_1km','ind') >= 8 then 2
when geomintersects('Population_1km','ind') >= 6 then 4
when geomintersects('Population_1km','ind') >= 4 then 6
when geomintersects('Population_1km','ind') >= 2 then 8
else 10
end
```
Pour scorer la population, il faut ajouter un score de plus en plus élevé lorsque la population par carreau diminue.
Voici ce que vous devez obtenir :

Carte de score de population :

Bravo, vous avez maintenant votre score de population dans votre grille de référence.
---
## Le critère de distance à un PNR
Pour le critère de distance à un Parc Naturel Régional, nous allons supprimer les entités de la couche **Densite_puissance** qui intersectent celles de la couche **PNR** avec la fonction **geomintersects**. Il faudra ensuite, attribuer un score en fonction de la distance aux différents PNR. Pour cela nous allons utiliser la fonction **geomdistance** qui a la même utilité que le buffer sans la création d'une nouvelle couche. Il va rendre un résultat **NULL** lorsque l'entité sera une distance inférieure à celle donnée et **-1**, pour celles à l'extérieur. Nous avons choisi de partir sur une définition de score tous les **5km**. Ces valeurs sont arbitraires, vous pouvez donc en utiliser d'autres si vous le souhaitez.
```
case when geomintersects('PNR','$geometry') is not NULL then NULL
when geomdistance('PNR','$geometry',5000) is NULL then 2
when geomdistance('PNR','$geometry',10000) is NULL then 4
when geomdistance('PNR','$geometry',15000) is NULL then 6
when geomdistance('PNR','$geometry',20000) is NULL then 8
else 10
end
```
Voici ce que vous devez obtenir :

Carte de score PNR :

Maintenant que vous avez terminé de scorer le critère de distance à un PNR nous allons nous attaquer au critère de distance au SRE.
---
## Le critère de présence du Schéma Régional Eolien
La méthode pour réaliser le scoring de présence du Schéma Régional Eolien va consister à utiliser la couche **SRE** avec la fonction **geomintersects** pour supprimer les entités de notre grille de référence se trouvant en dehors de ce schéma. Les entités présentes à l'intérieur de ce schéma auront la note de **10**.
```
case when geomintersects('SRE','$geometry') NULL then NULL
else 10
end
```
Voici le résultat obtenu :

Carte de score du SRE :

Voila, vous avez attribué le score de présence dans le SRE.
---
## Le score de distance aux éoliennes existantes
Pour attribuer le critère de distance à une éolienne existante, nous allons utiliser la fonction **geomdistance** et supprimer les entités de la couche **Densite_puissance** se trouvant à moins de **3km** d'une éolienne de la couche **Eoliennes**. Il faut ensuite attribuer un score de plus en plus élevé lorsque l'on s'éloigne d'une éolienne.
```
case when geomdistance('Eoliennes','$geometry',3000) is NULL then NULL
when geomdistance('Eoliennes','$geometry',6000) is NULL then 2
when geomdistance('Eoliennes','$geometry',9000) is NULL then 4
when geomdistance('Eoliennes','$geometry',12000) is NULL then 6
when geomdistance('Eoliennes','$geometry',15000) is NULL then 8
else 10
end
```
Voici ce que vous devez obtenir :

Carte de score des éoliennes :

Bravo ! Maintenant que vous avez votre score de distance aux éoliennes existantes, vous pouvez vous atteler au dernier critère qui est la présence de lignes électriques souterraines HTA.
---
## Le critère de présence de lignes électriques souterraines HTA
La méthode pour réaliser le scoring de présence de lignes électriques souterraines HTA va être la même que pour celle du Schéma Régional Eolien. Nous allons utiliser la couche **Reseau_souterrain_HTA** avec la fonction **geomintersects** pour supprimer les entités de notre grille de référence se trouvant en dehors de ce schéma. Les entités présentes à l'intérieur de ce schéma auront la note de **10**.
```
case when geomintersects('Reseau_souterrain_HTA','$geometry') is not NULL then NULL
else 10
end
```
Voici le résultat obtenu :

Carte de score des lignes électriques :

Bien, vous avez terminé de déterminer les différents critères d'implantation d'un parc éolien. Il faut maintenant additionner les critères pour obtenir un score final.
---
## Le scoring final
Afin de réaliser le scoring final, il suffit de se rendre dans la calculatrice de champs de la couche **Densite_puissance** et d'additionner tous les critères avec la formule suivante :
```
("score_vent" + "score_pop" + "score_pnr" + "score_sre" + "score_eol" + "score_elec") /6
```
Voici le résultat obtenu dans la table attributaire :

Le scoring final détermine les zones optimales à l'implantaion d'un parc éolien en partant de **NULL**, représentant les zones où l'implantation est interdite, à **10**, représentant les zones optimales.
Résultat du géoscoring :


Félicitation, vous avez terminé le géoscoring permettant de trouver l'emplacement idéal à l'implantation d'un parc éolien. Vous pouvez maintenant le cartographier.
