Aqui é onde choveu hoje na Austrália, um pouco ao redor de Perth, bastante em Queensland e para os atentos, um pouco em Cape York para manter os camarões e crocodilos felizes. A legenda mostra a precipitação em mm.<\/P>
<\/P>
O Australian Bureau of Meteorology<\/A> publica dados meteorológicos para download; meu cenário é que estou interessado em republicar observações de pluviômetros para um serviço de feição hospedado, que está no mapa acima. Depois de uma pequena pesquisa, descobri que os dados estão disponíveis via FTP<\/A> com um esquema descrito neste guia do usuário<\/A>. Os dados são atualizados diariamente. Embora eu não esteja redistribuindo os dados neste blog, menciono que eles são licenciados sob os termos do Creative Commons<\/A>, então você pode implementar meu exemplo se desejar.<\/P><\/P>Embora a taxa de atualização seja diária, cada arquivo pode conter observações que abrangem mais de 24 horas e de múltiplos sensores em um local. De qualquer forma, o que eu queria eram as observações diárias enviadas para um serviço de feição no meu portal; eu poderia igualmente enviar os dados para o ArcGIS Online.<\/P><\/P>Essas sincronizações periódicas da web<\/STRONG> estão por toda parte no GIS. Os responsáveis pelos dados facilitam a obtenção manual<\/EM> dos dados, vou mostrar como é simples automatizar<\/EM> sincronizações com Data Interoperability. Eu geralmente descrevo Data Interoperability como a tecnologia de integração de aplicativos 'sem código' da Esri. Para ser totalmente honesto, neste exemplo usei um pouco de Python nos FME Workbenches que criei, então tenho que recuar na afirmação sem código<\/STRONG>, mas posso dizer que é baixo código<\/STRONG>. Você pode ver por si mesmo nos Workbenches.<\/P><\/P>Comecei pensando que faria o processo agendado como uma ferramenta web e agendaria com Notebook Server. Isso poderia ser mais divertido de construir, mas percebi que não era necessário no meu caso de uso. Voltei a um padrão sobre o qual já escrevi anteriormente no blog<\/A>, ou seja, usar o Agendador de Tarefas do Windows, mas desta vez em um servidor. Por que não usar a abordagem do software desktop? Bem, para aproveitar uma máquina com alta disponibilidade que sei poder ser agendada fora do meu horário normal de trabalho.<\/P><\/P>Aqui está o Workbench que faz o trabalho de baixar os arquivos do produto BoM e enviar feições para o serviço de feição hospedado no meu portal:<\/P><\/P><\/P><\/P>E não resisti, aqui está o Python, nada assustador. Seria desnecessário se os nomes dos arquivos no site FTP fossem estáveis, eu poderia ter usado um transformador FTPCaller<\/STRONG>, mas eles têm carimbos de data como parte do nome, foi mais fácil lidar com isso usando um pouco de Python. Enquanto baixava os dados também fiz uma pequena limpeza (removendo aspas duplas envolventes e caracteres de nova linha) e então enviei todas as observações para o fluxo.<\/P><\/P><\/P><\/P><\/P>Como as fontes dos dados não mudam, fiz todos os parâmetros privados, isso simplifica o comando para agendar. Tudo o que preciso fazer é colocar o Workbench no servidor e garantir que ele execute. No download do post você encontrará três arquivos FMW:<\/P><\/P>MakeRainGauges.fmw<\/STRONG>RefreshRainGauges.fmw<\/STRONG>RefreshRainGauges - Server Copy.fmw<\/STRONG>MakeRainGauges cria uma classe de feição geodatabase que usei no Pro para instanciar meu serviço de feição hospedado. RefreshRainGauges é construído a partir do MakeRainGauges e só difere por gravar no serviço de feição, com truncamento inicial. Esse é o Workbench que quero agendar. RefreshRainGauges - Server Copy só difere do RefreshRainGauges nas configurações Python, para usar Python 3.6+. Eu não usei esse nome no servidor, apenas para incluí-lo no download do post.Aqui no meu servidor portal houve uma pequena configuração (tenho uma única máquina com tudo instalado nela, não esqueça de instalar e licenciar Data Interoperability!). RefreshRainGauges usa uma conexão web para meu portal. Neste blog<\/A> descrevo como criar uma conexão web para portal. Isso precisa ser copiado para o servidor para o usuário arcgis<\/STRONG> que executará o processo agendado. A maneira mais simples é o método #2 neste artigo<\/A>. Logado no servidor como arcgis, primeiro criei um atalho na área de trabalho para "C:\\Program Files\\ESRI\\Data Interoperability\\Data Interoperability AO11\\fmeworkbench.exe"<\/STRONG>, iniciei o Workbench, então importei o arquivo XML da conexão web e testei a leitura do serviço de feição. Também copiei RefreshRainGauges para uma pasta e editei para ajustar o ambiente Python conforme o servidor (o exemplo foi construído com Pro 2.7 Beta mas o servidor está rodando Enterprise 10.8.1). Executando interativamente o workspace, o topo do log revela o comando a ser agendado:
Embora a taxa de atualização seja diária, cada arquivo pode conter observações que abrangem mais de 24 horas e de múltiplos sensores em um local. De qualquer forma, o que eu queria eram as observações diárias enviadas para um serviço de feição no meu portal; eu poderia igualmente enviar os dados para o ArcGIS Online.<\/P>
Essas sincronizações periódicas da web<\/STRONG> estão por toda parte no GIS. Os responsáveis pelos dados facilitam a obtenção manual<\/EM> dos dados, vou mostrar como é simples automatizar<\/EM> sincronizações com Data Interoperability. Eu geralmente descrevo Data Interoperability como a tecnologia de integração de aplicativos 'sem código' da Esri. Para ser totalmente honesto, neste exemplo usei um pouco de Python nos FME Workbenches que criei, então tenho que recuar na afirmação sem código<\/STRONG>, mas posso dizer que é baixo código<\/STRONG>. Você pode ver por si mesmo nos Workbenches.<\/P><\/P>Comecei pensando que faria o processo agendado como uma ferramenta web e agendaria com Notebook Server. Isso poderia ser mais divertido de construir, mas percebi que não era necessário no meu caso de uso. Voltei a um padrão sobre o qual
Aqui está o Workbench que faz o trabalho de baixar os arquivos do produto BoM e enviar feições para o serviço de feição hospedado no meu portal:<\/P>
E não resisti, aqui está o Python, nada assustador. Seria desnecessário se os nomes dos arquivos no site FTP fossem estáveis, eu poderia ter usado um transformador FTPCaller<\/STRONG>, mas eles têm carimbos de data como parte do nome, foi mais fácil lidar com isso usando um pouco de Python. Enquanto baixava os dados também fiz uma pequena limpeza (removendo aspas duplas envolventes e caracteres de nova linha) e então enviei todas as observações para o fluxo.<\/P><\/P><\/P><\/P><\/P>Como as fontes dos dados não mudam, fiz todos os parâmetros privados, isso simplifica o comando para agendar. Tudo o que preciso fazer é colocar o Workbench no servidor e garantir que ele execute. No download do post você encontrará três arquivos FMW:<\/P><\/P>MakeRainGauges.fmw<\/STRONG>RefreshRainGauges.fmw<\/STRONG>RefreshRainGauges - Server Copy.fmw<\/STRONG>
MakeRainGauges cria uma classe de feição geodatabase que usei no Pro para instanciar meu serviço de feição hospedado. RefreshRainGauges é construído a partir do MakeRainGauges e só difere por gravar no serviço de feição, com truncamento inicial. Esse é o Workbench que quero agendar. RefreshRainGauges - Server Copy só difere do RefreshRainGauges nas configurações Python, para usar Python 3.6+. Eu não usei esse nome no servidor, apenas para incluí-lo no download do post.
Aqui no meu servidor portal houve uma pequena configuração (tenho uma única máquina com tudo instalado nela, não esqueça de instalar e licenciar Data Interoperability!). RefreshRainGauges usa uma conexão web para meu portal. Neste
Comando para executar este workspace:
"C:\\Program Files\\ESRI\\Data Interoperability\\Data Interoperability AO11\\fme.exe" C:\\Users\\arcgis\\Desktop\\RefreshRainGauges.fmw
O resto é simples, basta criar uma tarefa básica, a parte mais difícil foi descobrir a hora certa para executar o comando (vejo dados mudando até 1h UTC então escolhi 18h horário local no meu servidor, que fica na costa oeste dos EUA). Certifique-se que a tarefa será executada mesmo se arcgis não estiver logado, e o usuário arcgis precisará ter direitos para trabalhos em lote (ou ser administrador, algo que posso fazer na minha máquina VM mas provavelmente você não terá permissão).
É isso aí, manutenção automatizada dos dados que posso compartilhar com qualquer pessoa! Finalizo com uma captura de tela do log do processamento da sincronização da noite passada:
Membros conectados podem postar, seguir atualizações e mais. Novo aqui? Registre uma conta gratuita.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.