Przetwarzanie wielu plików wejściowych w ramach jednego mapowania danych
Typowe zadania konwersji danych wymagają przetwarzania dużej liczby plików wejściowych, które przychodzą partiami. Altova MapForce oferuje funkcje umożliwiające obsługę grup plików przy minimalnej interwencji. Na przykład, niedawno skopiowaliśmy zestaw plików z karty pamięci aparatu cyfrowego z obsługą GPS. Każdy plik .LOG to plik CSV zawierający współrzędne GPS dla jednej trasy.

Szybko opracowaliśmy algorytm konwertujący dane w formacie CSV na format XML (.gpx) i przetworzyliśmy wszystkie trzy pliki, generując trzy pliki wynikowe w ramach jednego procesu

Najpierw, w oknie dialogowym "Właściwości" dla komponentu wejściowego mapowania, użyliśmy znaku wieloznacznego w nazwie pliku wejściowego. To polecenie powoduje, że MapForce przetwarza oddzielnie każdy plik w katalogu roboczym, który pasuje do tego wzorca.

Jeśli projektujesz złożoną konwersję lub jeśli pliki wejściowe są bardzo duże, możesz użyć pojedynczej, unikalnej nazwy pliku do opracowania mapowania, a następnie, gdy będziesz zadowolony z wyników mapowania, możesz zmienić na użycie symboli wieloznacznych.
Funkcje obsługi ścieżek plików
Wbudowana biblioteka funkcji MapForce zawiera funkcje związane ze ścieżkami plików, które możemy wykorzystać do zarządzania nazwami plików wyjściowych. Jeśli zdefiniujemy pojedynczy plik wyjściowy, do niego będą dodawane nowe dane podczas przetwarzania kolejnych plików wejściowych.

Można łączyć funkcje obsługi ścieżek plików z innymi funkcjami operującymi na łańcuchach znaków, aby uzyskać pełną kontrolę nad nazwami i lokalizacją plików wynikowych. Zdecydowaliśmy się umieścić pliki wynikowe w tym samym katalogu, w którym znajdują się pliki wejściowe, ale zmieniliśmy nazwy plików, aby były bardziej opisowe, oraz zastosowaliśmy rozszerzenie .gpx.
Poniższy fragment kodu wykorzystuje funkcję łączenia ciągów znaków oraz funkcje obsługujące ścieżki plików do generowania pliku wyjściowego o nazwie 1211190converted.gpx na podstawie pliku 1211190.LOG, i tak dalej.

Można również używać funkcji związanych ze ścieżkami plików do generowania ciągów znaków i wstawiania ich jako wynik. Schemat XML dla plików .gpx zawiera element opisujący metadane. Zdecydowaliśmy się wstawić nazwę pliku wejściowego do metadanych, aby wyraźnie powiązać plik wynikowy z oryginalnymi danymi. Ta strategia sprawia, że plik wynikowy jest samodokumentujący się i może pomóc w debugowaniu, jeśli trzeba prześledzić nieoczekiwany wynik do jego źródła.
Fragment kodu przedstawiony poniżej wstawia nazwę pliku źródłowego do ciągu znaków i przypisuje ten ciąg do metadanych <desc> element:

Opis, który zostanie wygenerowany, zostanie wyświetlony w wierszu 4 podglądu wyników mapowania (Podgląd wyników mapowania)
[Obrazek: Podgląd danych wyjściowych z nazwą pliku]
Filtrowanie danych wejściowych
Kluczowym elementem tego procesu mapowania danych było zastosowanie filtru do pliku wejściowego. Pliki logów GPS z kamer są zapisywane zgodnie ze specyfikacją National Marine Electronics Association (NMEA). Fragment jednego z plików wejściowych jest przedstawiony poniżej:

Po pierwszej linii, każdy zarejestrowany punkt jest opisany za pomocą dwóch zdań w formacie NMEA, gdzie typ zdania jest określony w pierwszym polu. Każde zdanie GGA zawiera informacje o czasie, szerokości geograficznej, długości geograficznej, wysokości oraz dodatkowe dane dotyczące jakości pomiaru. Każde zdanie RMC zawiera informacje o czasie, szerokości geograficznej, długości geograficznej oraz dacie.
Zdanie RMC zawiera minimalne dane, które są potrzebne do wygenerowania pliku .gpx <trkpt> element, dzięki czemu możemy użyć filtru, aby wybrać tylko te wiersze z danych wejściowych, jak pokazano tutaj:

Jeśli typ wiadomości w pierwszym polu wiersza zawiera ciąg "$GPRMC", wiersz jest przekazywany do dalszego przetwarzania. W przeciwnym razie, wiersz jest ignorowany.
Dane zawarte w pliku wejściowym również wymagały pewnych modyfikacji. Dla każdej współrzędnej geograficznej (szerokość i długość) musieliśmy połączyć kilka pól źródłowych, które definiowały stopnie, minuty i sekundy, i przekształcić je na stopnie dziesiętne. Konieczne było również połączenie pól daty i czasu oraz zapisanie wyniku w formacie ISO 8601, zgodnie z wymaganiami formatu .gpx, na przykład: 2012-11-19T20:43:23Z. Zdefiniowaliśmy każdą z tych konwersji jako funkcje użytkownika, aby ukryć ich złożoność i oddzielić je od głównego procesu mapowania.
To mapowanie również daje możliwość ponownego wykorzystania funkcji użytkownika "getElevationUS", którą zdefiniowaliśmy we wcześniejszym wpisie Oczekuj nieoczekiwanego – Altova MissionKit rozwiązuje zagadkę formatów liczbowych. Tym razem zaokrągliliśmy dane wysokościowe do trzech miejsc po przecinku, co odpowiada najbliższemu milimetrowi.
Główna część procesu mapowania danych z Camerlog do formatu GPX, wykorzystująca funkcje zdefiniowane przez użytkownika, wygląda następująco:

Oto przykład jednego z plików wynikowych, który zawiera elementy: <trk>, <trkseg> oraz kilka elementów <trkpt>.

Menu "Wyjście" w programie MapForce oferuje opcje, które pozwalają na weryfikację plików wynikowych względem schematu XML .gpx:

Jeśli chcieliby Państwo skorzystać z Altova MapForce aby przetwarzać pliki wejściowe partiami, wykorzystując własne definicje mapowań danych Kliknij tutaj, aby pobrać bezpłatną wersję próbną.