Création d'une application géoweb avec Django et GeoDjango
Dans cet exercice, on va créer une application géoweb qui permettra le stockage de données géospatiales dans une base de données Spatialite et leur affichage sur une carte. Pour cela, on va commencer avec l'installation de deux logiciels: Anaconda Navigator (https://www.anaconda.com/products/navigator) et PyCharm Community Edition (https://www.jetbrains.com/pycharm/download/?section=windows).
Installation de la bibliothèque Django de Python
Comme première étape, on va activer notre environnement virtuel à partir de l'interface Anaconda Navigator en cliquant sur le nom de l'environnement virtuel créé et configurant l'interface comme à la figure ci-desosus. Suivez les étapes subséquentes pour installer la bibliothèque Django.
Alternative: La bibliothèque Django peut aussi être installé à l'aide de l'exécution de la commande : conda install anaconda::django dans le terminal ci-dessous.
Avec la même méthode, installez les bibliothèques GeoPandas et Folium.
Création d'un projet et d'une application Django
Dans un repertoire de votre choix (ex: C:\Users\....\rqrad), créez un sous-repertoire avec un nom, encore de votre choix (ex: C:\Users\....\rqrad\agrogeoweb) pour héberger les codes de votre projet et applications Django. Puis, à partir du terminal lancé comme à la figure ci-dessous, faites un changement de repertoire avec la commande cd C:\Users\....\rqrad\agrogeoweb vers le repertoire créé.
Toujours dans le même repertoire, exécutez la commande suivante pour créer un projet Django. Un nouveau dossier portant le dernier paramètre de la commande suivante (agrogeoinfo) contenant des modules Python vont être créés.
Faites un changement de repertoire vers le nouveau dossier.
Exécutez la commande suivante pour créer, cette fois-ci, une application Django. À noter que le projet et l'application forment une structure imbriquée.
Maintenant, lancez le serveur local et vérifiez que les étapes précédentes ont été réalisées avec succès à l'aide de la commande suivante:
Activation de l'extension GeoDjango
Maintenant, ouvrez votre navigateur web et naviguez vers http://127.0.0.1:8000/ ou http://localhost:8000/. Si vous voyez des résultats comme dans les deux images ci-dessous, vous avez réussi à créer un projet et une application Django. Félicitations!
GeoDjango est un module de contribution (inactif par défaut) inclus dans Django qui le transforme en un framework géoweb.
Pour l'activer, modifiez le fichier ou module settings.py dans le repertoire du projet à l'aide d'un éditeur et ajoutez les informations suivantes dans la variable dans la liste INSTALLED_APPS: 'django.contrib.gis', 'agrogeoinfoapp', comme ci-dessous. Vous pouvez utiliser le fichier https://deepnote.com/workspace/INRS-5198a8e6-f82b-4908-a283-0534b7980bf2/project/Formation-RQRAD-Developpement-dun-Systeme-dInformations-Agricoles-561fff2d-a0ea-485f-9d16-1029194d629b/Data%2FCodes%2Fsettings.py?
Activation de l'API de base de donn ées spatiales pour Spatialite
Noter qu'il faut laisser une virgule après le dernier élément de la liste.
Un peu plus bas dans le même fichier settings.py, modifiez la valeur de la clé ENGINE de la variable DATABASES comme ci-dessus en la remplaçant par 'django.contrib.gis.db.backends.spatialite'. Puis, sauvegardez le fichier (CTRL+S). Puis ajoutez les codes suivantes à la fin du fichier:
Installation des bibliothèques géospatiales
Pour transformer le SGBD sqlite en un SGBD spatial, des outils (spatialite.exe, proj.db, spatialite_gui.exe) et bibliothèques (libpd.dll) sont nécessaires. Téléchargez ces fichiers à partir du dossier Outils (/work/Data/Outils) du present document et déposez les dans le dossier de votre projet agrogeoinfo comme ci-dessous.
L'ajout de l'application 'django.contrib.gis' dans le fichier settings.py permet la découverte par notre application des fonctionnalités SIG de Django; Sinon, certaines d'entre elles comme l’interface d’administration géographique ne pourront pas être activées. Les fonctionalités SIG de GeoDjango requièrent l'installation des bibliothèques géospatiales GDAL (Geospatial Data Abstraction Library), OSGEO et PROJ. La manière la plus cohérente de procéder à cette installation consiste à télécharger le fichier de type wheel (.whl) correspondant à la version de de Python (3.10) utilisée dans votre environnement virtuel. Ceci peut être téléchargé à partir du repertoire de Christoph Gohlke ici: https://github.com/cgohlke/geospatial-wheels/releases ou à partir du dossier GDAL (/work/Data/GDAL) accompagnant ce tutoriel. Cliquez sur 'Show all XYZ assets' pour afficher tous le fichiers disponibles.
Pour être sûr de la bonne version, vous pouvez vérifier la version de Python en cliquant sur l'option 'Open with Python' comme démontré dans la figure du Anaconda Navigator ci-haut. Ma version de Python est 3.10 et j'utilise une machine Windows à 64 bits, donc, j'ai téléchargé la version GDAL-3.8.4-cp310-cp310-win_amd64.whl.
Pour faciliter l'installation, deposez le fichier dans le repertoire agrogeoinfo, par exemple. En supposant que vous n'avez pas fait de changement de repertoire local depuis la création de l'application agrogeoinfoapp et que vous êtes encore dans le repertoire agrogeoinfo. Maintenant, exécutez la commande suivante et vérifiez que l'installation a réussi.
Run to view results
Après l'installation, il pourrait arriver que la bibliothèque GDAL ne soit pas accessible par Django. Pour cela:
Création de tables de l'ODM2 dans la base de données SQLite à partir du Model (première composante d'une application Django)
Vous pouvez trouver de l'aide ici: https://www.youtube.com/watch?v=R9ZJZtHY7RY
Maintenant, remplacez le module models.py de votre dossier agrogeoinfoapp par le contenu du fichier https://deepnote.com/workspace/INRS-5198a8e6-f82b-4908-a283-0534b7980bf2/project/Geoweb-Apps-with-Django-and-GeoDjango-561fff2d-a0ea-485f-9d16-1029194d629b/Data%2FData%20schema%2Fmodels.py? .
Ajout des séries temporelles
Maintenant, exécutez les commandes suivantes dans le terminal pour (a) transformer les tables en un module Python dans votre application avec un schéma de données que Django va utiliser pour (b) créer les tables dans la base de données géospatiales. Les résultats doivent apparaître comme à la figure suivante.
Affichage des données stockées dans une interface personalisée
python -m manage makemigrations
Création des Views (troisième composante d'une application Django)
python -m manage migrate
D'abord, on va créer une View, c.-à-d., dans le module views.py de l'application ou du repertoire agrogeoinfoapp. Une vue (view) est une fonction qui prend une requête Web et renvoie une réponse sous la forme d'une page HTML (dans notre cas un Template), ou une redirection, ou un document XML ou JSON, une image, une carte. Ouvrez le fichier views.py et ajoutez-y les codes suivants, puis, sauvegardez-le.
Run to view results
Création d'un template (deuxième composante d'une application Django)
Dans chacune des vues, on a remarqué la réfrérence à un fichier HTML comme 'mapl.html'. Ce fichier template contient les codes HTML ainsi que les étiquettes correspondant aux données contextuelles retournées par la View dans la réponse HTTP (HTTPResponse). Créez un dossier nommé templates dans le repertoire static et y créer un fichier nommé mapl.html. Ajoutez-y le contenu ci-dessous.
Plus d'informations sur les structures : https://django-book-new.readthedocs.io/en/latest/appendixE.html
Run to view results
Configuration des urls pour les requêtes HTTP
L'occasion est venue pour nous de permettre aux visiteurs du site d'explorer les données sous forme de couches individuelles ou superposées. Nous devons maintenant configurer les url (uniform resource locator) comme suivant:
Run to view results