Cet article est une mise à jour d'un blog précédent de mon collègue @BruceHarold publié il y a quelque temps. Bien que le flux de travail et les sources de données soient les mêmes, cette solution supprime tout code précédemment ajouté, grâce à la puissance du transformateur Workbench appelé HTTPCaller et de l'ArcGIS REST API.
Avec quelques modifications de la solution originale, nous allons construire une solution d'intégration web à web avec ArcGIS Online.
Je mettrai également en lumière quelques améliorations de Data Interoperability depuis la rédaction de ce blog il y a cinq ans. Avec ce blog vient une version plus récente de l'exemple fonctionnel que vous pouvez télécharger via le lien ci-dessous.
Pouvez-vous faire la différence ?
Nous avons remplacé la destination de la géodatabase fichier par ArcGIS Online. En utilisant la fonction Compare Workspace, vous pouvez voir les changements visuels sur le canevas pour vous aider à modifier un espace de travail existant. L'espace de travail Read Only à droite est l'original et le nouveau espace de travail Editable est le nouvel espace de travail. Dans la fenêtre Editable Navigator, les objets en cyan sont nouveaux, ceux en jaune sont modifiés.
La classe d'entités Observations en magenta dans l'espace de travail original est maintenant remplacée par une couche d'entités AGOL en bleu dans le nouveau.
Nous avons ajouté deux transformateurs et supprimé tous les scripts Python qui faisaient partie de l'exemple original.
Un FeatureMerger a été ajouté pour remplacer la sortie Match table et ce type d'entité Match Table est remplacé par le HTTPCaller.
Le code python qui ajoutait les pièces jointes est maintenant remplacé par une configuration du HTTPCaller appelant le point de terminaison AddAttachment REST du service d'entités ArcGIS Server.
Comparer les espaces de travail
Commencez par une connexion Web
Vous n'avez besoin de faire cela qu'une seule fois dans votre menu Tools ---> FME Options. Pour référence sur comment créer une connexion web, veuillez voir cet article. Cet article montre comment créer une connexion web pour ArcGIS Enterprise, cependant, les étapes sont les mêmes pour ArcGIS Online. Une fois que vous avez la connexion web, entrons dans le vif du sujet.
Laissez tomber le code et apprenez à configurer le HTTPCaller pour ajouter des pièces jointes
Oui, abandonnez les scripts python. Pour réutiliser l'exemple avec votre propre instance AGOL, vous devez comprendre comment configurer le HTTPCaller, en changeant ces paramètres marqués par les flèches rouges, montrés ci-dessous.
Configuration HTTPCaller pour point de terminaison AddAttachmentLe meilleur endroit pour apprendre à configurer est en lisant la page d'aide AddAttachment API. Oui, lisez la Description ou comme ils disent "lisez les petits caractères". Soyez conscient des limites, tailles, formats et autres informations pertinentes. Ce n'est pas parce que c'est sans code que c'est plug and play.
Voici l'URL de requête : https://<root>/<serviceName>/FeatureServer/<layerId>/<featureId>/addAttachment
Ci-dessous ce qui est configuré sur l'URL de requête pour cet exemple téléchargé :
https://services7.arcgis.com/eeZcUziwi5hzGEGs/ArcGIS/rest/services/r2r/FeatureServer/0/@Value(ID)/AddAttachment
Le paramètre <featureid> @Value(id) est dynamique mais le reste est codé en dur. La question est, où obtenez-vous l'URL <root> ?
L'astuce est d'aller sur la page d'élément feature AGOL, cliquez sur la couche d'entités Observations sous Layers pour ouvrir la page d'élément couche d'entités Observations et faites défiler vers le bas jusqu'à voir la section URL dans le panneau droit sous Détails.
Volet droit de l'élément couche AGOLCliquez sur le bouton View pour ouvrir la boîte de dialogue du point de terminaison REST du service d'entités.
Cliquez sur View pour ouvrir la fenêtre pop-up du service d'entités Feature Server
Lorsque la page ArcGIS REST Services Directory s'ouvre, faites défiler vers le haut et dans le coin supérieur gauche de la page, faites un clic droit sur la couche Observations et cliquez sur Copier l'adresse du lien, si vous utilisez Chrome comme navigateur.
Copie de l'URL racine plus token depuis la page du service d'entités
Cela vous donnera l'URL <root> plus le token à remplacer dans ce qui est configuré dans le HTTPCaller exemple. Comme vous allez créer une connexion web, retirez le token dans cette URL copiée. Collez cette URL dans l'URL de requête du transformateur.
Pour compléter la configuration du HTTPCaller, il y a un paramètre caché dans la section Multipart Upload du HTTPCaller, montré ci-dessous. Ce n'est pas dans les petits caractères de l'API, mais brièvement mentionné dans la page d'aide HTTPCaller.
Valeurs des paramètres requis pour formulaire multipartie
Dans la ligne attachment, où Upload Type est File Upload, vous devez configurer le type mime de la pièce jointe qui s'affiche lorsque vous cliquez sur le menu à 3 points depuis la cellule Value de cette ligne. Ce paramètre caché est par défaut application/octet-stream et s'il ne correspond pas au fichier cela fera échouer AddAttachment.
Attribut mime-type dynamique
Notez que la valeur mime-type que j'ai configurée pour le paramètre MIME-Type est en fait un attribut dynamique créé dans le flux de données. Ceci est utile lorsque vous avez plusieurs types de pièces jointes (par ex. pdf, jpg, png et autres) à charger. Alors où cet attribut est-il créé ? Cherchez-le dans AttributeManager avant le HTTPCaller. J'ai utilisé path_extension et renommé en mime-type et assigné une valeur conditionnelle basée sur l'extension.
Création de l'attribut mime-type pour permettre le téléchargement de formats spécifiques pris en charge<\/span><\/span><\/P>Assurez-vous de connaître les extensions que vous téléchargez ainsi que leurs mime-types. Pour une liste des types de fichiers pris en charge dans AGOL, veuillez consulter ce lien<\/A>.<\/P>Dois-je mettre à jour mes Upgradeable Transformers<\/STRONG><\/P>Une autre nouvelle fonctionnalité disponible est la fonction Upgrade All Transformers. La version précédente de cette fonctionnalité permettait de mettre à jour un transformateur à la fois. Remarquez dans le volet Navigator ci-dessous qu'il y a 21 transformers qui doivent être mis à jour. D'un simple clic sur le bouton et après avoir suivi quelques invites, votre espace de travail est mis à niveau. Vous pouvez également choisir de sauvegarder votre workspace ou non.<\/P>
Upgrade the transformers on your canvass<\/span><\/span><\/P>Pour exécuter cette nouvelle solution avec succès, il n'est pas nécessaire de mettre à jour ces transformers, mais c'est toujours une bonne pratique. L'exemple final ci-dessous aura tous ces transformers mis à jour vers la dernière version.<\/P>Exécution de l'espace de travail<\/STRONG><\/P>La solution est intentionnellement conçue pour exécuter deux bookmarks séparément. Avant d'exécuter un bookmark, assurez-vous d'activer le cache.<\/P>Le Bookmark One crée le service d'entités Observations et écrit ses entités. Vous exécutez un bookmark en cliquant et en survolant le haut du bookmark jusqu'à ce que de petites icônes apparaissent en haut. Cliquez sur le bouton Run Just Contained (lecture).<\/P>
Bookmark One - Write Observation features<\/span><\/span><\/P> <\/P>Avant d'exécuter Bookmark Two, nous devons retourner à la couche d'entités nouvellement créée dans AGOL et cliquer sur le curseur Enable Attachment pour le régler sur True. Vous devez faire cela car le paramètre Enable attachment de la couche d'entités Observations doit être réglé sur True avant d'exécuter Bookmark Two. Comme l'outil crée le service d'entités dans Bookmark One, Enable attachment sera réglé par défaut sur False. <\/P>
Enable attachments<\/span><\/span><\/P> Avec les attachments activés, nous pouvons exécuter Bookmark two pour ajouter des attachments liés à la couche d'entités Observations.<\/SPAN><\/P> <\/P>
Bookmark two - Upload attachments<\/span><\/span><\/P> <\/P>Notez que la prochaine fois que vous exécuterez la solution et que le Feature Type Handling<\/STRONG> est réglé sur Truncate Existing,<\/EM> Enable Attachment sera toujours True.<\/P>
Feature Type Handling set to Truncate Existing for future runs<\/span><\/span><\/P> <\/P>Dans la solution originale, Enable Attachment est exécuté avec le script Python shutdown. Vous pouvez modifier cette solution pour inclure l'automatisation d'Enable Attachment en ajoutant le point de terminaison rest UpdateDefinition, mais je préfère garder cette solution simple et délibérée. <\/P>Je vous laisse l'amélioration à vous. Si la planification et une exécution unique correspondent à votre flux de travail, vous aurez probablement besoin de cette amélioration. <\/P>Astuce : Si vous souhaitez faire l'automatisation complète, l'image ci-dessous sera un bon point de départ.<\/P>
Adding Enable Attachment to your solution<\/span><\/span>
Visualisez votre travail<\/STRONG>
Mon application préférée pour visualiser les résultats est le modèle Instant App Attachment Viewer. Comme par magie, toutes mes pièces jointes apparaissent sur une carte interactive et un visualiseur de photos.
The results of the solution shown using the Instant App Attachment Viewer template
Mot final
Avant de commencer à explorer vos partages réseau et disques durs à la recherche d’images, veuillez noter que les attachments ont des coûts de stockage dans AGOL et je serais négligent si je ne vous informais pas des coûts associés. Voici le guide pour
comprendre les crédits AGOL.
Bien qu’il existe des modèles établis pour l’automatisation et l’intégration des données avec attachments, chaque solution doit prendre en compte plusieurs facteurs. J’ai détaillé certains de ces facteurs dans cet article. Pour les géodatabases, la solution originale avec le script Python Shutdown reste la meilleure approche. La solution AGOL est plus simple et fonctionne bien pour visualiser les données avec attachments. Alors choisissez bien votre épice.
C’est tout, vous pouvez commencer à explorer vos disques et charger vos attachments dans AGOL.