Vous souhaitez utiliser des données en temps réel dans votre carte ?
Avec CartoVista, vous pouvez facilement intégrer des données en temps réel à une couche en utilisant l’API REST de CartoVista et un simple script Python et batch. Les couches seront automatiquement mises à jour en fonction de la fréquence d’exécution de votre script Python.
Les données
Pour ce tutoriel, nous utiliserons l’API de l’USGS pour récupérer quotdiennement les données sur les tremblements de terre en Turquie au cours des 30 derniers jours. Nous utiliserons les bibliothèques Python Pandas, GeoPandas, JSON et Requests pour effectuer les opérations suivantes :
- Collecter les données auprès de l’USGS
- Les stocker dans un geodataframe (objet Panda pour stocker les informations géographiques)
- Créer un fichier shapefile zippé, avec la date du jour
- Envoyer la couche de données à CartoVista
- Ecrire un script Python pour mettre à jour la couche dans CartoVista
- Écrire un script batch pour exécuter quotidiennement le script Python.
Bibliothèques et paquets
Pour commencer, définissons notre dossier de travail et importons les bibliothèques correspondantes, comme indiqué ci-dessous.
Acquérir les données
Nous allons maintenant créer une requête GET pour collecter des données sur les tremblements de terre en Turquie au cours du dernier mois, à compter du jour où nous effectuons la demande. Comme les données sont au format GeoJSON et que nous voulons les entités, nous allons collecter les données JSON et inspecter les entités pour voir l’intégralité des données (tremblements de terre au cours des 30 derniers jours).
Nettoyer les données
Les données que nous avons collectées sont au format JSON, mais nous souhaitons obtenir un shapefile afin de pouvoir les cartographier sur notre carte web CartoVista. Nous allons convertir les données JSON en un géodataframe à l’aide d’une boucle. À l’intérieur de la boucle, nous ferons ce qui suit :
- Définir le système de coordonnées à 4326
- Séparer les coordonnées de latitude et de longitude
- Filtrer les données pour obtenir la magnitude, la localisation, l’heure, l’état et la géométrie (latitude et longitude)
- Convertir l’heure avec .strftime() pour obtenir la date du tremblement de terre au format « mm-jj-aaaa »
- Filtrer selon l’attribut « place » pour obtenir les tremblements de terre qui se produisent uniquement en Turquie
Exporter les données localement
On a obtenu des données sur les tremblements de terre en Turquie pour le dernier mois ! Cependant, nos données ne sont pas exportées et stockées dans un format accepté par CartoVista (Shapefile zippé ou CSV). Pour garder les choses simples et faciles à distinguer dans notre répertoire de travail, nous nommerons notre fichier à la même date que celle de l’exécution du script. L’extension de ce fichier sera un shapefile et ne nécessitera aucun géocodage dans CartoVista. Enfin, nous exporterons ce jeu de données avec les nouveaux tremblements de terre ajoutés quotidiennement et nous les stockerons dans un fichier zip.
Importer les données dans notre espace de travail CartoVista
Les données sont prêtes sur notre ordinateur. Nous pouvons maintenant utiliser l’API de CartoVista pour faire fonctionner notre couche de données en temps réel. Mais d’abord, nous devons importer la couche dans notre espace de travail CartoVista.
Générer votre clé API CartoVista
Par ailleurs, nous avons besoin d’une clé API pour pouvoir envoyer des données à notre espace de travail. Vous pouvez y accéder en sélectionnant l’onglet « Utilisateurs », puis sélectionnez un utilisateur et cliquez sur « Clé API ». Ici, nous pouvons créer notre clé API et la copier dans notre presse-papiers. Assurez-vous que la clé est « active ».
Utiliser l’API REST de CartoVista pour mettre à jour la couche
Revenons à notre script Python. Nous allons maintenant stocker l’URL du serveur et la clé API dans des variables. Le fichier que nous venons d’importer dans notre espace de travail et qui contient les données sera également stocké dans une variable en lecture.
C’est le moment de faire une requête POST. Nous utiliserons deux points d’entrée (endpoints) de l’API de CartoVista :
- getFromFileDescription: ce point d’entrée nous permettra d’envoyer le fichier de données et d’obtenir en réponse une description de la structure du fichier dans CartoVista.
- updateFromFileDescription: nous enverrons la description de ce fichier à ce point d’entrée pour finaliser la mise à jour.
L’interface Swagger de CartoVista vous montre la liste de tous les points d’entrée (endpoints), et pour chaque point d’entrée, la liste de tous les paramètres.
Voici donc, en résumé, à quoi ressemble le premier appel :
Pour finaliser notre mise à jour, nous conclurons notre script Python en effectuant la deuxième requête POST. Pour vérifier si la demande est valide, nous pouvons utiliser « print » pour voir s’il y a des erreurs.
Automatisation du script
Le script est prêt à l’emploi et peut être reproduit pour n’importe quelle donnée en temps réel, mais nous devons être en mesure d’automatiser son exécution périodique sans avoir à ouvrir le script Python et à l’exécuter manuellement. Pour ce faire, nous avons écrit un simple script batch qui est programmé pour exécuter le script Python tous les jours à 9h00 avec le planificateur de tâches sous Windows. En fonction de vos besoins en matière de mises à jour, vous pouvez configurer le planificateur de tâches pour qu’il exécute votre script aussi souvent que vous le souhaitez (quotidiennement, hebdomadairement, mensuellement, etc.).
Carte finale - Carte en temps réel des tremblements de terre en Turquie
La carte suivante présente chaque jour les nouveaux tremblements de terre en Turquie à partir de février 2023 en utilisant l’API de l’USGS. Des agrégats sont créés pour les régions où les tremblements de terre se produisent en grand nombre. Consultez la carte tous les jours après 9 h 00 (heure de l’Est) pour les mises à jour !
Envie de créer des cartes comme celle-ci ?