Voici où il a plu aujourd'hui en Australie, un peu autour de Perth, beaucoup dans le Queensland et pour les observateurs attentifs un peu à Cape York pour garder les crevettes et les crocodiles heureux. La légende montre la précipitation en mm.<\/P>
<\/P>
Le Bureau australien de météorologie<\/A> publie des données météorologiques téléchargeables ; mon scénario est que je suis intéressé par la republication des observations des pluviomètres vers un service d'entités hébergé, qui est sur la carte ci-dessus. Après quelques recherches, je trouve que les données sont disponibles via FTP<\/A> avec un schéma décrit dans ce guide utilisateur<\/A>. Les données sont actualisées quotidiennement. Bien que je ne redistribue pas les données dans ce blog, je mentionnerai qu'elles sont sous licence Creative Commons<\/A>, vous pouvez donc implémenter mon exemple si vous le souhaitez.<\/P><\/P>Bien que le taux de rafraîchissement soit quotidien, chaque fichier peut contenir des observations couvrant plus de 24 heures et provenant de plusieurs capteurs sur un site. Quoi qu'il en soit, ce que je voulais, c'était que les observations quotidiennes soient envoyées vers un service d'entités dans mon portail ; je pourrais tout aussi bien envoyer les données à ArcGIS Online.<\/P><\/P>Ces synchronisations périodiques depuis le web<\/STRONG> sont partout dans le SIG. Les responsables des données facilitent l'obtention manuelle<\/EM> des données, je vais vous montrer à quel point il est simple d'automatiser<\/EM> les synchronisations avec Data Interoperability. Je décris habituellement Data Interoperability comme la technologie d'intégration d'applications 'sans code' d'Esri. Pour être totalement transparent, dans cet exemple j'ai utilisé un peu de Python dans les FME Workbenches que j'ai créés, donc je dois nuancer l'affirmation sans code<\/STRONG>, mais je peux dire que c'est low-code<\/STRONG>. Vous pouvez voir par vous-même dans les Workbenches.<\/P><\/P>J'avais initialement pensé faire du processus planifié un outil web et le programmer avec Notebook Server. Cela aurait peut-être été le plus amusant à construire mais j'ai réalisé que ce n'était pas nécessaire dans mon cas d'utilisation. Je suis revenu à un modèle dont j'ai déjà parlé sur mon blog<\/A>, à savoir utiliser le Planificateur de tâches Windows, mais cette fois sur un serveur. Pourquoi ne pas utiliser l'approche logicielle de bureau ? Eh bien, pour profiter d'une machine avec probablement une très haute disponibilité que je sais pouvoir programmer en dehors de mes heures normales de travail.<\/P><\/P>Voici le Workbench qui fait le travail de téléchargement des fichiers produits par BoM et d'envoi des entités au service d'entités hébergé de mon portail :<\/P><\/P><\/P><\/P>Et je ne peux pas résister, voici le Python, pas trop effrayant. Il serait inutile si les noms de fichiers sur le site FTP étaient stables, j'aurais pu utiliser un transformateur FTPCaller<\/STRONG>, mais ils ont des horodatages comme partie de leur nom, c'était juste plus facile à gérer avec un peu de Python. Pendant que je téléchargeais les données, je les ai aussi un peu nettoyées (suppression des guillemets doubles entourants et des caractères de nouvelle ligne) puis envoyé toutes les observations dans le flux.<\/P><\/P><\/P><\/P><\/P>Comme les sources de données ne changent pas, j'ai rendu tous les paramètres privés, cela simplifie la commande à planifier. Tout ce que je dois faire est de mettre le Workbench sur le serveur et m'assurer qu'il s'exécute. Dans le téléchargement postérieur vous trouverez trois fichiers FMW :<\/P><\/P>MakeRainGauges.fmw<\/STRONG><\/P>RefreshRainGauges.fmw<\/STRONG><\/P>RefreshRainGauges - Server Copy.fmw<\/STRONG><\/P><\/P>MakeRainGauges crée une classe d'entités géodatabase que j'ai utilisée dans Pro pour instancier mon service d'entités hébergé. RefreshRainGauges est construit à partir de MakeRainGauges et ne diffère que par le fait qu'il écrit dans le service d'entités, avec une troncature initiale. C'est le Workbench que je veux planifier. RefreshRainGauges - Server Copy ne diffère de RefreshRainGauges que par ses paramètres Python, pour utiliser Python 3.6+. Je n'ai pas utilisé ce nom sur le serveur, juste pour l'inclure dans le téléchargement postérieur.<\/P><\/P>Sur mon serveur portail il y a eu une petite configuration (j'ai une seule machine avec tout dessus, n'oubliez pas d'installer et de licencier Data Interoperability !). RefreshRainGauges utilise une connexion web vers mon portail. Dans ce blog<\/A>, je décris comment créer une connexion web portail. Celle-ci doit être copiée sur le serveur pour l'utilisateur arcgis<\/STRONG> qui exécutera le processus planifié. La façon la plus simple est la méthode #2 dans cet article<\A>. Connecté au serveur en tant qu'arcgis, j'ai d'abord créé un raccourci bureau vers "C:\\Program Files\\ESRI\\Data Interoperability\\Data Interoperability AO11\\fmeworkbench.exe"<\STRONG>, lancé Workbench, puis importé le fichier XML de connexion web et testé la lecture du service d'entités. J'ai aussi copié RefreshRainGauges dans un dossier et modifié son environnement Python pour convenir au serveur (l'exemple a été construit avec Pro 2.7 Beta mais le serveur tourne sous Enterprise 10.8.1). En exécutant l'espace de travail en mode interactif, le haut du journal révèle la commande à planifier :<\P><\P><\P style="text-indent: 0px; margin: 0px; text-align: left;"> Ligne de commande pour exécuter cet espace de travail :<\STRONG>
Bien que le taux de rafraîchissement soit quotidien, chaque fichier peut contenir des observations couvrant plus de 24 heures et provenant de plusieurs capteurs sur un site. Quoi qu'il en soit, ce que je voulais, c'était que les observations quotidiennes soient envoyées vers un service d'entités dans mon portail ; je pourrais tout aussi bien envoyer les données à ArcGIS Online.<\/P>
Ces synchronisations périodiques depuis le web<\/STRONG> sont partout dans le SIG. Les responsables des données facilitent l'obtention manuelle<\/EM> des données, je vais vous montrer à quel point il est simple d'automatiser<\/EM> les synchronisations avec Data Interoperability. Je décris habituellement Data Interoperability comme la technologie d'intégration d'applications 'sans code' d'Esri. Pour être totalement transparent, dans cet exemple j'ai utilisé un peu de Python dans les FME Workbenches que j'ai créés, donc je dois nuancer l'affirmation sans code<\/STRONG>, mais je peux dire que c'est low-code<\/STRONG>. Vous pouvez voir par vous-même dans les Workbenches.<\/P><\/P>J'avais initialement pensé faire du processus planifié un outil web et le programmer avec Notebook Server. Cela aurait peut-être été le plus amusant à construire mais j'ai réalisé que ce n'était pas nécessaire dans mon cas d'utilisation. Je suis revenu à un modèle dont j'ai
Voici le Workbench qui fait le travail de téléchargement des fichiers produits par BoM et d'envoi des entités au service d'entités hébergé de mon portail :<\/P>
Et je ne peux pas résister, voici le Python, pas trop effrayant. Il serait inutile si les noms de fichiers sur le site FTP étaient stables, j'aurais pu utiliser un transformateur FTPCaller<\/STRONG>, mais ils ont des horodatages comme partie de leur nom, c'était juste plus facile à gérer avec un peu de Python. Pendant que je téléchargeais les données, je les ai aussi un peu nettoyées (suppression des guillemets doubles entourants et des caractères de nouvelle ligne) puis envoyé toutes les observations dans le flux.<\/P><\/P><\/P><\/P><\/P>Comme les sources de données ne changent pas, j'ai rendu tous les paramètres privés, cela simplifie la commande à planifier. Tout ce que je dois faire est de mettre le Workbench sur le serveur et m'assurer qu'il s'exécute. Dans le téléchargement postérieur vous trouverez trois fichiers FMW :<\/P><\/P>MakeRainGauges.fmw<\/STRONG><\/P>RefreshRainGauges.fmw<\/STRONG><\/P>RefreshRainGauges - Server Copy.fmw<\/STRONG><\/P><\/P>MakeRainGauges crée une classe d'entités géodatabase que j'ai utilisée dans Pro pour instancier mon service d'entités hébergé. RefreshRainGauges est construit à partir de MakeRainGauges et ne diffère que par le fait qu'il écrit dans le service d'entités, avec une troncature initiale. C'est le Workbench que je veux planifier. RefreshRainGauges - Server Copy ne diffère de RefreshRainGauges que par ses paramètres Python, pour utiliser Python 3.6+. Je n'ai pas utilisé ce nom sur le serveur, juste pour l'inclure dans le téléchargement postérieur.<\/P><\/P>Sur mon serveur portail il y a eu une petite configuration (j'ai une seule machine avec tout dessus, n'oubliez pas d'installer et de licencier Data Interoperability !). RefreshRainGauges utilise une connexion web vers mon portail. Dans
"C:\Program Files\ESRI\Data Interoperability\Data Interoperability AO11\fme.exe" C:\Users\arcgis\Desktop\RefreshRainGauges.fmw
Le reste est simple, il suffit de créer une tâche basique, la partie la plus difficile était de déterminer l'heure d'exécution de la commande (je vois des données changer jusqu'à 1h UTC donc j'ai choisi 18h heure locale sur mon serveur, qui est situé en US West). Assurez-vous que la tâche s'exécutera même si arcgis n'est pas connecté, et l'utilisateur arcgis aura besoin des droits batch job (ou être administrateur, ce que je peux faire sur ma machine VM mais vous ne serez probablement pas autorisé).
Voilà, maintenance automatisée des données que je peux partager avec tout le monde ! Je termine avec une capture d'écran du journal de traitement de la synchronisation d'hier soir :
Les membres connectés peuvent publier, suivre les mises à jour, et plus encore. Nouveau ici ? Inscrivez-vous gratuitement.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.