raster-dl/doc/docs/technical.md
Guillaume RYCKELYNCK 68d9b2dd53 version 20230116
2023-01-16 15:12:03 +01:00

2.3 KiB

Choix techniques:

  • Base de données: Geopackage
  • Serveur: Python + Eel + Geopandas + Plotly + Folium + ...
  • Interface utilisateur: HTML + CSS + JS (Eel et Bootstrap)

Le choix de GeoPackage

Il était initialement prévu d'utiliser un ensemble de fichiers JSON ou une BDD SQLite avec la pré-génération de l'ensemble des appartenances de chaque dalle en fonction des entités administratives, sur le modèle de https://sig.cc-saulnois.fr/ge_ortho.php.
Les premiers tests ont rapidement montré les limites de cette approche, notamment étant donné le volume de données et le nombre de possibilités de croisement entre ces couches d'information. L'utilisation des fonctions spatiales de GeoPackage pour croiser à la volée la couche des emprises administratives avec celle des dalles semblait plus intéressante.

Le choix du langage Python

Le choix de Python et des bibliothèques mobilisées a notamment été motivé par la volonté:

  • De monter en compétence sur des domaines centraux de l'analyse de données
  • D'engager une démarche exploratoire autour des bibliothèqes "pandas" et "geopandas" d'une part
  • D'utiliser la bibliothèque "eel" sur un projet concrét

Les bibliothèques Python de traitement et représentation des données

Différentes bibliothèques Python de traitement et représentation de données sont mobilisées dans ce projet.
On peut citer notamment:

  • "pandas" et "geopandas": son usage a été encouragé par l'absence de bibliothèque simple exploitant les capacités spatiales des GeoPackage via le langage SQL, le recours à PostGreSQL/PostGIS étant exclu ici.
  • "plotly" pour afficher les résultats sous forme d'image
  • "folium" (découvert au court du projet) pour générer une carte leaflet à la volée

La bibliothèque Python "eel"

La bibliothèque "eel" (cf. https://github.com/python-eel/Eel) permet initialement de générer des applications bureautiques en python utilisant le langage HTML (+ CSS + JS) pour construire l'interface utilisateur. Les tests réalisés ont montré qu'il est ainsi possible de construire une application unique avec un double portage: desktop + web.
Le cas présent, même s'il est limité a permis une première approche de cette solution.

Par ailleurs la partie web (UI) a été réalisée en s'appuyant sur Bootstrap et du javascript natif.