23/11/2023
Obtenez des données météorologiques en temps réel dans ArcGIS
Meteomatics et ArcGIS — Partie 1
ArcGIS — le logiciel SIG phare d'ESRI — est un moyen puissant d'explorer et d'analyser des données spatiales telles que celles obtenues à partir de l'API Météo de Meteomatics. Dans cet article, nous abordons les types de problèmes pour lesquels ArcGIS peut vous aider, ainsi que la manière d'intégrer les données de l'API dans ArcGIS et de programmer des mises à jour régulières afin que votre carte ArcGIS affiche toujours des prévisions actualisées sans nécessiter d'intervention manuelle.
Qu'est-ce qu'un SIG ?
Peut-être lisez-vous cet article sans avoir la moindre idée de ce qu'est un SIG ou de ce qu'il signifie. SIG signifie "système d'information géographique" (geographic information system ou GIS en anglais) et désigne tout logiciel qui facilite la visualisation, la manipulation et l'analyse de données spatiales.
De nombreux problèmes ont une composante spatiale, et les logiciels SIG permettent aux utilisateurs d'importer des données ayant un aspect géographique et d'utiliser des outils spécialisés pour afficher les données et répondre à des questions stratégiques à leur sujet.
Nous examinerons quelques exemples de questions spatiales dans nos articles sur les intégrations SIG avec notre API, mais pour l'instant, prenons un exemple courant : vous exploitez une chaîne de salles de sport dans une zone urbaine et vous souhaitez trouver le meilleur emplacement pour une nouvelle salle de sport. Vous disposez d'un fichier .csv contenant l'emplacement de vos salles de sport existantes, et vous pourriez facilement installer un nouvel établissement à un endroit un peu éloigné de vos salles existantes, mais comment savez-vous qu'il s'agit d'un bon emplacement ? À l'aide d'un logiciel SIG, vous pouvez obtenir des données sur la population et le réseau de transport afin de trouver un emplacement qui n'est pas seulement suffisamment éloigné de vos installations existantes, mais qui dessert également une population distincte et importante, et qui optimise même le temps de trajet jusqu'au restaurant le plus proche pour tous vos clients.
Intégration des données de l'API Météo de Meteomatics dans les flux de travail SIG
L'API Météo de Meteomatics comprend plus de 1800 paramètres provenant de plus de 110 sources de données météorologiques. De nombreux problèmes spatiaux impliquent également un aspect météorologique, et la possibilité d'intégrer de manière transparente les données Meteomatics dans les flux de travail SIG est une fonction incroyablement utile pour beaucoup de nos clients.
Données WMS
Les données météorologiques peuvent être connectées directement à ArcGIS via le service WMS disponible par le biais de notre API. Cette solution convient aux clients qui souhaitent simplement obtenir une indication visuelle de l'état relatif de la météo. WMS est un protocole qui permet de partager des images bitmap, mais il n'inclut pas les valeurs numériques des données. Pour ce type de comportement, les clients auront besoin d'une solution plus avancée.
Visualisation des conditions météorologiques avec MetX
Les utilisateurs qui souhaitent utiliser un outil de visualisation de données météorologiques avancé, avec des options d'interrogation de données numériques et de création de graphiques, devraient considérer MetX, notre programme de visualisation météorologique sur mesure.
Flux de travail de géotraitement
Imaginez que vous souhaitiez améliorer l'exemple de l'adéquation du site ci-dessus en y ajoutant des données météorologiques. Peut-être qu'au lieu des gymnases, vous essayez de trouver le meilleur emplacement pour un nouveau restaurant avec des places à l'extérieur, et que vous recherchez un endroit où les conditions moyennes sont les meilleures. Ou encore, vous vous intéressez au givrage des routes, afin de déterminer dans quelle mesure les trajets vers vos magasins sont sûrs et d'estimer la fréquentation en temps réel lorsque les routes deviennent périlleuses à emprunter.
Il est vrai que ce type de tâches pourrait être programmé en Python ou dans un langage similaire, mais l'interface ArcGIS permet aux utilisateurs de mettre en œuvre ce type d'analyse par le biais d'une interface graphique, sans qu'il soit nécessaire de recourir à des scripts.
ArcGIS prend tout son sens grâce au grand nombre d'ensembles de données géospatiales mis à la disposition des utilisateurs par l'intermédiaire du ESRI Living Atlas. À partir de n'importe quel projet ArcGIS, les utilisateurs peuvent importer toutes les données disponibles sur le Living Atlas, y compris de nombreux ensembles de données ESRI ainsi que tout contenu créé par l'utilisateur qui a été publié sur cet atlas. Des éléments tels que les réseaux de transport et les données démographiques dans un format prêt à l'emploi vous permettent d'utiliser les données de l'API Météo pour résoudre des problèmes plus avancés - par exemple, calculer le risque de verglas le long d'un réseau de transport.
Chacun des outils de géotraitement d'ArcGIS peut être appliqué aux données spatiales à partir de l'interface graphique d'ArcGIS sans qu'il soit nécessaire de coder - bien que tous ces outils puissent également être appliqués à partir d'un contexte Python en utilisant le package ArcPy. Il en résulte une très grande souplesse dans la manière de décomposer et d'effectuer l'analyse. Les données météorologiques nécessaires à la mise en œuvre de ces outils sont disponibles dans l'API de Meteomatics et peuvent être importées dans ArcGIS pour faciliter ces solutions.
L'importation des données API dans ArcGIS peut se faire de différentes manières, que nous explorerons dans les articles du Tech Blog :
1. Le simple téléchargement manuel des données Meteomatics avant de les ouvrir dans ArcGIS est suffisant pour de nombreuses études.
- Certaines données météorologiques sont déjà formatées de manière appropriée pour ArcGIS (données matricielles).
- Certaines données météorologiques nécessitent un formatage supplémentaire (données d'entités) avant d'être prêtes à être visualisées dans ArcGIS (un reformatage programmatique est souvent nécessaire dans ce cas).
- L'analyse ultérieure des données peut alors se faire à l'aide de la boîte à outils de géotraitement à l'intérieur d'ArcGIS, ou en utilisant les mêmes outils (ainsi que toutes les autres fonctionnalités Python souhaitées) à l'intérieur d'un script Python.
2. Dans les applications nécessitant des données en temps réel, par exemple dans un tableau de bord de surveillance des conditions météorologiques, un script Python doit être mis en place pour appeler continuellement l'API et mettre à jour les données à l'intérieur d'ArcGIS.
Acquisition et affichage en temps réel de données météorologiques dans ArcGIS Pro
Cet article se concentre sur l'acquisition et l'affichage en temps réel de données météorologiques dans ArcGIS Pro. Nous étudierons l'analyse des données météorologiques à l'aide de l'outil Geoprocessing dans un prochain article.
Dans cet exemple, nous explorerons le cas d'utilisation de l'importation de données météorologiques pour plusieurs emplacements individuels et la mise en place d'un script de manière à ce que ces données se mettent à jour à intervalles réguliers. L'ensemble de données de localisation fictive est une liste séparée par des virgules de latitudes et de longitudes correspondant à des aéroports européens, et nous importerons certaines données météorologiques qui pourraient être utiles pour déterminer s'il est sûr de voler ou non.
Représentation des données dans ArcGIS : Ensembles de données "raster" ou "feature"
Avant de commencer, examinons rapidement la manière dont les données sont représentées dans ArcGIS. Comme la plupart des programmes SIG, ArcGIS considère que les données sont soit des "rasters", soit des "features". D'une manière générale, les rasters sont conçus pour représenter des données qui varient de manière continue sur une grande zone, alors que les features sont utilisées pour représenter des données associées à des objets discrets. Cette définition peut prêter à confusion, car la représentation matricielle d'une variable continue ressemble à une grille d'objets discrets, et certaines matrices peuvent représenter des données discrètes ou des booléens. La différence entre les deux est mieux illustrée graphiquement, et j'inclus quelques schémas ci-dessous.
Figure 4 : Représentation schématique des types de données dans ArcGIS. Les données matricielles sont une vue échantillonnée d'un ensemble de données continues ; une collection d'entités est, comme son nom l'indique, une collection d'entités, qui peuvent en général être des polygones, des lignes ou des points. Les caractéristiques doivent toutes être associées à une géométrie afin de pouvoir être introduites dans une carte ArcGIS.
Obtention des données de l'API
Dans ce cas d'utilisation, chaque aéroport est une "feature" à laquelle nous pouvons associer des données météorologiques. Dans le contexte de l'API, nous pouvons demander des données météorologiques pour ces lieux dans un format JSON ou XML, qui ressemblera à ceci :
Avant de pouvoir glisser-déposer ces données dans ArcGIS, nous devons les reformater. Plus précisément, nous devons indiquer à ArcGIS quelles sont les caractéristiques de cet ensemble de données et attribuer la latitude et la longitude à un attribut "géométrie" afin qu'ArcGIS sache, à l'ouverture du fichier, qu'il s'agit des données de localisation. Comme nous devrons faire cela pour chaque emplacement de l'ensemble de données, nous devrons le faire par programme.
from meteomatics import api import datetime as dt import pandas as pd import numpy as np import geopandas as gpd from shapely.geometry import Point airports = pd.read_csv('poi_european_airports.csv', header=None, index_col=[0, 1]) airports['ID'] = (np.arange(len(airports))+1).astype(float) df = api.query_time_series( airports.index.values, NOW, NOW+STEP, STEP, PARAMS, USERNAME, PASSWORD ).xs( key=NOW.strftime('%Y-%m-%d %H:00:00+00:00'), level=2 ) # have to make sure the index name and MultiIndex names are the same airports.index.name = df.index.name airports.index.names = df.index.names combined = pd.merge(df, airports, left_index=True, right_index=True) geom = [Point(coord[1], coord[0]) for coord in df.index] gdf = gpd.GeoDataFrame(combined.assign(coordinates=geom).reset_index(), geometry='coordinates') gdf.to_file("latest_data.geojson", driver='GeoJSON')
Ma variable "airports" provient d'un fichier .csv de points d'intérêt se rapportant aux aéroports européens, mais elle ne contient pas d'autres informations que les emplacements des aéroports, et je donne donc à chaque aéroport un identifiant arbitraire. Le dataframe retourné en tant que "df" prend une certaine forme en raison du connecteur Python ; j'utilise .xs pour le retraiter afin qu'il puisse être fusionné avec l'ensemble de données des aéroports ; je renomme également l'ensemble de données des aéroports en conséquence, avant de fusionner les deux, de définir l'attribut géométrique, de créer un GeoPandas GeoDataFrame et d'écrire le résultat dans un GeoJSON. Le GeoJSON résultant ressemble à ceci :
Ces données sont maintenant formatées de manière à pouvoir être importées dans ArcGIS, comme indiqué ci-dessous :
Automatisation du processus
Nous avons vu comment formater une réponse d'API pour qu'elle puisse être utilisée dans ArcGIS. Lors de la dernière étape, nous avons ouvert manuellement une carte ArcGIS et y avons ajouté les données. Afin de mettre en place un rafraîchissement régulier des données sans devoir effectuer un glisser-déposer manuel, nous devons d'abord automatiser cette étape.
Quelques paquets Python spécialisés sont nécessaires pour terminer le script. Plus précisément, nous devrons utiliser ArcPy pour créer des GeoDataBases et le paquet ArcGIS pour mettre à jour les caractéristiques dans la GDB.
Mon code pour automatiser le processus de remplacement des données dans ArcGIS avec les données nouvellement acquises de l'API peut être trouvé sur les pages GitHub de Meteomatics. Le script est bien commenté, et vous devriez être en mesure de trouver les sections pertinentes que vous devez mettre à jour pour vos besoins.
Voici une brève description des étapes du processus :
- Deux GeoDataBases sont définies : la workGDB, qui est utilisée tout au long du script pour préparer les données à télécharger vers ArcGIS ; et la liveGDB, qui contient les données actuellement affichées sur ArcGIS, et qui est remplacée à la toute fin du processus.
- Le code précédent est utilisé pour récupérer les données de l'API pour nos aéroports et les écrire dans un GeoJSON. Le module ArcPy est utilisé pour convertir ces données formatées de manière appropriée en une couche d'entités ArcGIS.
- La fonction logique de déploiement est exécutée pour remplacer la liveGDB par la workGDB.
Création d'un processus par lots
Le script de la section précédente peut remplacer les données d'une carte ArcGIS par des données téléchargées pendant l'exécution du script. La dernière étape de la création de mises à jour automatisées consiste à exécuter le script plusieurs fois sans avoir à l'appeler manuellement.
Bien entendu, une façon directe de procéder consiste à créer une boucle "for" dans le script Python lui-même. L'inconvénient de cette méthode est qu'elle ne fonctionne que si le script Python n'est pas interrompu, ce qui peut facilement se produire si vous éteignez votre ordinateur.
Une alternative à cette méthode consiste à créer un processus .bat ou un script shell qui appelle régulièrement le script. C'est la procédure que nous allons apprendre aujourd'hui.
La première chose à faire pour rendre notre script actuel compatible avec cette méthode est de le rendre appelable depuis la ligne de commande en ajoutant l'option
__name__ == '__main__'
au début du script. S'il y a des arguments que nous voulons passer au script à partir de la ligne de commande, nous pouvons également importer le module "sys" et décompresser ces arguments dans le script à l'aide de sys.argv. Par exemple, si vous voulez passer les emplacements de vos points d'intérêt à partir d'un emplacement externe, au lieu de les garder à un emplacement fixe par rapport au script comme je le fais.
Essentiellement, tout ce que vous devez faire pour créer un processus par lots est de taper la commande que vous voulez voir exécutée régulièrement sur la ligne de commande dans un fichier en texte clair, avec les arguments non-python entre guillemets, puis d'enregistrer le fichier avec une extension .bat. Mon fichier ressemble à ceci :
"C:\path\to\my\python.exe" "C:\path\to\my\script.py"
Si j'avais besoin d'ajouter des arguments de ligne de commande au script Python, ceux-ci n'auraient pas besoin d'être enveloppés dans "". Assurez-vous que lorsque vous enregistrez le fichier, vous l'enregistrez en tant que fichier .bat (si cela est disponible dans votre liste déroulante Enregistrer sous...) ou tapez vous-même l'extension .bat et sélectionnez "tous les fichiers" dans la liste déroulante.
Il ne nous reste plus qu'à planifier cette tâche à l'aide du planificateur de tâches de Windows. Pour ce faire, procédez comme suit :
- Ouvrez le planificateur de tâches dans le menu Windows
- Sélectionnez "Créer une tâche de base" dans le menu "Actions"
- Donnez un nom et une description à votre tâche
- Cliquez sur "Suivant" pour accéder à l'onglet "Déclencheur de tâches"
- Suivez l'assistant pour planifier la tâche à la fréquence que vous souhaitez. Ne vous inquiétez pas si vous avez en tête une tâche plus fréquente - nous pourrons la modifier à l'étape suivante
- Maintenant que nous avons créé la tâche, nous pouvons la voir dans le planificateur de tâches. En cliquant dessus, vous ouvrirez le menu contextuel "Élément sélectionné" sous "Actions". À partir de là, sélectionnez "Propriétés"
- Passez à l'onglet "Déclencheurs" dans la fenêtre contextuelle, sélectionnez le déclencheur que vous avez créé précédemment et cliquez sur "Modifier"
- Sous "Paramètres avancés", vous devriez pouvoir augmenter la fréquence de votre tâche programmée.
Résultats
L'avantage d'établir une connexion en temps réel avec l'API est que nous pouvons appliquer des flux de travail dans ArcGIS aux données qui seront mises à jour lorsque de nouvelles données arrivent, ce qui nous permet de visualiser rapidement les changements apportés aux données. Par exemple, dans l'exemple ci-dessous, j'ai mis à jour la symbologie des caractéristiques de l'aéroport pour générer un point plus grand avec une couleur plus rouge pour les vitesses de vent plus élevées dans notre ensemble de données. La vitesse maximale du vent atteinte à ce moment-là - 8,9 m/s à l'aéroport d'Ankara - n'est probablement pas quelque chose qui devrait préoccuper particulièrement les aviateurs, mais l'idée générale est évidente : si nous faisions dépendre la symbologie des données en direct, nous verrions des mises à jour en direct des symboles et serions alertés si nous devions prendre des mesures.
Ce principe général peut être étendu à divers concepts SIG. En fait, si vous définissez un flux de travail dans ArcGIS Pro ou dans l'API ArcGIS Python, vous pouvez réappliquer ce flux de travail automatiquement à de nouvelles données et voir les résultats de l'analyse mis à jour en temps réel.
Résumé
Dans cet article, nous avons exploré certains des avantages de l'utilisation d'ArcGIS pour les analyses géospatiales, ainsi que la puissance de la combinaison des données météorologiques avec les outils de géotraitement disponibles dans ArcGIS. Nous avons appris comment ArcGIS représente les données et nous avons vu comment traiter les données de l'API Meteomatics pour les rendre compatibles avec ArcGIS, ainsi que comment automatiser le traitement des données de l'API afin que des mises à jour puissent être apportées à une carte ArcGIS chaque fois que de nouvelles données sont disponibles.
Il est clair que ce n'est pas la totalité des possibilités d'utilisation d'ArcGIS, et d'autres articles sur le Tech Blog démontreront bientôt certains des flux de travail que vous pouvez mettre en œuvre dans ArcGIS en utilisant les données de Metetomatics. En attendant, si vous avez un abonnement à ArcGIS et à Meteomatics, pourquoi ne pas les utiliser ensemble et explorer les possibilités qui s'offrent à vous ? Si vous avez des idées intéressantes à partager, n'hésitez pas à nous contacter !
Parlez à un expert
Trouvons la solution parfaite pour votre problème. Parlez à un expert.
Nous fournissons les données météorologiques les plus précises pour n'importe quel endroit, à tout moment, afin d'améliorer votre activité.