Nous allons réaliser une application pour accéder aux données des stations-service françaises. Pour ce faire, nous allons utiliser les données libres fournies par le site prix-carburants.gouv.fr.
Durant les TD
, nous allons :
XML
à notre dispositionDTD
pour ce fichier XML
ainsi qu'un schéma XML
pour ces fichiersVous allez télécharger un fichier de données sur la page proposant les données publiques des stations-service françaises. Vous pouvez prendre les données de l'année courante. Notez que nous reviendrons sur cette page pour récupérer les données relatives à des dates différentes pour observer l'évolution des prix. Placez les fichiers de données dans le répertoire data
du projet.
Éditez le fichier XML que vous devez de télécharger. Regardez la structure des données présentes dans ce fichier. Essayez de décrire de façon synthétique et précise le format de ce fichier. Indiquez le nom et le type (entier, chaîne de caractères, flottant, heure, etc.) de chaque donnée qu'il contient. N'hésitez pas à regarder les informations données sur la page sur laquelle vous avez téléchargé les données.
Afin de faire fonctionner ces validations, vous devez compléter les deux fichiers validation/carburants.dtd
et validation/carburants.xsd
. Pour cela, listez les données présentes dans ces fichiers. Vous devez donner un nom et le domaine de chaque information présente dans le fichier. Vous devez également décrire par écrit la structure du fichier ainsi que les contraintes qui semblent être vérifiées. À partir de la description que vous venez de faire des fichiers, écrivez un DTD
et vérifiez, en exécutant la validation, que les fichiers du site prix-carburants.gouv.fr
vérifient votre DTD
. Essayez avec plusieurs fichiers de données et corrigez le DTD
si cela est nécessaire. Réalisez ensuite la même opération en écrivant cette fois-ci un schéma XML
. Je vous conseille de créer, à partir d'un des fichiers de données, un fichier XML
plus petit en ne conservant qu'un petit nombre de points de vente pour pouvoir déboguer plus facilement le DTD
et le schéma.
Pour valider un fichier, il suffit d'exécuter une des commandes suivantes en étant à la racine du projet (en les complétant avec le nom du fichier XML
à valider) :
python3 -m validation DTD data/XXXX.xml
python3 -m validation XSD data/XXXX.xml
Proposez un modèle conceptuel en UML
avec pour objectif le stockage et la manipulation des données des fichiers du site prix-carburants.gouv.fr
. Traduisez ensuite ce modèle conceptuel en schéma relationnel puis écrivez le script SQL de création des tables. Créez une base de données carburants
et exécutez le script de création des tables en utilisant PhpMyAdmin
ou le client MySQL
dans un terminal. Le script de création de la base de données devra être placé dans le fichier alimentation/create_database.sql
, car il sera utilisé par le script Python d'alimentation de la base de données que vous allez écrire à l'étape suivante.
Écrivez un script Python qui extrait les données présentes dans les fichiers XML
puis qui insère les données extraites dans la base de données. Dans un premier temps, vous afficherez sur la console les données récupérées. Ensuite, vous modifierez ce script pour alimenter réellement les tables de la base de données MySQL
.
À la fin, ce script devra :
Une fois la base de données alimentée, vous allez pouvoir l'interroger. Écrivez les requêtes qui répondent aux questions suivantes :
Station de gonflage
?Station de gonflage
dans chaque département ?Gazole
dans la station d'identifiant 61500002
le 13 janvier 2021 ?Gazole
le 13 janvier 2021 si on considère uniquement les stations des Bouches-du-Rhône ?Gazole
dans chaque département le 13 janvier 2021 ?Gazole
le 13 janvier 2021 ?Station de gonflage
?Vous allez mettre en place une API Web permettant d'interroger la base de données. Pour cela, vous allez utiliser le framework Python Flask. Normalement, les modules nécessaires au framework Flask
sont installés sur votre ordinateur, car ils sont présents dans le fichier requirements.txt
. Si ce n'est pas le cas, vous pouvez les installer à l'aide de la commande pip3 install -r requirements.txt
.
Les URI de l'API :
/products
: liste des carburants possibles [test]. /services
: liste des services possibles [test]./departements/prices/[product]/[date]
: le prix moyen du [product]
à la date [date]
pour chaque département [test]./stations/prices/[product]/[date]/[lat]/[long]/[distance]/[limit]
: la description (et le prix) des [limit]
moins chères stations pour le carburant [product]
à la date [date]
qui se trouvent à une distance au plus [distance]
autour du point ([lat], [long])
[test]./stations/services/[service]/[date]/[lat]/[long]/[limit]
: la liste des [limit]
plus proches stations qui proposent le service [service]
à la date [date]
(la station ne doit pas être fermée) en considérant la distance au point ([lat], [long])
[test].Vous allez implémenter une page Web pour visualiser les données sur une carte. Cette page Web contiendra un script JavaScript
qui effectuera des requêtes au service Web mis en place à l'étape précédente. Pour afficher la carte, vous pouvez utiliser la librairie Leaflet.