Mais

Como executar em lote um espaço de trabalho FME com base em recursos?


Não tenho certeza sobre o título da minha pergunta ...

Meu objetivo é executar um espaço de trabalho inteiro para cada recurso contido em um leitor.

Em python, seria semelhante a:

para s em bus_stops: run_workspace (s)

Basicamente, meu espaço de trabalho funciona da seguinte maneira:

  • lê 1 ponto de ônibus
  • lê uma rede rodoviária
  • calcula o custo da rede para a parada de ônibus de entrada (NetworkCostCalculator)
  • contornos de saídas

O espaço de trabalho funciona se a entrada for limitada a 1 parada de ônibus (fonte une apenas para NetworkCostCalculator).

Agora eu dividi minhas paradas de ônibus de entrada em tantos tipos de recursos e executo em lote meu espaço de trabalho neles, mas tenho certeza de que há uma maneira mais eficiente de conseguir isso.


você poderia fazer isso em um transformador pythonCaller

consulte fmeobjects Python API Reference: http://docs.safe.com/fme/html/FME_Objects_Python_API/fmeobjects.FMEWorkspaceRunner-class.html

import fmeobjects for s em bus_stops runner = fmeobjects.FMEWorkspaceRunner () #workspace é um caminho e parâmetros é um valor chave dict runner.runWithParameters (espaço de trabalho, parâmetros)

Você já tentou usar um Group-By no NetworkCostCalculator? ou seja, você agrupa em um ID de ponto de ônibus e o transformador é executado uma vez por recurso de ponto de ônibus

Caso contrário, conforme observado acima, o WorkspaceRunner é seu amigo aqui.

Edit: Na verdade, agora que penso nisso, o Group-By seria mais eficiente. A rede só deve ser necessária uma vez para todas as paradas de ônibus - ao passo que, se você agrupar isso (em Python ou em um WorkspaceRunner), estará lendo os recursos de rede uma vez por parada de ônibus.


Comando Atalho de teclado - PC Atalho de teclado - Mac Função
Desfazer Ctrl + z comando (tecla) + z Reverte a ação mais recente em uma área de trabalho.
Refazer Ctrl + y shift + command (tecla) + z Repete a ação mais recente que você reverteu em uma área de trabalho.
Cortar Ctrl + x comando (tecla) + x Corta uma seleção e a envia para a área de transferência.
cópia de Ctrl + C comando (tecla) + c Copia uma seleção e a envia para a área de transferência.
Colar Ctrl + v comando (tecla) + v Cola uma seleção da área de transferência.
Excluir Del (chave) deletar (chave) Exclui uma seleção.
Trazer para a frente / Enviar para trás     Traz objetos para frente na tela ou os envia para trás de outros objetos.
Alinhar horizontalmente / verticalmente     Alinha os objetos selecionados na tela uns com os outros, de acordo com a orientação especificada.
Espalhar     Espaça uniformemente os objetos selecionados na tela um do outro, seja horizontalmente verticalmente.
Selecionar tudo Ctrl + a comando (tecla) + a Seleciona todo o conteúdo da tela.
Iniciar Ditado (apenas Mac)   fn + fn Ativa o ditado.
Símbolos de emoji e amp (apenas Mac)   ^ + comando (tecla) + espaço Abre um seletor de emoji.

Define as propriedades de zoom padrão.

Localize a ferramenta correspondente Zoom Mini-bar em FME & # 160 & gt Options & gt Toolbar.

A ferramenta possui um controle deslizante, botões +/- e uma caixa de entrada de texto para que você possa inserir um valor de zoom. Ele também inclui um botão "zoom para extensões" para ajustar o espaço de trabalho na área de tela disponível.

Exibe a caixa de diálogo Grade e guias:

  • Mostrar grade: exibe uma grade na tela.
  • Ajustar à grade: Encaixa objetos no canto superior esquerdo mais próximo da grade quando arrastados.
  • Cor da grade: define a cor das linhas da grade.
  • Tamanho da grade horizontal: a largura (distância horizontal) entre as linhas verticais na grade, em unidades de tela.
  • Tamanho da grade vertical: a altura (distância vertical) entre as linhas horizontais na grade, em unidades de tela.
  • Gravidade da grade: Se Snap to Grid estiver marcado, esta é a distância de uma linha de grade na qual ocorre o encaixe. Para garantir que os objetos sempre se encaixem nas linhas da grade, defina para pelo menos metade do tamanho da grade.
  • Mostrar guias: conforme você arrasta objetos na tela, esta configuração exibe marcadores de guia verticais e horizontais em objetos próximos para ajudar no alinhamento.
  • Ajustar às guias: ajusta os objetos arrastados à posição horizontal ou vertical de um marcador de guia próximo.
  • Cor da guia: define a cor dos marcadores da guia.
  • Sensibilidade da guia: a distância máxima entre objetos, em unidades de tela, para a exibição de marcadores de guia.
  • Gravidade de guia: a distância de um marcador de guia em que ocorre o encaixe.

Terminologia FME

Elementos individuais de um tipo de recurso de leitor ou escritor. Neste exemplo, o tipo de recurso é Zona e os atributos são Nome, Proprietário e Categoria.

O ato de reestruturar o componente não espacial de um recurso FME: os atributos relacionados à geometria física passam por uma mudança que produz uma saída diferente. Consulte Transformação geométrica.

Adicionar um ponto de interrupção a uma conexão de espaço de trabalho informa ao Workbench para inspecionar os recursos naquele local. Executar um espaço de trabalho com pontos de interrupção é uma maneira útil de depurar um espaço de trabalho.

Cada leitor e escritor em um espaço de trabalho é atribuído a um sistema de coordenadas. FME tentará automaticamente determinar o sistema de coordenadas correto do conjunto de dados, para formatos que armazenam informações do sistema de coordenadas (por exemplo, Shapefiles). Os sistemas de coordenadas podem ser definidos no painel do Navegador.

As conexões de banco de dados fornecem uma maneira conveniente e segura de armazenar e reutilizar parâmetros de conexão para um serviço de banco de dados.

Uma ferramenta FME & # 160Desktop para visualizar dados em qualquer formato compatível com FME para fins de verificação e depuração.

Um serviço do FME Server que aceita e executa solicitações de transformação, conforme especificado por um espaço de trabalho, e retorna os resultados como um fluxo de dados.

Um serviço do FME Server que permite aos usuários fazer upload de dados de origem ou outros arquivos para a execução de espaços de trabalho.

O componente do FME que processa solicitações de trabalho executando espaços de trabalho.

O componente FME Server que armazena dados de trabalho e repositório.

Uma diretiva do FME Server que especifica um nível de prioridade para executar um trabalho na fila de trabalhos, geralmente entre 1 (mais alto) e 100 (mais baixo).

Um mecanismo do FME Server para distribuir jobs para motores específicos.

Um serviço do FME Server que aceita e executa solicitações de trabalho do espaço de trabalho.

Um serviço do FME Server que aceita e realiza solicitações de transformação, conforme especificado por um espaço de trabalho, e retorna os resultados como um link de rede KML.

Exibe os resultados da tradução. As informações incluem:

ERROR: um problema fez com que o FME encerrasse o processamento.

WARN: um pequeno problema de processamento. O FME completará a tradução, mas o resultado pode ser adversamente afetado e deve ser verificado.

INFORMAR: uma informação que pode ajudar a determinar se sua tradução foi processada corretamente.

STATS: informações sobre o número de recursos lidos da origem e gravados nos conjuntos de dados de destino.

Antes do FME Workbench introduzir os espaços de trabalho (em 2001), todas as traduções eram realizadas usando arquivos de mapeamento.

Um arquivo de mapeamento (arquivo .fme) é uma série de comandos ASCII que o FME usa para executar uma tradução. Os arquivos de mapeamento ainda podem ser executados através do FME Quick Translator, usando funções e fábricas (ao invés de transformadores) para processar os dados.

Uma lista estruturada de objetos e parâmetros que representam e controlam todos os componentes na tela (área de trabalho).

Uma mensagem gerada pelo FME Server Notification Service.

Um serviço do FME Server que envia dados de e para o FME Server na forma de mensagens quando um evento ocorre.

Quando usado em um trecho de código (por exemplo, uma instrução SQL) ou ao se referir a um ponteiro NULL, use NULL.

O componente do FME Server que fornece tolerância a falhas e garante que o FME Server Core e os motores estejam sempre em funcionamento.

Um componente do FME Server Notification Service que recebe conteúdo de clientes através de um protocolo suportado e entrega o conteúdo ao FME Server na forma de uma notificação.

Os parâmetros do leitor controlam como o FME & # 160 lê os dados. O botão Parâmetros do Leitor pode ser acessado nas caixas de diálogo Adicionar Leitor e Gerar Espaço de Trabalho. Os parâmetros são visíveis no Workbench Navigator após o FME gerar o espaço de trabalho.

Um contêiner lógico no FME Server para armazenar grupos de itens relacionados, incluindo espaços de trabalho, dados de origem, formatos customizados, transformadores customizados e templates.

Uma coleção de arquivos do FME Server que são usados ​​para executar e depurar espaços de trabalho e executar outras tarefas administrativas, e que podem ser compartilhados entre espaços de trabalho entre repositórios.

Um serviço do FME Server que fornece um mecanismo de comunicação baseado em REST subjacente para aplicativos de serviço do cliente.

Um grupo de segurança ao qual cada usuário do FME Server deve pertencer, e que define as permissões de seus usuários.

Uma diretiva do FME Server para executar um trabalho continuamente até que seja explicitamente cancelado.

Uma tarefa no FME Server que especifica a execução de um espaço de trabalho em horários específicos no futuro de forma repetitiva ou não repetitiva.

Um componente do FME Server Notification Service que recebe notificações do FME Server e entrega o conteúdo aos clientes através de um protocolo compatível.

Uma diretiva do FME Server que especifica quanto tempo um trabalho permanece na fila de trabalho antes de ser removido sem ter sido executado.

O tempo de processamento do FME é a quantidade de tempo que o FME estava processando ativamente (não quanto tempo o espaço de trabalho levou para ser concluído).

Os tempos de início e término absolutos geralmente diferem do tempo de processamento do FME porque os processos não-FME, como uma consulta ao banco de dados, somam-se ao tempo absoluto gasto sem adicionar ao tempo de processamento do FME.

Um serviço do FME Server que permite aos usuários gerar tokens de segurança usando um nome de conta e senha.

Uma palavra-chave do FME Server Notification Service que atua como o destinatário de um editor ou a origem de um assinante.

O componente FME Server que executa o FME Server Web Services, Web User Interface, REST API e outros clientes da web.

As conexões de serviço da web fornecem uma maneira conveniente e segura de armazenar e reutilizar parâmetros de conexão para um serviço da web.

Aplicativo baseado na web para administrar o FME Server e executar workspaces do FME Server.

Os parâmetros do gravador controlam como o FME & # 160 grava os dados. O botão Parâmetros do gravador pode ser acessado nas caixas de diálogo Adicionar gravador e Gerar espaço de trabalho. Os parâmetros são visíveis no Workbench Navigator após o FME gerar o espaço de trabalho.


Exercício: Atualizações Diárias do Banco de Dados: Executando um Espaço de Trabalho

Para os exercícios deste capítulo, você é um analista técnico no departamento de GIS de sua cidade local. Você tem bastante experiência no uso do FME Desktop, e seu departamento agora está investigando o FME Server para avaliar suas capacidades.

Existem muitos departamentos na cidade, e uma de suas tarefas é reunir os dados de cada departamento e mesclá-los em um único banco de dados corporativo.

Como cada departamento produz seus conjuntos de dados em um formato e estilo diferente, você usa o FME para essa tarefa e a realiza semanalmente.

Depois de criar um espaço de trabalho para realizar esta tradução e publicá-lo no FME Server, você agora deseja fazer o login no Servidor para executar esse espaço de trabalho.

1) Conecte-se ao servidor
Para fazer login na interface do servidor, selecione a opção Interface da Web no menu iniciar ou - em seu navegador da Web - insira o endereço do seu FME Server.

Isso abrirá a tela de login da interface da web para o FME Server que está sendo usado. Marque este endereço da web, uma vez que você usará este link com frequência.

2) Faça login no servidor
Na caixa de diálogo Login do usuário, insira um nome de usuário e senha para sua conta do FME Server. Uma combinação comum de nome de usuário / senha para uma instalação de treinamento é admin / admin

3) Examine a interface do usuário
Este é o seu método principal para interagir com o FME Server.

Observe que uma das janelas está identificada como Últimos Espaços de Trabalho Publicados. Aqui você deve ser capaz de encontrar o espaço de trabalho publicado no Exercício 1:

Clicar no ícone de estrela definirá este espaço de trabalho como favorito, disponibilizando-o no painel da lista de favoritos:

Vamos rodar o espaço de trabalho em breve, mas talvez primeiro devamos ter certeza de que o FME Server está funcionando corretamente (o fato de podermos fazer o login é um bom sinal) e que estamos licenciados e temos os motores funcionando.

4) Examine a interface do usuário
Clique em Motores e licenciamento na parte ADMIN do menu de interface. Isso abrirá a seção de licenciamento. Você deverá ver uma mensagem informando que o FME Server está licenciado e uma lista dos motores disponíveis:

GORJETA
Se sua máquina não estiver licenciada ou estiver faltando motores, consulte o instrutor para obter dicas de solução de problemas.

5) Execute o espaço de trabalho
Clique no botão FME Server no canto superior esquerdo da interface. Isso o levará de volta à página inicial da interface do servidor.

Clique na área de trabalho publicada no painel Área de trabalho favorita para abrir a página da web para esta área de trabalho.

A página da área de trabalho mostra algumas opções, a primeira das quais é para o repositório, área de trabalho e serviço. Eles já devem estar preenchidos com os valores:

Como este espaço de trabalho tem alguns parâmetros publicados, eles também estão listados, mas podemos ignorá-los por enquanto (vamos lidar com conjuntos de dados de origem e semelhantes em breve).

Portanto, basta clicar no botão Executar para executar o espaço de trabalho. O espaço de trabalho será executado até a conclusão e uma mensagem para esse efeito aparecerá:

6) Examine a página de empregos
Clique em Trabalhos no menu principal. Uma lista de trabalhos executados anteriormente será aberta, incluindo o que acabamos de executar:

Observe alguns pontos interessantes da interface:

  1. Existem links para mostrar trabalhos concluídos (o padrão), Trabalhos em fila e Trabalhos em execução.
  2. Há uma lista suspensa que permite filtrar os trabalhos que estão sendo exibidos.
  3. Os trabalhos bem-sucedidos e os que falham são diferenciados por meio de um ícone diferente.
  4. Os trabalhos são exibidos na ordem cronológica em que foram concluídos (com êxito ou não).

Clique no seu trabalho para inspecionar os resultados com mais detalhes. Você poderá ver detalhes sobre o trabalho, incluindo a hora em que foi submetido, colocado na fila, iniciado, concluído e entregue a solicitação exata feita ao FME Server e os resultados completos da tradução. Você também pode clicar no botão Exibir Log para inspecionar o arquivo de log de tradução do FME.

O chefe de polícia Webb-Mapp diz.
Lembre-se de que este espaço de trabalho não gravou nenhum dado, apenas os enviou para um gravador Nulo. Portanto, por enquanto, para visualizar qualquer resultado, procure o resumo no arquivo de log.
Exercício Avançado
Se você quiser ver um trabalho em um estado diferente, teremos que diminuir um pouco a velocidade desse espaço de trabalho.

Abra o espaço de trabalho no FME Workbench e adicione um transformador Desacelerador (digamos, antes do Reprojetor). Configure-o para atrasar o espaço de trabalho em cinco (5) segundos por recurso. Publique o espaço de trabalho de volta no FME Server e execute-o novamente.


Publicação de tipos de recursos para ler

A caixa de diálogo para publicar este parâmetro é diferente daquela para formatos e sistemas de coordenadas:

Isso ocorre porque o FME pode escanear automaticamente a área de trabalho e fornecer uma lista de tipos de recursos disponíveis. Não é necessário configurar manualmente a lista ou mesmo adicioná-los de forma semi-automática com um importar opção.

Além disso, Usar nome de exibição alternativo permite que o autor publique nomes alternativos (por exemplo, Road Centrelines em vez de RdCtrLns) de maneira semelhante ao parâmetro & # x201CChoice with Alias ​​& # x201D.


Streaming de mensagens

O fluxo de mensagens é uma técnica em tempo real que envolve um fluxo contínuo de informações.

Para nossos propósitos, & # x201Ccontínuo & # x201D significa que as mensagens chegam ao FME Server em uma taxa mais rápida do que o serviço de notificação poderia lidar com mais de uma mensagem por segundo.

Em taxas mais rápidas do que isso, o serviço de notificação não tem tempo para iniciar e executar um espaço de trabalho para processar cada mensagem. No entanto, um fluxo de mensagens usa um espaço de trabalho que está constantemente em execução e não precisa ser iniciado para cada mensagem e, portanto, pode processar dados em uma taxa muito mais rápida.

Quando usado dessa forma, nós o chamamos de High Capacity Message Streaming, pois milhares de mensagens podem ser processadas a cada segundo.

Elementos de um fluxo de mensagens

Assim como as notificações, os fluxos de mensagens podem estar dentro ou fora do FME, ou ambos:

No entanto, em vez de usar o serviço de notificação com leitores e gravadores, os fluxos de mensagens são gerenciados por vários transformadores. Um espaço de trabalho é configurado para funcionar continuamente e os transformadores dentro dele ouvem e enviam mensagens em vários protocolos diferentes.

Os principais protocolos suportados incluem:

Um espaço de trabalho contendo qualquer um dos transformadores do Message Streaming será executado continuamente porque o próprio transformador foi projetado para ser executado continuamente.

Receptor os transformadores emitirão um recurso em resposta a uma mensagem de entrada, mas então voltarão a esperar por mais mensagens. Mesmo se nenhuma mensagem estiver disponível instantaneamente, ele não será encerrado.

Remetente os transformadores enviarão uma mensagem em resposta a um recurso de entrada, mas então voltarão para esperar por mais recursos. Novamente, ele não será encerrado até que o espaço de trabalho seja deliberadamente interrompido.

Arquitetura de transmissão de mensagens

Uma arquitetura de fluxo de mensagens que recebe e envia mensagens tem a seguinte aparência:

Um fluxo de mensagens é lido na área de trabalho por meio de um dos transformadores disponíveis, por exemplo, o JMSReceiver.

Os dados são processados ​​por qualquer um dos transformadores FME disponíveis, de acordo com as necessidades do setup.

Um fluxo de mensagens é enviado para fora da área de trabalho por meio de um dos transformadores disponíveis, por exemplo, o TCPIPSender.

Os componentes do banco de dados neste diagrama são opcionais, mas provavelmente usuais.

Os dados lidos do banco de dados devem ser usados ​​para processar a mensagem de entrada. Por exemplo, talvez a mensagem represente um recurso de ponto (talvez a localização de um veículo) que é usado para filtrar dados do banco de dados (talvez condições de tráfego).

Os dados gravados no banco de dados geralmente são para registrar um fluxo de informações da mensagem. Por exemplo, talvez cada mensagem recebida represente um ponto característico (um raio) que precisa ser registrado em um banco de dados.

Sra. Analista diz & # x2026
& # x201CA gravação em um banco de dados requer que o intervalo de transação seja definido como 1. Caso contrário, as mensagens não serão & # x2019t confirmadas à medida que chegam. & # x201D
Exercício 4E Streaming de mensagens
Cenário Fornecedor de dados Airphoto
Dados GeoTiff Orthophotos
Objetivo geral Aplicativo de mapa da web com WebSockets
Demonstra WebSockets
Iniciando o Espaço de Trabalho C: FMEData2015 Workspaces ServerAuthoring Exercise4e - & # xAD & # x2010Begin.fmw C: FMEData2015 Workspaces ServerAuthoring Exercise4e - & # xAD & # x2010Begin - & # xAD & # x2010Advanced.fmw
Área de Trabalho Concluída n / D

Este exercício usa o serviço FME Server & # x2019s WebSockets e transformadores WebSockets para alimentar um aplicativo Web Map. O método mostrado aqui é adequado para mensagens de alta frequência com mais de 1 mensagem por segundo.

1. Abra a área de trabalho inicial

No FME Workbench, abra a área de trabalho inicial Exercise4e-Begin.fmw

Observe que ele contém dois transformadores WebSocket & # x2013, um para recebimento e outro para envio. O espaço de trabalho ouvirá informações provenientes do canal WebSockets. Os dados de entrada serão processados ​​com um deslocamento em suas coordenadas e, em seguida, enviados de volta. O espaço de trabalho será executado continuamente, processando cada mensagem recebida, até ser interrompido manualmente.

2. Atualizar o nome do servidor

A primeira tarefa é atualizar o nome do host do servidor para corresponder ao que você está usando.

Localize o parâmetro publicado server_url na janela do Navegador. Dê um clique duplo no parâmetro para abri-lo para edição e substitua o host pelo seu próprio nome de host e porta do FME Server. Será necessário um prefixo & # x201Cws & # x201D para denotar o protocolo WebSockets.

Se você estiver trabalhando na mesma máquina que seu FME Server, você pode usar localhost, por exemplo: ws: // localhost: 7078 / websocket

3. Examine os transformadores WebSocketReceiver e WebSocketSender

Abra a caixa de diálogo de parâmetros do transformador WebSocketReceiver.

Observe que o URL do servidor está sendo obtido do parâmetro publicado que você acabou de atualizar.

Clique no botão [& # x2026] para abrir o parâmetro Preâmbulo de conexão.

O que isso significa é que o transformador fará uma conexão com o FME Server especificado e ouvirá os recursos vindos de um fluxo WebSocket chamado & # x201Cpoints & # x201D.

Se você abrir os parâmetros do transformador WebSocketSender, & # x2019 verá que ele envia recursos de volta usando um ID de fluxo chamado & # x201Cdisp_pnts & # x201D.

Os dados que estão sendo enviados de volta através do canal WebSocket são as coordenadas lat / long corrigidas do recurso que está sendo processado.

4. Inicie o espaço de trabalho

Execute o espaço de trabalho e observe as mensagens de conexão iniciais impressas na janela de log. Observe também que a área de trabalho continua em execução, aguardando mensagens por meio do fluxo WebSocket que está ouvindo.

5. Edite o aplicativo de mapa da web

Para testar esta configuração, um aplicativo básico de mapeamento da web foi fornecido em C: FMEData2015 Resources WebSockets

Algumas pequenas atualizações serão necessárias antes de podermos usar isso. Em um editor de texto, abra o arquivo HTML principal C: FMEData2015 Resources WebSockets www index.html

Encontre as duas linhas abaixo que definem as conexões do host WebSockets para o aplicativo. Se estiver usando localhost, você pode deixar como está, caso contrário, substitua localhost pelo seu próprio nome de host.

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

Agora encontre o bloco de código começando com o comentário

/ conectar ao fluxo de entrada do servidor/

Observe que a aplicação web está enviando pontos para o FME Server usando o stream id & # x201Cpoints & # x201D & # x2013 o mesmo que o workspace está ouvindo atualmente.

Se você olhar, & # x2019ll também encontrará um bloco de código que escuta os dados usando o ID do fluxo & # x201Cdisp_pnts & # x201D

Salve o arquivo index.html se tiver feito alguma edição.

6. Execute o aplicativo da Web

Abra o arquivo de índice que acabamos de inspecionar em um navegador da web. Conforme o mapa da web carrega, você verá duas seções de mensagens registrando mensagens enviadas de e para o FME Workspace:

Clique em qualquer ponto do mapa.

Observe que imediatamente o ponto é registrado e retornado com um deslocamento aleatório aplicado (não importa o que acontece aqui, apenas o fato de que algo o faz).

Observe também que as mensagens de e para a área de trabalho estão sendo registradas. Se você voltar ao espaço de trabalho, & # x2019 notará que não apenas ele ainda está em execução, mas um recurso foi registrado conforme foi recebido por meio do WebSocketReceiver, removido e transmitido por meio do WebSocketSender.

7. Publique o Espaço de Trabalho no FME Server

Até agora nós apenas rodamos o workspace no FME Desktop, mas também pode rodar no FME Server.

Pare a área de trabalho no FME Desktop se ainda estiver em execução e publique a área de trabalho no FME Server no repositório de treinamento. Basta registrar o espaço de trabalho no Serviço de envio de trabalhos.

8. Execute o WebSockets Workflow no FME Server

Na interface do usuário da web, navegue até a área de trabalho em seu repositório, escolha o remetente do trabalho e clique em Executar

O espaço de trabalho continuará funcionando indefinidamente e a funcionalidade de recuperação de trabalho do FME Server & # x2019s irá reiniciar o trabalho se ele falhar.

Tente colocar mais alguns pontos no aplicativo de mapa da web para confirmar se os pontos estão sendo deslocados. Desta vez o processo está sendo realizado pelo FME Server.

Volte para a interface do usuário da web e clique no menu Gerenciar & gt Trabalhos e, em seguida, clique no

Guia em execução onde você verá seu espaço de trabalho em execução.

Clique no trabalho e depois na guia Log. Você & # x2019 verá o log do espaço de trabalho conforme ele está sendo executado e poderá examiná-lo para ver seus últimos cliques no mapa passando pelo espaço de trabalho como recursos.

O chefe de polícia Webb-Mapp diz & # x2026
& # x201CA capacidade de visualizar um arquivo de log enquanto a tradução ainda está em andamento é um novo recurso do FME Server 2014 & # x201D

Tarefas Avançadas (Exercício 4f)

O uso de um espaço de trabalho em execução contínua tem vantagens e desvantagens.

No lado positivo, ele pode processar muitas mensagens & # x2013 vários milhares & # x2013 por segundo. No entanto, ele usa um motor do FME Server de forma contínua também.

Se o mesmo fluxo de trabalho foi configurado para ser executado usando o Serviço de Notificação, ele não usaria um FME Engine o tempo todo, entretanto, não seria adequado para sistemas com várias mensagens por segundo.

Como uma tarefa opcional, deixe & # x2019s tentar configurar o sistema para usar notificações em vez de WebSockets.

1. Cancele o trabalho do exercício acima

Em Trabalhos & gt em execução na interface do usuário da web, coloque uma marca de seleção ao lado do trabalho e pressione o botão Cancelar. Isso interromperá a execução do trabalho existente, pois não precisamos mais dele.

2. Adicione um Tópico

Na parte de notificação da interface do usuário da web, adicione um tópico chamado pontos.

3. Adicionar uma Publicação de Web Sockets

Agora adicione uma nova publicação com as seguintes configurações:

Nome da publicação MapPoints Tópicos a serem publicados para pontos Protocolo WebSocket URL de destino ws: // localhost: 7078 / websocket (ou use seu próprio host) ID do fluxo sample_stream_in

4. Edite o aplicativo de mapa da web

Em um editor de texto, abra o arquivo

Comente a mensagem de conexão de envio padrão (linha 86) e descomente a abaixo:

5. Abra o Espaço de Trabalho Avançado

Abra a área de trabalho Exercise4e-Begin-WebSockets-Advanced.fmw e edite o parâmetro server_url se necessário.

Publique este espaço de trabalho no FME Server e registre-o no Serviço de Notificação.

Nas configurações de serviço, defina o espaço de trabalho para assinar os pontos do tópico e certifique-se de que o Leitor de Notificação esteja definido para o leitor TEXTLINE.

Clique em OK para fechar a caixa de diálogo e em Publicar para concluir a publicação do espaço de trabalho.

6. Use o aplicativo da Web no modo de notificação

Recarregue o aplicativo da web em seu navegador ou simplesmente reabra o arquivo index.html.

Clique em alguns pontos no mapa para garantir que estão sendo processados ​​e compensados.

Examine o histórico de trabalhos na interface do usuário da web. Você verá que um trabalho é executado cada vez que você clica.


Formatos

FME geralmente suporta mais de 325 formatos de arquivo, e este número está aumentando constantemente. o número de formatos suportados varia de acordo com a edição adquirida. Os formatos básicos já são suportados na edição de base inferior (ESRI SHP, MapInfo TAB, AutoCAD DWG / DXF, Microstation DGN V7 e V8, KML etc.). Veja a lista de formatos suportados ou vá para a lista completa.

Edição Base

  • Esri SHP
  • MapInfo TAB
  • AutoCAD DWG / DXF
  • Microstation DGN V7 i V8
  • KML
  • e mais

Ed profissional.

  • Esri SHP
  • MapInfo TAB
  • AutoCAD DWG / DXF
  • Microstation DGN V7 i V8
  • KML
  • GML
  • RÚIAN
  • INSPIRAR
  • Microsoft Excel
  • Intergraph MGE
  • e mais

Edição Esri

  • Esri SHP
  • Esri ArcSDE
  • Camada Esri ArcGIS
  • Cobertura Esri ArcGIS
  • Esri Geodatabase (ArcSDE)
  • MapInfo TAB
  • AutoCAD DWG / DXF
  • Microstation DGN V7 i V8
  • KML
  • GML
  • RÚIAN
  • INSPIRAR
  • Microsoft Excel
  • Intergraph MGE
  • e mais

Edição de banco de dados

  • Esri SHP
  • Esri ArcSDE
  • Camada Esri ArcGIS
  • Cobertura Esri ArcGIS
  • Esri Geodatabase (ArcSDE)
  • MapInfo TAB
  • AutoCAD DWG / DXF
  • Microstation DGN V7 i V8
  • KML
  • GML
  • RÚIAN
  • INSPIRAR
  • Microsoft Excel
  • Intergraph MGE
  • Oracle Spatial
  • Microsoft SQL Server Spatial
  • Teradata
  • e mais

Trazendo dados para um formato unificado

Minha história:
Se você se lembra, as camadas que a State College Borough Water Authority identificou em sua lista de desejos de GIS vieram de muitas fontes. Adicionamos GPS, dados de escolas, dados florestais, dados de Center County e o desenho CAD. Eles foram importados de várias fontes e abrangem muitos tipos de dados diferentes. Agora, queremos entregar o projeto e, para isso, daremos a eles uma fonte de dados unificada.

B. Carregar os dados no FME Workbench

Workbench é o verdadeiro local de trabalho do pacote FME. Possui um sistema de gerenciamento de banco de dados de força industrial que é otimizado para conjuntos de dados espaciais. A mesma coisa pode ser alcançada usando ArcMap e ArcCatalogue. Para isso, nesses pacotes cada pedaço de dados deverá ser tratado separadamente e é uma operação única. No Workbench, a ação pode ser salva e executada novamente conforme necessário. O Workbench também mantém arquivos de log extensos para que as ações e fluxos de trabalho possam ser registrados e documentados.

  1. Abra o FME Workbench (Se você tiver um problema de suporte, o curso instructor, não FME, é a pessoa a ser contatada).
  2. Arraste o arquivo de forma de plotagens de construção para a área de trabalho ou use o botão ou caixa de diálogo Adicionar leitor.
  3. Clique no botão ou menu Adicionar gravador e navegue até um diretório e configure o Esri Geodatabase, geodatabase pessoal baseado em arquivo, nomeie o geodatabase "SCBWAGIS"
  4. Adicione um recurso e defina o recurso. Dê um nome descritivo à variável, por exemplo, "Construindo Polígonos de Plotagem."
  5. Defina a geometria do recurso para se adequar à geometria de entrada, neste caso "polígonos".
  6. Conecte a seta do fluxo de trabalho a ele. (Para definir um destino, não há um botão ou menu suspenso no aplicativo. Procure a pequena lata amarela e a seta verde apontando para a direita. Esse é o botão que o levará ao local onde você vai para definir o destino para as camadas de edifícios e ruas para o FileBasedGeodatabase, basta arrastá-lo.)
  7. Faça a mesma coisa para Streets. O fluxo de trabalho é arrastar em um conjunto de dados, definir um destino no gravador e conectar os dois com uma seta.
  8. Continue adicionando fontes de dados e configurando as conexões para o geodatabase conforme a primeira conexão. .
  9. Execute o modelo para preencher o geodatabase (quando executado, terá o número de recursos como um rótulo na linha de seta (consulte a Figura 8.1, acima).
  10. Salve o espaço de trabalho do FME para que possa ser executado novamente se os dados forem atualizados.
  11. Documente seu trabalho, salve o arquivo de log do FME com o Geodatabase. Salve todos os metadados recebidos para as camadas incluídas (neste caso, não será nenhum). Você precisará criar Metadados se não houver nenhum que faça isso para uma das camadas usando apenas o criador de metadados Esri no ArcCatalogue.

Dê uma olhada no FME e você verá muitos e muitos recursos que não temos tempo para examinar, mas você pode selecionar, subconjunto, transformar, generalizar, simplificar e modificar os dados à medida que são carregados. Isso pode ser particularmente útil se você estiver transferindo dados de um programa diferente. É também o momento de generalizar os dados para uma escala semelhante. A repetibilidade desses programas é realmente útil se você estiver recebendo dados de outra fonte regularmente. Por exemplo, o departamento de obras tem dados sobre edifícios controlados e de propriedade do governo e o departamento de planejamento tem informações sobre novos edifícios e você também tem dados de parcelas. Esses diferentes departamentos podem enviar novos dados em uma base de atualização ou podem enviar uma atualização de dados semanal. Você deve integrá-los a cada semana para garantir que está trabalhando nos mesmos dados. Seria bom se todos os dados estivessem no mesmo formato, mas como têm fontes diferentes, muito provavelmente não serão padronizados. Se você tiver muitas interações com dados baseados em CAD que não estão em coordenadas geográficas, mas em unidades de espaço CAD arbitrárias, às vezes é melhor construir uma projeção CAD personalizada para que o ArcGIS saiba como reprojetá-los, em vez de transformá-los. A projeção personalizada obtém uma projeção plana como UTM e, em seguida, fornece um deslocamento personalizado (Falso Leste e Falso Norte) para alinhá-la. Também pode ser necessário um índice de escala personalizado para garantir uma escala semelhante. Isso realmente vale a pena se você tiver muitos desenhos CAD nas mesmas coordenadas de origem ou se tiver uma série de atualizações frequentes.

C. Usar propriedade de intercâmbio aberto ou formatos de intercâmbio?

No exemplo acima, usamos o cenário de um consultor trabalhando com várias outras autoridades para criar um GIS para o Conselho de Água. Quando entregamos, eles querem ter os dados em seu GIS com o mínimo de trabalho. Supondo que eles tenham um sistema ArcGIS, o geodatabase é a melhor escolha para entrega. É mais rico do que o padrão de código aberto, o shapefile. Os shapefiles não têm nada perto da quantidade de informações sobre domínios, topologia e tempo (temporalidade) que uma geodatabase ou cobertura ArcInfo pode ter. Se você deseja trocar arquivos regularmente, como quando uma empresa atualiza arquivos e os repassa para outra entidade, vale a pena ter uma metodologia de tradução embutida como o 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 fato 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.

    Programas de Graduação

    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.