Processar vários ficheiros de entrada num único mapeamento de dados
As tarefas típicas de conversão de dados exigem o processamento de numerosos ficheiros de entrada que chegam em lotes. O Altova MapForce inclui funcionalidades que permitem gerir grupos de ficheiros com o mínimo de intervenção. Por exemplo, recentemente copiámos um conjunto de ficheiros do cartão de memória de uma câmara digital com suporte GPS. Cada ficheiro .LOG é um ficheiro CSV que contém as coordenadas GPS de uma determinada rota.

Desenvolvemos rapidamente um sistema de conversão para transformar os dados CSV para o formato .gpx, baseado em XML, e processámos todos os três ficheiros para gerar três ficheiros de saída numa única execução:

Primeiramente, utilizamos um caractere curinga no nome do ficheiro de entrada, na caixa de diálogo de propriedades, para o componente de entrada da mapeamento. Isto instrui o MapForce a processar individualmente cada ficheiro no diretório de trabalho que corresponda ao caractere curinga.

Se estiver a criar uma conversão complexa, ou se os ficheiros de entrada forem muito grandes, pode usar um único nome de ficheiro para desenvolver o mapeamento, e depois alterar para um caractere curinga quando estiver satisfeito com o resultado do mapeamento.
Funções de caminho de ficheiro
A biblioteca de funções integrada do MapForce inclui funções de caminho de ficheiro que podemos utilizar para gerir os nomes dos ficheiros de saída. Se definirmos um único ficheiro de saída, este será atualizado com novos dados a cada vez que processarmos um ficheiro de entrada.

Pode combinar as funções de caminho de ficheiro com outras funções de texto para ter controlo total sobre os nomes e localizações dos ficheiros de saída. Decidimos manter os ficheiros de saída no mesmo diretório dos ficheiros de entrada, mas criamos nomes de ficheiros mais descritivos e utilizamos a extensão de ficheiro .gpx.
A parte do mapeamento mostrada abaixo utiliza a função de concatenação de strings, juntamente com funções de caminho de ficheiro, para gerar o ficheiro de saída "1211190converted.gpx" a partir do ficheiro "1211190.LOG", e assim por diante.

Também pode utilizar funções de caminho de ficheiro para gerar strings e inseri-las como saída. O esquema XML para ficheiros .gpx contém um elemento de descrição de metadados. Decidimos inserir o nome do ficheiro de entrada nos metadados para associar explicitamente o ficheiro de saída aos dados originais. Esta estratégia torna o ficheiro de saída autoexplicativo e pode ajudar na depuração, caso seja necessário rastrear uma saída inesperada até a fonte original.
A parte do mapeamento mostrada abaixo insere o nome do ficheiro de origem numa cadeia de caracteres e associa essa cadeia de caracteres aos metadados <desc> elemento:

A descrição resultante encontra-se na linha 4 do documento Visualização prévia do mapeamento:
[Imagem de pré-visualização dos dados de saída, com o nome do ficheiro]
Filtragem de dados de entrada
O elemento central deste mapeamento de dados exigiu a aplicação de um filtro ao ficheiro de entrada. Os ficheiros de registo GPS da câmara são gravados de acordo com a especificação da National Marine Electronics Association (NMEA). Uma parte de um dos ficheiros de entrada é apresentada abaixo:

Após a primeira linha, cada ponto registado é descrito por duas frases NMEA, onde o tipo de frase é identificado no primeiro campo. Cada frase GGA inclui a hora, a latitude, a longitude, a altitude e dados adicionais sobre a qualidade da localização. Cada frase RMC contém a hora, a latitude, a longitude e a data.
Uma frase RMC contém os dados mínimos necessários para gerar um ficheiro .gpx <trkpt> elemento, para que possamos usar um filtro para selecionar apenas as linhas relevantes dos dados de entrada, como demonstrado aqui:

Se o tipo de mensagem no primeiro campo de uma linha contiver "$GPRMC", essa linha é processada. Caso contrário, a linha é ignorada.
Os dados reais presentes no ficheiro de entrada também exigiram alguma manipulação. Para cada latitude e longitude, tivemos de combinar vários campos da fonte que definem graus, minutos e segundos, e convertê-los para graus decimais. Foi necessário combinar os campos de data e hora e registar o resultado no formato ISO 8601, conforme exigido pelo formato .gpx, como, por exemplo, 2012-11-19T20:43:23Z. Definimos cada uma dessas conversões como funções de utilizador, para encapsular a sua complexidade e separá-las da lógica principal de mapeamento.
Esta aplicação também oferece a oportunidade de reutilizar a função de utilizador "getElevationUS" que definimos na publicação anterior "Esteja Preparado para o Inesperado - O Altova MissionKit Resolve um Mistério de Formato Numérico. Desta vez, arredondamos os dados de altitude para três casas decimais, representando o milímetro mais próximo.
A secção principal do mapeamento de dados do Camerlog para o formato GPX, com funções personalizadas, tem a seguinte estrutura:

E aqui está um dos ficheiros de saída que mostra um elemento <trk>, um elemento <trkseg> e vários elementos <trkpt>.

O menu "Saída" do MapForce oferece uma opção que permite validar os ficheiros de saída em relação ao esquema XML .gpx:

Se pretende utilizar o Altova MapForce para processar ficheiros de entrada em lote e realizar as suas próprias mapeações de dados, clique aqui para descarregar uma versão de avaliação gratuita..