Skip to content

Latest commit

 

History

History
208 lines (124 loc) · 6.94 KB

moulinette.md

File metadata and controls

208 lines (124 loc) · 6.94 KB

Le simulateur EnvErgo (aka la Moulinette)

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.

Description sommaire

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 ».

Composants individuels

Pour fonctionner, la Moulinette s'appuie sur un certains nombre de composants.

Réglementation

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.

Critère

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).

Évaluateur

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.

Périmètre

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é.

Config

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 ».

Carte

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.)

Zone

Une carte est simplement une collection de polygones appelés « zones ».

Fonctionnement global

Le calcul de la Moulinette s'effectue en plusieurs étapes :

  1. on vérifie si la Moulinette est disponible pour le département du projet ;
  2. on récupère la liste des périmètres contenant le projet ;
  3. on récupère la liste des critères pour lesquels le projet est dans la carte d'activation ;
  4. on récupère la liste des zones (zh, zi, etc.) dans lesquelles se trouve le projet ;
  5. 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).

Données complémentaires

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.

Données optionnelles

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.

Calcul du résultat critère

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.

Affichage des résultats

Chaque combinaison de critère / code de résultat unique doit être associée à un template qui sera utilisé lors de l'affichage.

Exemple : https://github.com/MTES-MCT/envergo/blob/2c92d89bc56f2af29f9a6fe3f6e2d10d3e326165/envergo/templates/moulinette/loi_sur_leau/zone_humide_action_requise_proche.html

Cartes

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.