Le simulateur (affectueusement dénommé en interne « la Moulinette ») est un composant essentiel d'EnvErgo.
Cette page en dresse une rapide présentation technique. Elle est a destination des personnes qui veulent acquérir une compréhension technique de son fonctionnement.
Moulinette, gentille moulinette…
La moulinette est un algorithme qui prend en entrée les paramètres d'un projet d'urbanisation (coordonnées du projet et différentes surfaces) et retourne, pour diverses réglementations, si le projet peut être soumis ou non.
Exemples de réglementations :
- Loi sur l'eau
- Natura 2000
- Évaluation environnementale
Chaque réglementation est évaluée sur plusieurs critères.
Exemples de critères pour la réglementation « Loi sur l'eau » :
- Zone humide
- Zone inondable
- Ruissellement
En fonction des données du projet, la Moulinette peut assigner différentes valeurs au test sur un critère. Le résultat d'une réglementation dépend des différentes valeurs pour tous les critères de cette évaluation.
Par exemple, si un des critères de la réglementation « Loi sur l'eau » est « soumis », alors le résultat de l'évaluation pour cette réglementation sera « soumis ».
Dans certains cas, le résultat d'une réglementation peut dépendre d'une autre réglementation.
Par exemple, la réglementation « Natura 2000 » dispose d'un critère « IOTA » qui sera « soumis » si la réglementation « Loi sur l'eau » est « soumis ».
Pour fonctionner, la Moulinette s'appuie sur un certains nombre de composants.
Une Réglementation est le plus haut niveau d'information que l'on affiche aux utilisateurs de la moulinette.
Chaque réglementation configurée est évaluée et reçoit un code de résultat unique, ainsi qu'un texte pédagogique associé.
Ainsi, après une simulation, un porteur de projet pourra recevoir une information :
- Loi sur l'eau -> Action requise
- liste des actions requises dans le cadre de l'instruction du dossier Loi sur l'eau.
L'évaluation au titre d'une réglementation nécessite d'évaluer les différents critères qui la composent.
Ainsi, l'évaluation au titre de la réglementation environnementale nécessitent d'évaluer les critères :
- Emprise
- Surface plancher
- Terrain d'assiette
- Camping
- Aire de stationnement
- etc.
Un critère est la combinaison d'une carte d'activation (la zone géographique où le critère doit être évalué) et un évaluateur (cf. ci-dessous).
Un évaluateur est le code effectif qui réalise le calcul du résultat d'un critère.
C'est une classe Python qui effectue un calcul sur les données fournies par le formulaire d'évaluation.
Exemple de calcul :
Si le projet est dans une zone humide référencée ET la surface finale du projet est supérieure à 1000 m² ALORS le résultat du critère est SOUMIS.
Un périmètre est une entité administrative distincte délimitée par une zone géographique distincte.
Exemple de périmètre : SAGE Bas Léon
Un périmètre concerne une réglementation, est associé à une carte et permet d'indiquer des informations de contact distinctes.
Certaines réglementations fonctionnent par périmètres, d'autres non.
Si la réglementation fonctionne par périmètre (e.g SAGE), alors elle n'est évaluée que dans le cas ou le projet se trouve au sein d'un périmètre donné.
Certains paramètres de configuration de l'évaluateur sont configurés à l'échelle du département. Pour ces éléments, on utilise les objets « Moulinette Config ».
Dans l'admin, une carte est une zone géographique associée à un nom.
Une carte peut être uniquement une zone géographique (par exemple, pour configurer un périmètre) ou une zone typée (e.g une zone humide, une zh potentielle, etc.)
Une carte est simplement une collection de polygones appelés « zones ».
Le calcul de la Moulinette s'effectue en plusieurs étapes :
- on vérifie si la Moulinette est disponible pour le département du projet ;
- on récupère la liste des périmètres contenant le projet ;
- on récupère la liste des critères pour lesquels le projet est dans la carte d'activation ;
- on récupère la liste des zones (zh, zi, etc.) dans lesquelles se trouve le projet ;
- on calcule le résultat de l'évaluation pour chaque réglementation en fonction des résultats des critères qui la composent.
Il faut donc noter qu'il y a deux étapes d'un point de vue géographique :
- d'abord on vérifie quels critères on va devoir évaluer (e.g faut-il calculer le critère LSE > ZH à cet emplacement ?)
- ensuite on vérifie l'existence de zones humides, zones inondables, etc. pour réaliser l'évaluation).
En fonction des données du projet, la Moulinette peut avoir besoin de données complémentaires pour réaliser une évaluation. Ces données seront récupérées via des formulaires injectés dans la page présentée à l'utilisateur.
Dans le simulateur, les admins peuvent activer des critères supplémentaires qui resteront invisibles et ne seront pas pris en compte par les utilisateurs.
En revanche, ces critères apparaissent dans les avis réglementaires.
Les évaluateurs fonctionnent de la façon suivante :
- récupération des données nécessaires au calcul ;
- génération d'un code de résultat unique, e.g
action_requise_dans_doute
; - conversion en code d'affichage de résultat, e.g
action_requise
;
## Résultat d'évaluation
On obtient le résultat d'une réglementation en appliquant une règle de priorité aux résultats des critères qui la composent.
Par exemple, si une règlementation à un critère « soumis » et deux critères « action requise », le résultat sera « soumis ».
Si une réglementation à un critère « action requise » et un critère « non soumis », le résultat sera « action requise ».
Etc.
Chaque combinaison de critère / code de résultat unique doit être associée à un template qui sera utilisé lors de l'affichage.
Chaque critère peut définir une méthode _get_map
qui retourne un objet Map
.
Note : il s'agit d'une classe différente des cartes utilisées pour stocker les données géographique.
Map
est une classe qui contient quelques données qui seront converties en
json, injectées dans le template, et passées à un script de configuration Leaflet.