Elaborare più file di input in un'unica mappatura dei dati

Le attività tipiche di conversione dati richiedono l'elaborazione di numerosi file di input che arrivano in batch. Altova MapForce include funzionalità che consentono di gestire gruppi di file con un intervento minimo. Ad esempio, di recente abbiamo copiato un insieme di file dalla scheda di memoria di una fotocamera digitale con supporto GPS. Ogni file .LOG è un file CSV che contiene le coordinate GPS per un singolo percorso.

Abbiamo rapidamente sviluppato un sistema di conversione per trasformare i dati in formato CSV in formato .gpx basato su XML, e abbiamo elaborato tutti e tre i file per generare tre file di output in un'unica operazione

Innanzitutto, abbiamo utilizzato un carattere jolly nel nome del file di input, nella finestra di dialogo delle proprietà, per il componente di input della mappatura. Questo indica a MapForce di elaborare individualmente ogni file nella directory di lavoro che corrisponde al carattere jolly.

Se state progettando una conversione complessa, oppure se i file di input sono molto grandi, potete utilizzare un singolo nome file univoco per definire la mappatura, e successivamente passare a un carattere jolly quando siete soddisfatti del risultato della mappatura.

Funzioni per la gestione dei percorsi dei file

La libreria di funzioni MapForce integrata include funzioni per la gestione dei percorsi dei file, che possiamo utilizzare per gestire i nomi dei file di output. Se definiamo un singolo file di output, questo verrà aggiornato con nuovi dati ogni volta che elaboriamo un nuovo input.

È possibile combinare le funzioni per la gestione dei percorsi dei file con altre funzioni di manipolazione di stringhe, per avere un controllo completo sui nomi e le posizioni dei file di output. Abbiamo deciso di salvare i file di output nella stessa directory dei file di input, ma di utilizzare nomi di file più descrittivi e l'estensione .gpx.

La sezione del processo di mappatura mostrata di seguito utilizza la funzione di concatenazione di stringhe insieme a funzioni per la gestione dei percorsi dei file, al fine di generare il file di output "1211190converted.gpx" a partire dal file "1211190.LOG", e così via.

È possibile utilizzare anche le funzioni relative ai percorsi dei file per generare stringhe e inserirle come output. Lo schema XML per i file .gpx contiene un elemento di descrizione dei metadati. Abbiamo deciso di inserire il nome del file di input nei metadati per collegare esplicitamente il file di output ai dati originali. Questa strategia rende il file di output auto-documentato e può essere utile per il debug, nel caso in cui sia necessario risalire a una fonte originale per un output inatteso.

La sezione del codice mostrata di seguito inserisce il nome del file di origine in una stringa e associa questa stringa ai metadati <desc> elemento:

La descrizione risultante si trova alla riga 4 del Anteprima dell'output della mappatura:

[Immagine di anteprima dei dati di output con un nome file]

Filtrare i dati di input

Il cuore di questa mappatura dei dati richiedeva un filtro applicato al file di input. I file di log GPS delle telecamere sono registrati secondo le specifiche dell'associazione National Marine Electronics Association (NMEA). Una parte di uno dei file di input è mostrata di seguito:

Dopo la prima riga, ogni punto registrato è descritto da due frasi NMEA, in cui il tipo di frase è identificato nel primo campo. Ogni frase GGA include l'ora, la latitudine, la longitudine, l'altitudine e dati aggiuntivi sulla qualità della misurazione. Ogni frase RMC contiene l'ora, la latitudine, la longitudine e la data.

Una frase RMC contiene i dati minimi necessari per generare un file .gpx <trkpt> elemento, quindi possiamo utilizzare un filtro per selezionare solo le righe desiderate dall'input, come mostrato qui:

Se il tipo di messaggio nel primo campo di una riga contiene la stringa "$GPRMC", questa viene elaborata. In caso contrario, la riga viene ignorata.

I dati effettivi presenti nel file di input richiedevano anch'essi alcune elaborazioni. Per ogni latitudine e longitudine, era necessario combinare diversi campi presenti nella sorgente che definivano gradi, minuti e secondi, e convertirli in gradi decimali. Era inoltre necessario combinare i campi relativi a data e ora e registrare il risultato nel formato ISO 8601, come richiesto dal formato .gpx, ad esempio 2012-11-19T20:43:23Z. Abbiamo definito ciascuna di queste conversioni come funzioni utente, al fine di incapsulare la loro complessità e separarle dalla logica principale del programma.

Questa mappatura offre anche l'opportunità di riutilizzare la funzione utente getElevationUS che abbiamo definito nel post precedente, intitolato "Aspettatevi l'inaspettato: Altova MissionKit risolve un mistero sui formati numerici". Questa volta, abbiamo arrotondato i dati di altitudine a tre cifre decimali, rappresentando il millimetro più vicino.

La sezione principale della mappatura dei dati CamerlogToGPX, che include le funzioni utente, è strutturata in questo modo:

Ecco uno dei file di output che mostra un elemento <trk>, un elemento <trkseg> e diversi elementi <trkpt>.

Il menu "Output" di MapForce offre una serie di opzioni che consentono di validare i file di output rispetto allo schema XML .gpx:

Se desiderate utilizzare Altova MapForce per elaborare i file di input in gruppi, definendo le proprie mappature dei dati Clicca qui per scaricare una versione di prova gratuita.