---
title: "Przetwarzanie wielu plików wejściowych w ramach jednego mapowania danych"
date: "2013-01-29"
categories: 
  - "applications"
  - "data-integration"
tags: 
  - "data-mapping"
  - "mapforce"
description: Odkryj, jak efektywnie przetwarzać wiele plików wejściowych do mapowania danych za pomocą programu Altova MapForce. Ten przewodnik omawia użycie znaków wieloznacznych, funkcji ścieżek plików oraz technik filtrowania.
---
Status: #blog

Tags:  #data-mapping #mapforce

Categories: [ETL](/blog/pl/category/etl.md) | [data-integration](/blog/pl/category/data-integration.md)
# 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](https://www.altova.com/pl/mapforce.html) 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.

![Lista plików źródłowych używanych do konwersji danych](https://lh4.ggpht.com/-Y_WZhryIjkY/UPl5wriQH7I/AAAAAAAAA9Q/EsluCIUq068/clip_image001%25255B3%25255D.png?imgmax=800 "Directory list of source files for data conversion")

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

![Lista plików wygenerowanych automatycznie](https://lh3.ggpht.com/-_QzOFmBto78/UPl5xBjlsjI/AAAAAAAAA9Y/DIJBSZ6AdMw/clip_image002%25255B3%25255D.png?imgmax=800 "List of automatically generated output files")

<!--more-->

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.

![Używanie symbolu wieloznacznego w pliku wejściowym mapowania](https://lh3.ggpht.com/-iqz0XDhHvLQ/UPl5xo-viaI/AAAAAAAAA9g/TO9klug7KLc/clip_image003%25255B3%25255D.png?imgmax=800 "Using a wildcard for the mapping input file")

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.

![Funkcje obsługujące ścieżki plików w bibliotece funkcji MapForce](https://lh5.ggpht.com/-JxIKHZXrzEo/UPl5xzHgSnI/AAAAAAAAA9o/6APxltAkffU/clip_image004%25255B3%25255D.png?imgmax=800 "File path functions in the MapForce function library")

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.

![Wykorzystanie funkcji ścieżki z funkcją tekstową](https://lh4.ggpht.com/-l6ypssdA9Mg/UPl5ydkZBjI/AAAAAAAAA9w/2IfnpeT0TDY/clip_image005%25255B3%25255D.png?imgmax=800 "Using path functions with a string function")

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:

![Mapowanie nazwy pliku jako danych wyjściowych](https://lh4.ggpht.com/-_NjzoK77594/UPl5zLiSFyI/AAAAAAAAA94/3E_Qvk6srt8/clip_image006%25255B3%25255D.png?imgmax=800 "Mapping the file name as output data")

Opis, który zostanie wygenerowany, zostanie wyświetlony w wierszu 4 podglądu wyników mapowania ([Podgląd wyników mapowania](https://www.altova.com/pl/mapforce/mapping-output.html))

**[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:

![Przykładowe dane z dziennika GPS kamery](https://lh6.ggpht.com/-My1iWbnP1Fs/UPl5z4xF7tI/AAAAAAAAA-I/dmH9bWwphCI/clip_image008%25255B3%25255D.png?imgmax=800 "Sample data from the camera GPS log")

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:

![Filtrowanie danych wejściowych w celu wyodrębnienia wierszy](https://lh5.ggpht.com/-u3MGw07n5Jg/UPl50MRDs2I/AAAAAAAAA-M/Jdm8sOiyLko/clip_image009%25255B3%25255D.png?imgmax=800 "Filtering the input data to extract rows")

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](https://www.altova.com/blog/2013/01/expect-unexpected-altova-missionkit.html). 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:

![Rdzeń procesu mapowania danych z wykorzystaniem funkcji użytkownika](https://lh6.ggpht.com/-2HVaK82dfyo/UPl50fC_aHI/AAAAAAAAA-Y/1rMavSy31hM/clip_image010%25255B3%25255D.png?imgmax=800 "Core of the data mapping with user functions")

Oto przykład jednego z plików wynikowych, który zawiera elementy: `<trk>`, `<trkseg>` oraz kilka elementów `<trkpt>`.

![Przykładowe dane wyjściowe](https://lh6.ggpht.com/-HQudomQ_V9o/UPl51JbUgXI/AAAAAAAAA-g/OH2DiYSvrZU/clip_image011%25255B3%25255D.png?imgmax=800 "Sample output data")

Menu "Wyjście" w programie MapForce oferuje opcje, które pozwalają na weryfikację plików wynikowych względem schematu XML .gpx:

![Wyniki walidacji](https://lh6.ggpht.com/-9PvYWtWIYh0/UPl51dQrWfI/AAAAAAAAA-o/1NI8SHJzfLg/clip_image012%25255B3%25255D.png?imgmax=800 "Validation results")

**Jeśli chcieliby Państwo skorzystać z** [**Altova MapForce**](https://www.altova.com/pl/download-trial.html) **aby przetwarzać pliki wejściowe partiami, wykorzystując własne definicje mapowań danych** [Kliknij tutaj, aby pobrać bezpłatną wersję próbną](https://www.altova.com/pl/download-trial.html)**.**
