Suite

Comment exécuter par lots un espace de travail FME sur la base de fonctionnalités ?

Comment exécuter par lots un espace de travail FME sur la base de fonctionnalités ?


Pas sûr du titre de ma question...

Mon but est d'exécuter un espace de travail entier pour chaque fonctionnalité contenue dans un lecteur.

En python, cela ressemblerait à :

pour s dans bus_stops : run_workspace(s)

Fondamentalement, mon espace de travail fonctionne comme suit :

  • lit 1 arrêt de bus
  • lit un réseau routier
  • calcule le coût du réseau pour l'arrêt de bus d'entrée (NetworkCostCalculator)
  • sorties contours

L'espace de travail fonctionne si l'entrée est limitée à 1 arrêt de bus (une source uniquement pour NetworkCostCalculator).

À présent, j'ai divisé mes arrêts de bus d'entrée en autant de types de fonctionnalités et j'exécute mon espace de travail par lots, mais je suis sûr qu'il existe un moyen plus efficace d'y parvenir.


vous pouvez le faire dans un transformateur pythonCaller

voir la référence de l'API python fmeobjects : http://docs.safe.com/fme/html/FME_Objects_Python_API/fmeobjects.FMEWorkspaceRunner-class.html

import fmeobjects for s in bus_stops runner = fmeobjects.FMEWorkspaceRunner() #workspace est un chemin et les paramètres sont une valeur clé dict runner.runWithParameters(workspace, parameters)

Avez-vous essayé d'utiliser un Group-By dans le NetworkCostCalculator ? c'est-à-dire que vous vous regroupez sur un identifiant d'arrêt de bus et que le transformateur fonctionne une fois par fonction d'arrêt de bus

Sinon, comme indiqué ci-dessus, le WorkspaceRunner est votre ami ici.

Edit : En fait, maintenant j'y pense, le Group-By serait plus efficace. Il ne devrait avoir besoin du réseau qu'une seule fois pour tous les arrêts de bus - alors que si vous le faites par lots (soit en Python ou dans un WorkspaceRunner), vous lisez les fonctionnalités du réseau une fois par arrêt de bus.


Commander Raccourci clavier - PC Raccourci clavier - Mac Une fonction
annuler Ctrl+z commande (touche)+z Inverse l'action la plus récente dans un espace de travail.
Refaire Ctrl+y Maj+commande (touche)+z Répète l'action la plus récente que vous avez annulée dans un espace de travail.
Couper Ctrl+x commande (touche)+x Coupe une sélection et l'envoie dans le presse-papiers.
Copie Ctrl+c commande (touche)+c Copie une sélection et l'envoie dans le presse-papiers.
Pâte Ctrl+v commande (touche)+v Colle une sélection du presse-papiers.
Effacer Suppr (touche) supprimer (clé) Supprime une sélection.
Mettre au premier plan/Envoyer à l'arrière     Amène les objets en avant sur le canevas ou les envoie derrière d'autres objets.
Aligner horizontalement/verticalement     Aligne les objets sélectionnés sur le canevas les uns avec les autres, selon l'orientation spécifiée.
Diffuser     Espace régulièrement les objets sélectionnés sur la toile les uns des autres, soit horizontalement, soit verticalement.
Tout sélectionner Ctrl+a commande (touche)+a Sélectionne tout le contenu sur le canevas.
Démarrer la dictée (Mac uniquement)   fn+fn Permet la dictée.
Emoji & Symboles (Mac uniquement)   ^+commande (touche)+espace Ouvre un sélecteur d'emoji.

Définit les propriétés de zoom par défaut.

Localisez l'outil correspondant Zoom Mini-bar dans FME > Options > Toolbar.

L'outil dispose d'un curseur, de boutons +/- et d'une zone de saisie de texte pour vous permettre de saisir une valeur de zoom. Il comprend également un bouton "zoomer sur les étendues" pour adapter l'espace de travail à la zone de canevas disponible.

Affiche la boîte de dialogue Grille et repères :

  • Afficher la grille : affiche une grille sur le canevas.
  • Aligner sur la grille : accroche les objets au coin supérieur gauche le plus proche de la grille lorsqu'ils sont déplacés.
  • Couleur de la grille : définit la couleur des lignes de la grille.
  • Taille de la grille horizontale : la largeur (distance horizontale) entre les lignes verticales de la grille, en unités de canevas.
  • Taille de la grille verticale : la hauteur (distance verticale) entre les lignes horizontales de la grille, en unités de canevas.
  • Gravité de la grille : si Aligner sur la grille est coché, il s'agit de la distance à partir d'une ligne de grille à laquelle l'alignement se produit. Pour garantir que les objets s'alignent toujours sur les lignes de la grille, définissez au moins la moitié de la taille de la grille.
  • Afficher les guides : lorsque vous faites glisser des objets sur le canevas, ce paramètre affiche des marqueurs de guide verticaux et horizontaux sur les objets proches pour faciliter l'alignement.
  • Accrocher aux guides : accroche les objets déplacés à la position horizontale ou verticale d'un marqueur de guide à proximité.
  • Couleur du guide : définit la couleur des marqueurs de guide.
  • Sensibilité du guide : distance maximale entre les objets, en unités de canevas, pour l'affichage des marqueurs de guide.
  • Gravité du guide : distance à partir d'un marqueur de guide à laquelle l'accrochage se produit.

Terminologie FME

Éléments individuels d'un type de fonction de lecteur ou de rédacteur. Dans cet exemple, le type d'entité est Zone et les attributs sont Name , Owner et Category .

Action de restructurer la composante non spatiale d'une entité FME : les attributs relatifs à la géométrie physique subissent un changement qui produit une sortie différente. Voir Transformation géométrique.

L'ajout d'un point d'arrêt à une connexion à un espace de travail indique à Workbench d'inspecter les fonctionnalités à cet emplacement. L'exécution d'un espace de travail avec des points d'arrêt est un moyen utile de déboguer un espace de travail.

Chaque lecteur et rédacteur d'un espace de travail se voit attribuer un système de coordonnées. FME essaiera automatiquement de déterminer le système de coordonnées correct à partir du jeu de données, pour les formats qui stockent les informations du système de coordonnées (par exemple, les fichiers de formes). Les systèmes de coordonnées peuvent être définis dans le volet Navigateur.

Les connexions de base de données offrent un moyen pratique et sécurisé de stocker et de réutiliser les paramètres de connexion à un service de base de données.

Un outil FME Desktop pour afficher les données dans n'importe quel format pris en charge par FME à des fins de vérification et de débogage.

Un service FME Server qui accepte et exécute les demandes de transformation, comme spécifié par un espace de travail, et renvoie les résultats sous forme de flux de données.

Un service FME Server qui permet aux utilisateurs de télécharger des données source ou d'autres fichiers pour exécuter des espaces de travail.

Composant de FME qui traite les demandes de travail en exécutant des espaces de travail.

Le composant FME Server qui stocke les données de travail et de référentiel.

Une directive du serveur FME qui spécifie un niveau de priorité pour l'exécution d'un travail dans la file d'attente des travaux, généralement entre 1 (le plus élevé) et 100 (le plus bas).

Un mécanisme de serveur FME pour distribuer les travaux à des moteurs spécifiques.

Un service FME Server qui accepte et exécute les demandes de travaux d'espace de travail.

Un service FME Server qui accepte et exécute les demandes de transformation, comme spécifié par un espace de travail, et renvoie les résultats sous forme de lien réseau KML.

Affiche les résultats de la traduction. Les informations comprennent :

ERREUR : un problème a entraîné l'arrêt du traitement par FME.

AVERTIR : un problème de traitement mineur. FME terminera la traduction, mais la sortie peut être affectée et doit être vérifiée.

INFORMER : une information qui peut aider à déterminer si leur traduction a été traitée correctement.

STATS : informations sur le nombre d'entités lues à partir de la source et écrites dans les ensembles de données de destination.

Avant que FME Workbench n'introduise les espaces de travail (en 2001), toutes les traductions étaient effectuées à l'aide de fichiers de mappage.

Un fichier de mappage (fichier .fme) est une série de commandes ASCII que FME utilise pour exécuter une traduction. Les fichiers de mappage peuvent toujours être exécutés via le FME Quick Translator, en utilisant des fonctions et des usines (au lieu de transformateurs) pour traiter les données.

Une liste structurée d'objets et de paramètres qui représentent et contrôlent tous les composants sur le canevas (espace de travail).

Un message généré par le service de notification du serveur FME.

Un service FME Server qui envoie des données vers et depuis FME Server sous forme de messages lorsqu'un événement se produit.

Lorsqu'il est utilisé dans un extrait de code (par exemple, une instruction SQL) ou lorsqu'il fait référence à un pointeur NULL, utilisez NULL.

Le composant de FME Server qui offre une tolérance aux pannes et garantit que le noyau et les moteurs de FME Server sont toujours opérationnels.

Un composant du service de notification du serveur FME qui reçoit le contenu des clients via un protocole pris en charge et fournit le contenu au serveur FME sous la forme d'une notification.

Les paramètres du lecteur contrôlent la manière dont FME  lit les données. Le bouton Paramètres du lecteur est accessible dans les boîtes de dialogue Ajouter un lecteur et Générer un espace de travail. Les paramètres sont visibles dans le navigateur Workbench une fois que FME a généré l'espace de travail.

Un conteneur logique dans FME Server pour stocker des groupes d'éléments associés, y compris des espaces de travail, des données source, des formats personnalisés, des transformateurs personnalisés et des modèles.

Une collection de fichiers FME Server qui sont utilisés pour exécuter et déboguer des espaces de travail, et effectuer d'autres tâches administratives, et qui peuvent être partagés entre les espaces de travail à travers les référentiels.

Un service FME Server qui fournit un mécanisme de communication sous-jacent basé sur REST pour les applications de service client.

Un groupe de sécurité auquel chaque utilisateur de FME Server doit appartenir, et qui définit les permissions de ses utilisateurs.

Une directive FME Server pour exécuter un travail en continu jusqu'à ce qu'il soit explicitement annulé.

Une tâche dans FME Server qui spécifie l'exécution d'un espace de travail à des moments précis dans le futur de manière répétitive ou non répétitive.

Un composant du service de notification du serveur FME qui reçoit les notifications du serveur FME et fournit le contenu aux clients via un protocole pris en charge.

Une directive du serveur FME qui spécifie combien de temps un travail reste dans la file d'attente des travaux avant d'être supprimé sans avoir été exécuté.

Le temps de traitement de FME est la durée pendant laquelle FME traitait activement (et non le temps que l'espace de travail a pris pour se terminer).

Les heures de début et de fin absolues diffèrent souvent du temps de traitement FME car les processus non-FME, tels qu'une requête de base de données, s'ajoutent au temps absolu pris sans s'ajouter au temps de traitement FME.

Un service FME Server qui permet aux utilisateurs de générer des jetons de sécurité à l'aide d'un nom de compte et d'un mot de passe.

Un mot-clé du service de notification du serveur FME qui agit comme le destinataire d'un éditeur ou l'origine d'un abonné.

Le composant FME Server qui exécute les services Web FME Server, l'interface utilisateur Web, l'API REST et d'autres clients Web.

Les connexions de service Web offrent un moyen pratique et sécurisé de stocker et de réutiliser les paramètres de connexion à un service Web.

Application Web pour l'administration de FME Server et l'exécution d'espaces de travail à partir de FME Server.

Les paramètres Writer contrôlent la manière dont FME écrit les données. Le bouton Paramètres du rédacteur est accessible dans les boîtes de dialogue Ajouter un rédacteur et Générer un espace de travail. Les paramètres sont visibles dans le navigateur Workbench une fois que FME a généré l'espace de travail.


Exercice : Mises à jour quotidiennes de la base de données : Exécution d'un espace de travail

Pour les exercices de ce chapitre, vous êtes un analyste technique du service SIG de votre ville locale. Vous avez une grande expérience de l'utilisation de FME Desktop et votre service étudie actuellement FME Server pour évaluer ses capacités.

Il existe de nombreux départements dans la ville, et l'une de vos tâches consiste à prendre les données de chaque département et à les fusionner en une seule base de données d'entreprise.

Étant donné que chaque service produit ses jeux de données dans un format et un style différents, vous utilisez FME pour cette tâche et vous l'effectuez chaque semaine.

Après avoir créé un espace de travail pour effectuer cette traduction et l'avoir publié sur FME Server, vous souhaitez maintenant vous connecter au serveur pour exécuter cet espace de travail.

1) Connectez-vous au serveur
Pour vous connecter à l'interface du serveur, sélectionnez l'option Interface Web dans le menu Démarrer ou - dans votre navigateur Web - entrez l'adresse de votre serveur FME.

Cela ouvrira l'écran de connexion de l'interface Web pour le serveur FME utilisé. Ajoutez cette adresse Web à vos favoris, car vous utiliserez ce lien assez souvent.

2) Connectez-vous au serveur
Dans la boîte de dialogue Connexion utilisateur, saisissez un nom d'utilisateur et un mot de passe pour votre compte FME Server. Une combinaison nom d'utilisateur/mot de passe courante pour une installation de formation est admin/admin

3) Examiner l'interface utilisateur
Il s'agit de votre principale méthode d'interaction avec FME Server.

Notez que l'une des fenêtres est intitulée Derniers espaces de travail publiés. Ici, vous devriez pouvoir trouver l'espace de travail publié dans l'exercice 1 :

Cliquer sur l'icône en forme d'étoile définira cet espace de travail comme favori, le rendant disponible sous le panneau de la liste des favoris :

Nous allons exécuter l'espace de travail sous peu, mais nous devrions peut-être d'abord nous assurer que le serveur FME fonctionne correctement (le fait que nous puissions nous connecter est un bon signe) et que nous avons une licence et que les moteurs fonctionnent.

4) Examiner l'interface utilisateur
Cliquez sur Engines & Licensing dans la partie ADMIN du menu de l'interface. Cela ouvrira la section des licences. Vous devriez voir un message vous informant que FME Server est sous licence et une liste des moteurs disponibles :

ASTUCE
Si votre machine n'a pas de licence ou s'il manque des moteurs, consultez votre instructeur pour obtenir des conseils de dépannage.

5) Exécuter l'espace de travail
Cliquez sur le bouton FME Server tout en haut à gauche de l'interface. Cela vous ramènera à la page d'accueil de l'interface du serveur.

Cliquez sur l'espace de travail publié dans le panneau Espace de travail favori pour ouvrir la page Web de cet espace de travail.

La page de l'espace de travail affiche quelques options, dont les premières concernent le référentiel, l'espace de travail et le service. Ceux-ci devraient déjà être remplis avec des valeurs :

Étant donné que cet espace de travail contient quelques paramètres publiés, ils sont également répertoriés, mais nous pouvons les ignorer pour le moment (nous traiterons sous peu des ensembles de données sources, etc.).

Alors, cliquez simplement sur le bouton Exécuter pour exécuter l'espace de travail. L'espace de travail s'exécutera jusqu'à la fin et un message à cet effet apparaîtra :

6) Examiner la page des offres d'emploi
Cliquez sur Travaux dans le menu principal. Une liste des tâches précédemment exécutées s'ouvrira, y compris celle que nous venons d'exécuter :

Notez quelques points intéressants de l'interface :

  1. Il existe des liens pour afficher les tâches terminées (par défaut), les tâches en file d'attente et les tâches en cours d'exécution.
  2. Il existe une liste déroulante qui vous permet de filtrer les emplois affichés.
  3. Les travaux qui réussissent et qui échouent sont différenciés à l'aide d'une icône différente.
  4. Les travaux sont affichés dans l'ordre chronologique dans lequel ils se sont terminés (qu'ils soient réussis ou non).

Cliquez sur votre travail pour inspecter les résultats plus en détail. Vous pourrez voir les détails du travail, y compris l'heure à laquelle il a été soumis, mis en file d'attente, démarré, terminé et livré la demande exacte faite au serveur FME et les résultats complets de la traduction. Vous pouvez également cliquer sur le bouton Afficher le journal pour inspecter le fichier journal de traduction FME.

dit le chef de la police Webb-Mapp.
N'oubliez pas que cet espace de travail n'a écrit aucune donnée, il l'a seulement envoyé à un écrivain Null. Donc, pour l'instant, pour afficher les résultats, recherchez le résumé dans le fichier journal.
Exercice avancé
Si vous voulez voir un travail dans un état différent, nous devons ralentir un peu cet espace de travail.

Ouvrez l'espace de travail dans FME Workbench et ajoutez un transformateur Decelerator (par exemple, avant le Reprojector). Réglez-le pour retarder l'espace de travail de cinq (5) secondes par fonction. Republiez l'espace de travail sur FME Server et réexécutez-le.


Publication des types d'entités à lire

La boîte de dialogue de publication de ce paramètre est différente de celle des formats et des systèmes de coordonnées :

En effet, FME peut analyser automatiquement l'espace de travail et fournir une liste des types de fonctionnalités disponibles. Il n'est pas nécessaire de configurer manuellement la liste ou même de les ajouter semi-automatiquement avec un importer option.

De plus, l'utilisation d'un autre nom d'affichage permet à l'auteur de publier d'autres noms (par exemple, Road Centrelines au lieu de RdCtrLns) de la même manière que le paramètre 𠇌hoice with Alias”.


Diffusion de messages

Le streaming de messages est une technique en temps réel qui implique un flux continu d'informations.

Pour nos besoins, 𠇌ontinuous” signifie que les messages arrivent au serveur FME à un rythme plus rapide que le service de notification ne pourrait gérer, par exemple, plus d'un message par seconde.

À des taux plus rapides que cela, le service de notification n'a pas le temps de démarrer et d'exécuter un espace de travail pour traiter chaque message. Cependant, un flux de messages utilise un espace de travail qui s'exécute en permanence et n'a pas besoin d'être démarré pour chaque message, et peut donc traiter les données à un rythme beaucoup plus rapide.

Lorsqu'il est utilisé de cette manière, nous l'appelons High Capacity Message Streaming, car des milliers de messages peuvent être traités chaque seconde.

Éléments d'un flux de messages

Comme les notifications, les flux de messages peuvent être soit dans FME, soit hors de FME, ou les deux :

Cependant, plutôt que d'utiliser le service de notification avec les lecteurs et les écrivains, les flux de messages sont gérés par un certain nombre de transformateurs. Un espace de travail est configuré pour fonctionner en continu et les transformateurs qu'il contient écoutent et envoient des messages sur un certain nombre de protocoles différents.

Les principaux protocoles pris en charge incluent :

Un espace de travail contenant l'un des transformateurs Message Streaming s'exécutera en continu car le transformateur lui-même est conçu pour s'exécuter en continu.

Destinataire les transformateurs émettront une fonctionnalité en réponse à un message entrant, mais reviendront ensuite à attendre d'autres messages. Même si aucun message n'est disponible instantanément, il ne se terminera pas.

Expéditeur les transformateurs enverront un message en réponse à une fonctionnalité entrante, mais reviendront ensuite pour attendre d'autres fonctionnalités. Encore une fois, il ne se terminera pas tant que l'espace de travail ne sera pas délibérément arrêté.

Architecture de diffusion de messages

Une architecture Message Streaming qui reçoit et envoie des messages ressemble à ceci :

Un flux de messages est lu dans l'espace de travail via l'un des transformateurs disponibles, par exemple le JMSReceiver.

Les données sont traitées par l'un des transformateurs FME disponibles, en fonction des besoins de la configuration.

Un flux de messages est envoyé hors de l'espace de travail via l'un des transformateurs disponibles, par exemple le TCPIPSender.

Les composants de base de données dans ce diagramme sont facultatifs, mais probablement habituels.

Les données lues à partir de la base de données sont destinées à être utilisées pour traiter le message entrant. Par exemple, le message représente peut-être une caractéristique ponctuelle (peut-être un emplacement de véhicule) qui est utilisée pour filtrer les données de la base de données (peut-être les conditions de circulation).

Les données écrites dans la base de données servent généralement à enregistrer un flux d'informations sur les messages. Par exemple, peut-être que chaque message entrant représente une caractéristique ponctuelle (un coup de foudre) qui doit être enregistrée dans une base de données.

Mme Analyst dit …
“ L'écriture dans une base de données nécessite que l'intervalle de transaction soit défini sur 1. Sinon, les messages ne seront pas validés à mesure qu'ils arrivent.”
Exercice 4E Diffusion de messages
Scénario Fournisseur de données de photos aériennes
Données Orthophotos GeoTiff
But général Application de carte Web avec WebSockets
Démontre WebSockets
Démarrer l'espace de travail C:FMEData2015WorkspacesServerAuthoringExercise4e-­�gin.fmw C:FMEData2015WorkspacesServerAuthoringExercise4e-­�gin-­�vanced.fmw
Espace de travail terminé n / A

Cet exercice utilise le service WebSockets de FME Server et les transformateurs WebSockets pour alimenter une application Web Map. La méthode illustrée ici convient aux messages à haute fréquence dépassant 1 message par seconde.

1. Ouvrez l'espace de travail de démarrage

Dans FME Workbench, ouvrez l'espace de travail de départ Exercise4e-Begin.fmw

Notez qu'il contient deux transformateurs WebSocket – un pour la réception et un pour l'envoi. L'espace de travail écoutera les informations provenant du canal WebSockets. Les données entrantes seront traitées avec un décalage dans leurs coordonnées, puis renvoyées. L'espace de travail s'exécutera en continu, traitant chaque message entrant, jusqu'à ce qu'il soit arrêté manuellement.

2. Mettre à jour le nom du serveur

La première tâche consiste à mettre à jour le nom d'hôte du serveur pour qu'il corresponde à celui que vous utilisez.

Recherchez le paramètre publié server_url dans la fenêtre du navigateur. Double-cliquez sur le paramètre pour l'ouvrir afin de l'éditer et remplacez l'hôte par votre propre nom d'hôte et port FME Server. Il aura besoin d'un préfixe “ws” pour désigner le protocole WebSockets.

Si vous travaillez sur la même machine que votre serveur FME, vous pouvez utiliser localhost par exemple : ws://localhost:7078/websocket

3. Examinez les transformateurs WebSocketReceiver et WebSocketSender

Ouvrez la boîte de dialogue des paramètres du transformateur WebSocketReceiver.

Notez que l'URL du serveur est obtenue à partir du paramètre publié que vous venez de mettre à jour.

Cliquez sur le bouton […] pour ouvrir le paramètre de préambule de connexion.

Cela signifie que le transformateur établira une connexion au serveur FME spécifié et écoutera les fonctionnalités provenant d'un flux WebSocket appelé “points”.

Si vous ouvrez les paramètres du transformateur WebSocketSender, vous verrez qu'il renvoie les fonctionnalités à l'aide d'un identifiant de flux appelé 𠇍isp_pnts”.

Les données renvoyées via le canal WebSocket sont les coordonnées lat/long modifiées de l'entité en cours de traitement.

4. Démarrez l'espace de travail

Exécutez l'espace de travail et notez les messages de connexion initiaux imprimés dans la fenêtre du journal. Notez également que l'espace de travail continue de s'exécuter, en attente de messages via le flux WebSocket qu'il écoute.

5. Modifier l'application de carte Web

Afin de tester cette configuration, une application de cartographie Web de base a été fournie dans C:FMEData2015ResourcesWebSockets

Quelques mises à jour mineures seront nécessaires avant de pouvoir l'utiliser. Dans un éditeur de texte, ouvrez le fichier HTML principal C:FMEData2015ResourcesWebSocketswwwindex.html

Trouvez les deux lignes ci-dessous qui définissent les connexions WebSockets hôtes pour l'application. Si vous utilisez localhost, vous pouvez le laisser tel quel, sinon remplacez localhost par votre propre nom d'hôte.

var sendconn = new WebSocket(&aposws://localhost:7078/websocket&apos) var rcvconn = new WebSocket(&aposws://localhost:7078/websocket&apos)

Trouvez maintenant le bloc de code commençant par le commentaire

/ se connecter au flux d'entrée du serveur/

Notez que l'application Web envoie des points au serveur FME en utilisant l'ID de flux “points” – le même que celui que l'espace de travail écoute actuellement.

Si vous regardez, vous trouverez également un bloc de code qui écoute les données à l'aide de l'ID de flux 𠇍isp_pnts”

Enregistrez le fichier index.html si vous avez effectué des modifications.

6. Exécutez l'application Web

Ouvrez le fichier d'index que nous venons d'inspecter dans un navigateur Web. Au fur et à mesure que la carte Web se charge, vous verrez deux sections de messages enregistrant les messages envoyés vers et depuis l'espace de travail FME :

Cliquez sur n'importe quel point de la carte.

Notez qu'immédiatement le point est enregistré et renvoyé avec un décalage aléatoire appliqué (peu importe ce qui se passe ici, juste le fait que quelque chose le fasse).

Notez également que les messages vers et depuis l'espace de travail sont enregistrés. Si vous revenez à l'espace de travail, vous remarquerez que non seulement il est toujours en cours d'exécution, mais qu'une fonctionnalité a été enregistrée telle qu'elle a été reçue via WebSocketReceiver, déplacée et transmise via WebSocketSender.

7. Publier l'espace de travail sur le serveur FME

Jusqu'à présent, nous avons juste exécuté l'espace de travail sur FME Desktop, mais il peut également être exécuté sur FME Server.

Arrêtez l'espace de travail dans FME Desktop s'il est toujours en cours d'exécution et publiez l'espace de travail sur FME Server dans le référentiel de formation. Enregistrez simplement l'espace de travail auprès du service de soumission d'emplois.

8. Exécutez le workflow WebSockets sur le serveur FME

Dans l'interface utilisateur Web, accédez à l'espace de travail dans son référentiel, choisissez l'expéditeur du travail et cliquez sur Exécuter

L'espace de travail continuera à fonctionner indéfiniment et la fonctionnalité de récupération des tâches du serveur FME redémarrera la tâche en cas d'échec.

Essayez de placer quelques points supplémentaires sur l'application de carte Web pour confirmer que les points sont déplacés. Cette fois, le processus est effectué par FME Server.

Revenez à l'interface utilisateur Web et cliquez sur le menu Gérer > Travaux, puis cliquez sur le bouton

Onglet Exécution où vous verrez votre espace de travail en cours d'exécution.

Cliquez sur le travail, puis sur l'onglet Journal. Vous verrez le journal de l'espace de travail en cours d'exécution et pourrez l'examiner pour voir vos derniers clics sur la carte passant par l'espace de travail en tant qu'entités.

Le chef de la police Webb-Mapp dit …
“La possibilité d'afficher un fichier journal pendant que la traduction est toujours en cours est une nouvelle fonctionnalité de FME Server 2014”

Tâches avancées (exercice 4f)

L'utilisation d'un espace de travail fonctionnant en continu présente des avantages et des inconvénients.

Du côté positif, il peut traiter de nombreux messages – plusieurs milliers – par seconde. Cependant, il utilise également un moteur FME Server sur une base continue.

Si le même workflow était configuré pour s'exécuter à l'aide du service de notification, il n'utiliserait pas un moteur FME à tout moment, mais il ne conviendrait pas aux systèmes avec plusieurs messages par seconde.

En tant que tâche facultative, essayons de configurer le système pour utiliser les notifications à la place si WebSockets.

1. Annuler le travail de l'exercice ci-dessus

Sous Travaux > En cours d'exécution dans l'interface utilisateur Web, cochez la case en regard du travail et appuyez sur le bouton Annuler. Cela arrêtera l'exécution du travail existant, car nous n'en avons plus besoin.

2. Ajouter un sujet

Dans la partie Notification de l'interface utilisateur Web, ajoutez un sujet nommé points.

3. Ajouter une publication Web Sockets

Ajoutez maintenant une nouvelle publication avec les paramètres suivants :

Nom de la publication MapPoints Sujets à publier Vers des points Protocole WebSocket URL cible ws://localhost:7078/websocket (ou utilisez votre propre hôte) ID de flux sample_stream_in

4. Modifier l'application de carte Web

Dans un éditeur de texte, ouvrez le fichier

Mettez en commentaire le message de connexion d'envoi par défaut (ligne 86) et décommentez celui ci-dessous :

5. Ouvrez l'espace de travail avancé

Ouvrez l'espace de travail Exercise4e-Begin-WebSockets-Advanced.fmw et modifiez le paramètre server_url si nécessaire.

Publiez cet espace de travail sur FME Server et enregistrez-le auprès du service de notification.

Dans les paramètres du service, définissez l'espace de travail pour vous abonner aux points de sujet et assurez-vous que le lecteur de notification est défini sur le lecteur TEXTLINE.

Cliquez sur OK pour fermer la boîte de dialogue et sur Publier pour terminer la publication de l'espace de travail.

6. Utilisez l'application Web en mode notification

Rechargez l'application Web dans votre navigateur ou rouvrez simplement le fichier index.html.

Cliquez sur certains points de la carte pour vous assurer qu'ils sont traités et décalés.

Examinez l'historique des travaux dans l'interface utilisateur Web. Vous verrez qu'un travail est exécuté à chaque fois que vous cliquez.


Formats

FME prend généralement en charge plus de 325 formats de fichiers, et ce nombre est en constante augmentation. le nombre de formats pris en charge varie selon l'édition que vous achetez. Les formats de base sont déjà pris en charge dans l'édition de base la plus basse (ESRI SHP, MapInfo TAB, AutoCAD DWG / DXF, Microstation DGN V7 et V8, KML, etc.). Consultez la liste des formats pris en charge ou accédez à la liste complète.

Édition de base

  • Esri SHP
  • ONGLET Info Carte
  • AutoCAD DWG/DXF
  • Microstation DGN V7 et V8
  • KML
  • et plus

Éd. professionnelle.

  • Esri SHP
  • ONGLET Info Carte
  • AutoCAD DWG/DXF
  • Microstation DGN V7 et V8
  • KML
  • GML
  • RIAN
  • INSPIRER
  • Microsoft Excel
  • Intergraphe MGE
  • et plus

Édition Esri

  • Esri SHP
  • Esri ArcSDE
  • Couche ArcGIS Esri
  • Couverture Esri ArcGIS
  • Géodatabase Esri (ArcSDE)
  • ONGLET Info Carte
  • AutoCAD DWG/DXF
  • Microstation DGN V7 et V8
  • KML
  • GML
  • RIAN
  • INSPIRER
  • Microsoft Excel
  • Intergraphe MGE
  • et plus

Édition de base de données

  • Esri SHP
  • Esri ArcSDE
  • Couche ArcGIS Esri
  • Couverture Esri ArcGIS
  • Géodatabase Esri (ArcSDE)
  • ONGLET Info Carte
  • AutoCAD DWG/DXF
  • Microstation DGN V7 et V8
  • KML
  • GML
  • RIAN
  • INSPIRER
  • Microsoft Excel
  • Intergraphe MGE
  • Oracle spatial
  • Microsoft SQL Server Spatial
  • Teradata
  • et plus

Rassembler les données dans un format unifié

Mon histoire:
Si vous vous en souvenez, les couches identifiées par la State College Borough Water Authority sur leur liste de souhaits SIG provenaient de nombreuses sources. Nous avons ajouté le GPS, les données des écoles, les données forestières, les données du comté du centre et le dessin CAO. Ceux-ci ont été importés à partir d'un certain nombre de sources et comprennent de nombreux types de données différents. Maintenant, nous souhaitons transmettre le projet, et pour ce faire, nous allons leur donner une source de données unifiée.

B. Charger les données dans FME Workbench

Workbench est le véritable lieu de travail du package FME. Il dispose d'un système de gestion de base de données de qualité industrielle optimisé pour les ensembles de données spatiales. La même chose peut être obtenue en utilisant ArcMap et ArcCatalogue. Pour cela dans ces packages chaque donnée devra être traitée séparément et ce n'est qu'une seule opération. Dans Workbench, l'action peut être enregistrée et réexécutée en fonction des besoins. Workbench conserve également de nombreux fichiers journaux afin que les actions et les flux de travail puissent être enregistrés et documentés.

  1. Ouvrez FME Workbench (si vous rencontrez un problème d'assistance, instructeur de coursr, et non FME, est la personne à contacter).
  2. Faites glisser le fichier de forme des parcelles de construction dans l'espace de travail ou utilisez le bouton ou la boîte de dialogue Ajouter un lecteur.
  3. Cliquez sur le bouton ou le menu Ajouter un rédacteur et accédez à un répertoire et configurez Esri Geodatabase, une géodatabase personnelle basée sur un fichier, nommez la géodatabase "SCBWAGIS"
  4. Ajoutez une fonctionnalité et définissez une fonctionnalité. Nommez la variable en quelque chose de descriptif, par ex. "Construire des polygones de parcelle."
  5. Définissez la géométrie de l'entité en fonction de la géométrie entrante dans ce cas, des "polygones".
  6. Connectez-y la flèche de workflow. (Pour définir une destination, il n'y a pas de bouton ou de menu déroulant sur l'application. Recherchez la petite boîte jaune et la flèche verte pointant vers la droite. C'est le bouton qui vous amènera à l'endroit où vous allez pour définir la destination pour les couches de bâtiments et de rues vers la base de données FileBasedGeodatabase, faites-le simplement glisser.)
  7. Faites la même chose pour Streets. Le flux de travail consiste à glisser dans un ensemble de données, à définir une destination dans l'enregistreur et à connecter les deux avec une flèche.
  8. Continuez à ajouter des sources de données et à définir les connexions à la géodatabase selon la première connexion. .
  9. Exécutez le modèle pour remplir la géodatabase (une fois exécuté, il aura le nombre d'entités en tant qu'étiquette sur la ligne de flèche (voir Figure 8.1, ci-dessus).
  10. Enregistrez l'espace de travail FME afin qu'il puisse être réexécuté si les données sont mises à jour.
  11. Documentez votre travail, enregistrez le fichier journal de FME avec la géodatabase. Enregistrez toutes les métadonnées que vous avez reçues pour les couches que vous avez incluses (dans ce cas, il n'y en aura pas). Vous devrez créer des métadonnées s'il n'y en a pas, faites-le pour l'une des couches uniquement à l'aide du créateur de métadonnées Esri dans ArcCatalogue.

Regardez autour de vous dans FME et vous verrez de nombreuses fonctionnalités que nous n'avons pas le temps d'examiner, mais vous pouvez sélectionner, sous-ensemble, transformer, généraliser, simplifier et modifier les données au fur et à mesure de leur chargement. Cela peut être particulièrement utile si vous transférez des données à partir d'un autre programme. C'est aussi le moment de généraliser les données à une échelle similaire. La répétabilité de ces programmes est vraiment utile si vous recevez régulièrement des données d'une autre source. Par exemple, le service des travaux dispose de données sur les bâtiments détenus et contrôlés par le gouvernement et le service de planification a des informations sur les nouveaux bâtiments et vous avez également des données sur les parcelles. Ces différents départements peuvent vous envoyer de nouvelles données sur une base de mise à jour ou peuvent envoyer une mise à jour hebdomadaire des données. Vous devez les intégrer chaque semaine pour vous assurer que vous travaillez sur les mêmes données. Ce serait bien si toutes les données étaient dans le même format, mais comme elles ont des sources différentes, elles ne seront probablement pas standardisées. Si vous avez beaucoup d'interactions avec des données basées sur la CAO qui ne sont pas en coordonnées géographiques mais dans des unités spatiales CAO arbitraires, il est parfois préférable de créer une projection CAO personnalisée afin qu'ArcGIS sache comment les reprojeter, plutôt que de les transformer. La projection personnalisée prend une projection plate comme UTM, puis fournit un décalage personnalisé (False Easting et False Northing ) pour l'aligner. Un index de mise à l'échelle personnalisé peut également être nécessaire pour garantir une échelle similaire. Cela vaut vraiment la peine si vous avez beaucoup de dessins CAO dans les mêmes coordonnées source ou si vous avez une série de mises à jour fréquentes.

C. Utiliser la propriété d'échange ouvert ou des formats d'échange ?

Dans l'exemple ci-dessus, nous avons utilisé le scénario d'un consultant travaillant avec diverses autres autorités pour créer un SIG pour l'Office de l'eau. Lorsque nous le transmettons, ils veulent avoir les données dans leur SIG avec un minimum de travail. En supposant qu'ils disposent d'un système ArcGIS, la géodatabase est le meilleur choix pour la livraison. Il est plus riche que le standard open source, le shapefile. Les fichiers de formes n'ont pas la même quantité d'informations sur les domaines, la topologie et le temps (temporalité) qu'une géodatabase ou une couverture ArcInfo peut avoir. If you want exchange files on a regular basis, as when a corporation updates files and passes them on to another entity, then it pays to have inbuilt translation methodology like FME Workbench. If the data are to be put on the web for anybody, then a widespread propriety file like ArcGIS or even ArcInfo Coverage e00 export file are okay, but open source data would be better. Most GIS systems have routines to deal with common propriety file types, and Esri is now the de facto statndard. How about if the downloader runs a rarer GIS? Has anyone received GRASS or SmallWorld files? These can be difficult to work with and not everyone has the Interoperability Extension or FME. Open source files are fine for simple geometries without topology and are probably the best in many situations. However, they are not universally the best. Sometimes, a more complex spatial entity is better preserved in a more complex data type. Make a lfinal ist of file types you have incorporated into your project and add it to your document e-portfolio.

That's it for Part I!

You have just completed Part I of this module, Part II, you will load GPS data you've acquired.


Step 5: Implement and test your solution

Periodically test your disaster recovery setup to ensure that it functions correctly. There’s no value in maintaining a disaster recovery solution if you cannot use it when you need it. Some companies switch between regions every few months. Switching regions on a regular schedule tests your assumptions and processes and ensures that they meet your recovery needs. This also ensures that your organization is familiar with the policies and procedures for emergencies.

Regularly test your disaster recovery solution in real-world conditions.

If you discover that you are missing an object or template and still need to rely on the information stored in your primary workspace, modify your plan to remove these obstacles, replicate this information in the secondary system, or make it available in some other way.

Test any required organizational changes to your processes and to configuration in general. Your disaster recovery plan impacts your deployment pipeline, and it is important that your team knows what needs to be kept in sync. After you set up your disaster recovery workspaces, you must ensure that your infrastructure (manual or code), jobs, notebook, libraries, and other workspace objects are available in your secondary region.

Talk with your team about how to expand standard work processes and configuration pipelines to deploy changes to all workspaces. Manage user identities in all workspaces. Remember to configure tools such as job automation and monitoring for new workspaces.

Plan for and test changes to configuration tooling:

  • Ingestion: Understand where your data sources are and where those sources get their data. Where possible, parameterize the source and ensure that you have a separate configuration template for working with your secondary deployments and secondary regions. Prepare a plan for failover and test all assumptions.
  • Execution changes: If you have a scheduler to trigger jobs or other actions, you may need to configure a separate scheduler that works with the secondary deployment or its data sources. Prepare a plan for failover and test all assumptions.
  • Interactive connectivity: Consider how configuration, authentication, and network connections might be affected by regional disruptions for any use of REST APIs, CLI tools, or other services such as JDBC/ODBC. Prepare a plan for failover and test all assumptions.
  • Automation changes: For all automation tools, prepare a plan for failover and test all assumptions.
  • Outputs: For any tools that generate output data or logs, prepare a plan for failover and test all assumptions.

Test failover

Disaster recovery can be triggered by many different scenarios. It can be triggered by an unexpected break. Some core functionality may be down, including the cloud network, cloud storage, or another core service. You do not have access to shut down the system gracefully and must try to recover. However, the process could be triggered by a shutdown or planned outage, or even by periodic switching of your active deployments between two regions.

When you test failover, connect to the system and run a shutdown process. Ensure that all jobs are complete and the clusters are terminated.

A sync client (or CI/CD tooling) can replicate relevant Databricks objects and resources to the secondary workspace. To activate your secondary workspace, your process might include some or all of the following:

  1. Run tests to confirm that the platform is up to date.
  2. Disable pools and clusters on the primary region so that if the failed service returns online, the primary region does not start processing new data.
  3. Recovery process:
    1. Check the date of the latest synced data. See Disaster recovery industry terminology . The details of this step vary based on how you synchronize data and your unique business needs.
    2. Stabilize your data sources and ensure that they are all available. Include all external data sources, such as AWS RDS, as well as your Delta Lake, Parquet, or other files.
    3. Find your streaming recovery point. Set up the process to restart from there and have a process ready to identify and eliminate potential duplicates (Delta Lake Lake makes this easier).
    4. Complete the data flow process and inform the users.

    Test restore (failback)

    Failback is easier to control and can be done in a maintenance window. This plan can include some or all of the following:

    1. Get confirmation that the primary region is restored.
    2. Disable pools and clusters on the secondary region so it will not start processing new data.
    3. Sync any new or modified assets in the secondary workspace back to the primary deployment. Depending on the design of your failover scripts, you might be able to run the same scripts to sync the objects from the secondary (disaster recovery) region to the primary (production) region.
    4. Sync any new data updates back to the primary deployment. You can use the audit trails of logs and Delta tables to guarantee no loss of data.
    5. Shut down all workloads in the disaster recovery region.
    6. Change the jobs and users URL to the primary region.
    7. Run tests to confirm that the platform is up to date.
    8. Start relevant pools (or increase the min_idle_instances to a relevant number) .
    9. Start relevant clusters (if not terminated).
    10. Change the concurrent run for jobs, and run relevant jobs. These could be one-time runs or periodic runs.
    11. As needed, set up your secondary region again for future disaster recovery.

    Undergraduate Programs

    The mission of the undergraduate programs is to provide state-of-the-art biomedical engineering education to students in order that they may continue their education in graduate, medical, and professional schools or pursue careers in industry. To this end, our responsibility is as much to the future as it is to the present. Through a strong research and educational environment, we strive to empower our students to explore and define their own frontiers as well as instill the ethical principles that will foster rewarding professional endeavors. The B.S. in Biomedical Engineering degree program is accredited by the Engineering Accreditation Commission of ABET, http://www.abet.org.

    The biomedical engineering program normally leads to the bachelor of science degree and requires at least 129 credits. The B.S. program is recommended for students who plan careers in engineering or who plan to attend graduate school in engineering. If a student wishes to take a more flexible program with less emphasis on engineering, a B.A. program is also available. Either the B.S. or the B.A. program can meet the needs of a student who plans graduate study in a nonengineering area.

    The undergraduate program provides a strong foundation in mathematics, engineering, and science. It emphasizes preparation for advanced study in an area related to biomedical engineering and is broad enough to accommodate students who plan graduate work in biology, medicine, engineering, biophysics, physiology, or biomedical engineering.

    Our fundamental focus is to instill a passion for learning, scientific discovery, innovation and entrepreneurial spirit, and societal impact on an extraordinary group of students who will become:

    • Adept at applying their engineering and biological training to solving problems related to health and healthcare that are globally relevant and based on ethically sound principles.
    • Leaders in their respective careers in biomedical engineering or interrelated areas of industry, government, academia, and clinical practice.
    • Engaged in life-long learning by continuing their education in graduate or professional school or through opportunities for advanced career or professional training.

    Each student plans a curriculum suited to his or her goals with the assistance of a faculty advisor. Upon completion of the B.S. in biomedical engineering, students will demonstrate:

    • an ability to identify, formulate, and solve complex engineering problems by applying principles of engineering, science, and mathematics
    • an ability to apply engineering design to produce solutions that meet specified needs with consideration of public health, safety, and welfare, as well as global, cultural, social, environmental, and economic factors
    • an ability to communicate effectively with a range of audiences
    • an ability to recognize ethical and professional responsibilities in engineering situations and make informed judgments, which must consider the impact of engineering solutions in global, economic, environmental, and societal contexts
    • an ability to function effectively on a team whose members together provide leadership, create a collaborative and inclusive environment, establish goals, plan tasks, and meet objectives
    • an ability to develop and conduct appropriate experimentation, analyze and interpret data, and use engineering judgment to draw conclusions
    • an ability to acquire and apply new knowledge as needed, using appropriate learning strategies.

    The program also encourages individual study and research and gives academic credit for them. Students are welcome to work in laboratories on the Homewood campus or at the Medical Institutions in East Baltimore.