Nathalie reckinger VNE Vf FFT Tv8 unsplash

23/11/2023

Obtenez des données météorologiques en temps réel dans ArcGIS

Meteomatics et ArcGIS — Partie 1

Thomas Eldridge - Tech Evangelist.jpg
Thomas Eldridge
Technology Evangelist
Partagez:

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.

Figure 1: Example of site suitability analysis using ArcGIS Pro.
Figure 1 : Exemple d'analyse de l'adéquation d'un site à l'aide d'ArcGIS Pro. Dans cet exercice (disponible sur l'ESRI Training Academy), le site d'une nouvelle salle de sport peut être choisi en fonction de l'emplacement des installations existantes et des clients potentiels. L'analyse peut être complétée par des données sur le réseau routier et le trafic pour calculer le temps de trajet et par un noyau pour calculer la densité de population.

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 2: Example of a raster dataset
Figure 2 : Exemple d'un ensemble de données matricielles. Bien que les données soient divisées en morceaux distincts, les données sous-jacentes sont clairement continues. En fait, la valeur affichée à la résolution de la grille matricielle est une mesure des données sous-jacentes dans cette région (dans ce cas, une moyenne des vitesses du vent dans chaque cellule de la grille), et serait différente si la taille ou l'emplacement précis des cellules de la grille changeait.


Figure 3: Example of a feature dataset containing multiple types of features
Figure 3 : Exemple d'un ensemble de données contenant plusieurs types de caractéristiques. Ici, un polygone ombré représente la zone inondable autour d'une rivière, des polygones orange représentent des terrains à vendre et des points verts représentent les centroïdes des maisons à l'intérieur des parcelles. Chaque caractéristique est distincte et peut être associée à de nombreuses propriétés, telles qu'une adresse, un prix, un score de risque, etc., qui peuvent toutes être représentées dans un format de données structuré tel que JSON.
Figure 4: A schematic representation of the types of data in ArcGIS.

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 :

Figure 5: each location is a separate feature, and hence is appropriate for use as a feature dataset.
Figure 5 : chaque lieu est une caractéristique distincte et peut donc être utilisé comme un ensemble de données de caractéristiques.

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 :

Figure 6: a GeoJSON, which is a type of structured data with a geometry field.
Figure 6 : un GeoJSON, qui est un type de données structurées avec un champ géométrique. Dans cet exemple, la géométrie est constituée de points, mais il peut également s'agir de lignes ou de polygones.

Ces données sont maintenant formatées de manière à pouvoir être importées dans ArcGIS, comme indiqué ci-dessous :

Figure 7: wind speed data, downloaded from the API and reformatted as a GeoJSON
Figure 7 : les données relatives à la vitesse du vent, téléchargées à partir de l'API et reformatées sous forme de GeoJSON, peuvent être importées dans ArcGIS par un simple glisser-déposer du fichier dans une carte. Chaque caractéristique peut être associée à un nombre illimité d'attributs - ici, le point d'intérêt de l'aéroport a un identifiant, des données de localisation et la vitesse du vent - nous pourrions en général ajouter autant de données météorologiques que nous le souhaitons, ainsi que des informations non météorologiques comme le nom de l'aéroport, le nombre de pistes d'atterrissage, etc.


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.

Figure 8: ArcGIS Pro view of wind speed data at European airports
Figure 8 : Vue ArcGIS Pro des données sur la vitesse du vent dans les aéroports européens. Les emplacements où la vitesse du vent est plus élevée sont représentés par des symboles plus grands et plus rouges que ceux où la vitesse du vent est plus faible. Cela nous permet d'inspecter rapidement la carte pour détecter toute condition potentiellement dangereuse.

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 !

Thomas Eldridge - Tech Evangelist.jpg
Thomas Eldridge
Technology Evangelist

Envoyez-moi un message !

Avez-vous des questions sur l'un de mes articles ou aimeriez-vous simplement parler de technologie et de données météo avec moi ? Alors envoyez-moi un message, je me réjouis d'avoir de vos nouvelles !

Découvrez nos services

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é.

Icon on Picture rainy cloud large
Grâce à des technologies uniques et des compétences poussées, nous créons une base solide pour que vous puissiez travailler efficacement avec les données météorologiques.
Données météo et climatiques
Icon on Picture datashop large v2
Notre Boutique de données météorologiques vous offre un accès facile et rapide aux données météorologiques dont vous avez besoin pour des usages ponctuels. Vous y trouverez une sélection complète de données météorologiques actuelles et historiques ainsi que des paramètres météorologiques spécifiques à votre secteur.
Découvrez la Boutique
Icon on Picture api large
Avec notre API Météo, vous bénéficiez d'un accès permanent à des données météorologiques, océaniques, environnementales et climatiques mondiales de haute résolution, ainsi qu'à des données historiques, des données en temps réel, des prévisions et des scénarios climatiques jusqu'en 2100.
Découvrez l'API Météo
Icon on Picture EURO1k v5 large
Obtenez des prévisions météorologiques précises dans toute l'Europe grâce au modèle météorologique européen à une résolution de 1 km, et prenez des décisions plus judicieuses.
Découvrez EURO1k
Icon on Picture metx large v1
Visualisez tous les événements météorologiques sur une carte de haute résolution grâce à notre outil de visualisation météorologique MetX, basé sur l'API météo.
Visualisation météorologique MetX
Icon on Picture solar forecast large
Prévisions énergétiques pour l'énergie solaire, éolienne et hydroélectrique - basées sur les données météorologiques les plus précises au monde.
Prévisions énergétiques
Icon on Picture meteodrone large
Les Meteodrones comblent le manque de données météorologiques dans la basse atmosphère de la Terre. Conçus et assemblés en Suisse.
Découvrez les Meteodrones
Icon on Picture meteobase large
Meteobase, la maison de notre Meteodrone. La Meteobase est le partenaire idéal et la base de nos drones météorologiques pour mesurer les données météorologiques en tout lieu.
Découvrez la Meteobase