Mehrere Eingabedateien in einer einzigen Datenzuordnung verarbeiten

Typische Aufgaben der Datenkonvertierung erfordern die Verarbeitung einer großen Anzahl von Eingabedateien, die in Batches eingehen. Altova MapForce bietet Funktionen, mit denen Sie Gruppen von Dateien mit minimalem Aufwand verarbeiten können. Beispielsweise haben wir kürzlich eine Reihe von Dateien von der Speicherkarte einer digitalen Kamera mit GPS-Funktion kopiert. Jede .LOG-Datei ist eine CSV-Datei, die GPS-Koordinaten für eine einzelne Route enthält.

Wir haben schnell eine Methode entwickelt, um die CSV-Daten in das XML-basierte .gpx-Format zu konvertieren, und alle drei Dateien verarbeitet, um in einem einzigen Durchlauf drei Ausgabedateien zu erstellen:

Zunächst haben wir ein Platzhalterzeichen im Dateinamen der Eingabedatei im Eigenschaften-Dialog für das Eingabeelement der Zuordnung verwendet. Dies weist MapForce an, jede Datei im Arbeitsverzeichnis, die mit dem Platzhalter übereinstimmt, einzeln zu verarbeiten.

Wenn Sie eine komplexe Konvertierung durchführen oder wenn die Eingabedateien sehr groß sind, können Sie einen einzelnen, eindeutigen Dateinamen verwenden, um die Zuordnung zu erstellen. Sobald Sie mit dem Ergebnis der Zuordnung zufrieden sind, können Sie zu einem Platzhalter wechseln.

Funktionen für Dateipfade

Die integrierte Funktionsbibliothek von MapForce enthält Funktionen zur Verwaltung von Dateipfaden, die wir nutzen können, um Ausgabedateinamen zu verwalten. Wenn wir eine einzelne Ausgabedatei definieren, werden neue Daten an diese Datei angehängt, wenn wir jeweils eine neue Eingabedatei verarbeiten.

Sie können Dateipfadfunktionen mit anderen String-Funktionen kombinieren, um die Ausgabedateinamen und -orte vollständig zu steuern. Wir haben uns entschieden, die Ausgabedateien im selben Verzeichnis wie die Eingabedateien zu speichern, aber gleichzeitig aussagekräftigere Dateinamen zu verwenden und die Dateiendung ".gpx" zu nutzen.

Der unten gezeigte Ausschnitt der Konfiguration verwendet die Funktion zur Zeichenkettenverkettung in Kombination mit Funktionen zur Pfadmanipulation, um die Ausgabedatei "1211190converted.gpx" aus der Datei "1211190.LOG" zu erstellen, und so weiter.

Sie können auch Funktionen für Dateipfade verwenden, um Zeichenketten zu generieren und diese als Ausgabe einzufügen. Das XML-Schema für .gpx-Dateien enthält ein Metadaten-Beschreibungsfeld. Wir haben uns entschieden, den Namen der Eingabedatei in die Metadaten einzufügen, um die Verbindung zwischen der Ausgabedatei und den ursprünglichen Daten explizit herzustellen. Diese Strategie macht die Ausgabedatei selbsterklärend und kann bei der Fehlersuche helfen, falls Sie unerwartete Ausgaben auf die ursprüngliche Quelle zurückverfolgen müssen.

Der im Folgenden dargestellte Abschnitt der Zuordnung fügt den Namen der Quelldatei in eine Zeichenkette ein und ordnet diese Zeichenkette den Metadaten zu <desc> Element:

Die resultierende Beschreibung befindet sich in Zeile 4 der Vorschau der Kartierungsergebnisse:

Filterung von Eingabedaten

Der Kern dieser Datenzuordnung erforderte eine Filterung der Eingabedatei. Die GPS-Protokolldateien der Kameras werden gemäß der Spezifikation der National Marine Electronics Association (NMEA) erfasst. Ein Ausschnitt einer der Eingabedateien ist unten dargestellt:

Nach der ersten Zeile wird jeder aufgezeichnete Punkt durch zwei NMEA-Sätze beschrieben, wobei der Typ des Satzes im ersten Feld angegeben ist. Jeder GGA-Satz enthält die Zeit, die geografische Breite, die geografische Länge, die Höhe und zusätzliche Daten über die Genauigkeit der Positionsbestimmung. Jeder RMC-Satz enthält die Zeit, die geografische Breite, die geografische Länge und das Datum.

Ein RMC-Satz enthält die minimalen Daten, die wir benötigen, um eine .gpx-Datei zu erstellen <trkpt> Element, sodass wir einen Filter verwenden können, um nur die entsprechenden Zeilen aus der Eingabe auszuwählen, wie hier gezeigt:

Wenn der Nachrichtentyp im ersten Feld einer Zeile "$GPRMC" enthält, wird diese Zeile zur Verarbeitung weitergeleitet. Andernfalls wird die Zeile ignoriert.

Die eigentlichen Daten in der Eingabedatei mussten ebenfalls bearbeitet werden. Für jede geographische Breite und Länge mussten wir mehrere Felder aus der Quelldatei, die Grad, Minuten und Sekunden enthielten, zusammenführen und in Dezimalgrad umwandeln. Wir mussten die Felder für Zeit und Datum kombinieren und das Ergebnis im ISO 8601-Format speichern, wie es für .gpx-Dateien erforderlich ist, beispielsweise "2012-11-19T20:43:23Z". Wir haben jede dieser Umwandlungen als benutzerdefinierte Funktionen definiert, um ihre Komplexität zu verbergen und sie von der Hauptfunktionalität der Kartierung zu trennen.

Diese Zuordnung bietet außerdem die Möglichkeit, die Benutzerfunktion getElevationUS, die wir in einem früheren Beitrag definiert haben (Unerwartetes erwarten – Altova MissionKit löst ein Zahlenformat-Problem), wiederzuverwenden. Diesmal haben wir die Höhenangaben auf drei Dezimalstellen gerundet, was dem nächstgelegenen Millimeter entspricht.

Der Hauptteil der Datenzuordnung von Camerlog zu GPX mit benutzerdefinierten Funktionen sieht wie folgt aus:

Und hier ist eine der Ausgabedateien, die ein <trk>, ein <trkseg> sowie mehrere <trkpt>-Elemente enthält.

Das Menü "Ausgabe" in MapForce bietet eine Auswahl, mit der wir die Ausgabedateien anhand des XML-Schemas für .gpx validieren können:

Wenn Sie dies verwenden möchten Altova MapForce um Ihre eigenen Datenzuordnungen zu verwenden und Eingabedateien in Batches zu verarbeiten Klicken Sie hier, um eine kostenlose Testversion herunterzuladen.