To już ostatni artykuł z cyklu kursów programu edukacyjnego Akademik. W poprzednich publikacjach rozważaliśmy budowanie raportów za pomocą okien dialogowych oraz podłączanie raportu do danych Fast Report.
Obiekt Mapa służy do wyświetlania dwuwymiarowych map graficznych w formatach ESRI shapefile (. shp), Open Street Map (. osm) i GPS-track (GPS Exchange File, . gpx).
http://en.wikipedia.org/wiki/Shapefile
https://en.wikipedia.org/wiki/OpenStreetMap
https://en.wikipedia.org/wiki/GPX
Obiekt Mapa składa się z następujących elementów:
Jeden obiekt Mapy może wyświetlać jedną lub kilka warstw. Każda warstwa zawiera oddzielną mapę.
W trybie projektanta oraz w oknie przeglądania gotowego raportu można zarządzać wyświetlaniem mapy za pomocą myszy:
- przesuwanie myszy zmienia skalę mapy;
- klikając lewym przyciskiem myszy, można przesuwać mapę;
- klikając wewnątrz wielokąta, można ustawić jego właściwości w inspektorze obiektów.
Minimalne i maksymalne wartości skalowania są ustawiane we właściwościach MinZoom i MaxZoom. Wartości te można ustawić w inspektorze obiektów.
Obiekt Mapa posiada wiele ustawień, które można zmienić w edytorze obiektów. W tym celu kliknij dwukrotnie na obiekt lub wybierz "Edytuj..." z jego rozwijanego menu:
Dodawanie warstw
Obiekt Mapa może zawierać jedną lub kilka warstw. Lista warstw jest wyświetlana w lewym górnym rogu edytora:
Aby dodać nową warstwę, kliknij przycisk "Dodaj...". Pojawi się następujące okno:
Na tym etapie należy wybrać typ warstwy:
- mapa z pliku (. shp/.dbf, . osm, . gpx). Jest to najczęściej używany typ map. Na przykład, można wydrukować mapę świata i zaznaczyć kraje, w których sprzedaż była wyższa niż określona wartość;
- dane kartograficzne z aplikacji. Twoja aplikacja musi podać współrzędne geograficzne (para wartości - szerokość i długość geograficzna), które zostaną wyświetlone jako punkt na mapie. Punkty mogą posiadać napisy i być różnej wielkości i/lub koloru, w zależności od określonych danych. W praktyce ten typ mapy jest wykorzystywany jako druga warstwa (pierwsza, podstawowa, jest pobierana z pliku mapy). Przykładowo, w warstwie podstawowej wyświetlana jest mapa danego kraju, a w warstwie drugiej punkty z nazwami miejscowości, w których była sprzedaż. Wielkość i kolory punktów można ustawić tak, aby widoczny był poziom sprzedaży w danym mieście.
W przypadku wyboru warstwy opartej na pliku mapy należy dodatkowo wskazać sposób przechowywania danych kartograficznych:
- dane są osadzane w pliku raportu. W takim przypadku raport może znacznie zwiększyć swój rozmiar;
- plik raportu odnosi się do pliku mapy bez osadzania. Tryb ten jest przydatny w przypadku posiadania kilku raportów wykorzystujących te same mapy.
Należy pamiętać, że duże mapy (ponad 30 Mb) lub mapy z dużą liczbą wielokątów (ponad 20 000) znacznie spowolnią wykonywanie raportu.
Ustawianie wyglądu
W tym celu należy przejść do zakładki Wygląd i wybrać odpowiednią warstwę:
W tym miejscu można ustawić kolor i styl obramowania wielokątów mapy, a także wybrać paletę kolorów. Jeśli ustawimy podświetlanie wielokątów kolorem zależnym od danych analitycznych (będzie to opisane poniżej), to paleta będzie ignorowana.
Na mapie mogą pojawić się napisy, np. nazwy państw na mapie świata. Typ i wygląd napisów można ustawić w zakładce Etykiety:
Jeśli jako typ warstwy wybierzemy mapę z pliku . shp, konieczne jest wskazanie pola, z którego będzie pobierany napis. Z reguły jest to pole NAZWA. Dla mapy świata zawartej w demo FastReport można wybrać następujące pola:
- NAME (na przykład Rosja)
- ABBREV (na przykład Rus.)
- ISO_A2 (na przykład RU)
- ISO_A3 (na przykład RUS)
Lista pól będzie inna dla różnych map.
Podłączanie do danych
Większość raportów wykorzystuje obiekt Mapy nie jako taki, lecz do wyświetlania informacji analitycznych. Na przykład, może to być sprzedaż w różnych krajach. W tym celu należy połączyć warstwę z danymi. Można to zrobić w edytorze mapy, wybierając warstwę i przechodząc do zakładki Dane. Podłączenie do danych różni się w zależności od typu warstwy (z pliku mapy lub geodanych z aplikacji):
- jeśli typ warstwy jest wskazany jako mapa z pliku, zakładka Dane wygląda tak:
W takim przypadku aplikacja musi wyświetlić następujące dane:
- nazwa (np. nazwa kraju);
- wartość liczbową (np. sprzedaż w danym kraju).
Utwórzmy tabelę Sprzedaż z następującymi polami i danymi:
Country Sales Total
------- ----------
USA 500000
Germany 1200000
Russia 300000
W takim przypadku dane powinny być ustawione w następujący sposób:
- źródło danych - Sprzedaż
- dane przestrzenne, kolumna - wybierz pole, które odpowiada nazwie kraju w pliku mapy. Z reguły jest to pole "NAME".
- dane przestrzenne, wartość - [Sprzedaż. Kraj]
- dane analityczne, wartość - [Sales.SalesTotal]
- dane analityczne, funkcja - "Suma". Funkcja ta jest wykorzystywana w przypadku, gdy dla danego kraju istnieje kilka napisów o różnych wartościach.
Pole "Przeskaluj wielokąt" umożliwia przeskalowanie wielokąta o wskazanej nazwie do wielkości całego obiektu Mapy. Na przykład, aby przeskalować Rosję na mapie świata, należy w tym polu podać wartość "Rosja" (w cudzysłowie).
- jeśli typ warstwy jest oznaczony jako dane dostarczane przez aplikację, zakładka "Dane" wygląda następująco:
W takim przypadku aplikacja musi wyświetlić następujące dane:
- dane przestrzenne - szerokość i długość geograficzna;
- etykieta (np. nazwa miasta);
- wartość liczbowa (np. sprzedaż w danym mieście).
Utwórzmy tabelę Sprzedaż z następującymi polami i danymi:
Latitude Longitude CityName SalesTotal
-------- --------- -------- ---------
48.13641 11.57753 Munchen 50000
50.94165 6.95505 Koln 36000
W takim przypadku dane powinny być ustawione w następujący sposób:
- źródło danych – Sales
- dane przestrzenne, szerokość geograficzna - [Sales.Latitude]
- dane przestrzenne, długość geograficzna - [Sales.Longitude]
- dane przestrzenne, etykieta - [Sales.CityName]
- dane analityczne, wartość - [Sales.SalesTotal]
- dane analityczne, funkcja - "Suma". Funkcja ta jest wykorzystywana w przypadku, gdy dla danego miasta występuje kilka napisów o różnych wartościach.
Podkreślenie danych kolorem
Po podłączeniu warstwy do danych pojawia się pytanie - w jakiej formie będą wyświetlane informacje analityczne (np. sprzedaż w różnych krajach)? Najprostszym sposobem jest ustawienie wyświetlania napisów w taki sposób, aby obok nazwy kraju wyświetlane były dane o sprzedaży (patrz rozdział "Ustawianie wyświetlanych wartości"). Dużo wygodniej jest jednak pomalować kraje na określone kolory w zależności od wielkości sprzedaży. W tym celu musimy ustawić skalę kolorów w zakładce "Zakresy kolorów":
Skala barw jest zbiorem wartości: wartość minimalna; wartość maksymalna; kolor. Takich zestawów (zakresów) może być kilka. Aby ustawić skalę należy wskazać ile zakresów będzie ona zawierać, następnie ustawić wartości minimalne i maksymalne w każdym zakresie oraz ustawić kolor:
Domyślnie, wszystkie wartości są ustawione jako "Auto". W takim przypadku FastReport automatycznie obliczy minimalne i maksymalne wartości dla każdego zakresu i wybierze kolor z wstępnych ustawień "Kolor początkowy", "Kolor pośredni" i "Kolor końcowy". Ten tryb może być używany w większości przypadków. Ustawienie "Współczynnik zakresu" zmienia rozkład wartości wzdłuż skali.
Po ustawieniu skali kolorów, w dolnej części mapy pojawia się wskaźnik pasmo kilku kolorowych prostokątów:
Wygląd i położenie wskaźnika można ustawić wybierając element Mapa na liście warstw i przechodząc do zakładki "Skala kolorów":
Podkreślanie danych za pomocą wielkości
Jeżeli typ warstwy jest wskazany jako dane dostarczone przez aplikację, to wartości będą wyświetlane jako punkt z napisem. Wielkość punktu można powiązać z danymi w mniej więcej taki sam sposób, jak w przypadku wyróżniania kolorem. Można to zrobić w zakładce "Zakresy wielkości":
Skala wielkości jest zbiorem wartości: minimalna; maksymalna; wielkość w pikselach. Takich zestawów (zakresów) może być kilka. Aby ustawić skalę, należy wskazać, ile zakresów ma ona zawierać, a następnie w każdym z nich ustawić wartości minimalne i maksymalne, nie zapominając o wielkości.
Domyślnie wszystkie wartości są ustawione jako "Auto". W tym przypadku FastReport automatycznie obliczy minimalne i maksymalne wartości dla każdego zakresu i weźmie rozmiar z ustawień wstępnych "Rozmiar początkowy" i "Rozmiar końcowy". Ustawienie "Współczynnik zakresu" zmienia rozkład wartości wzdłuż skali.
Jak korzystać z interaktywnych map w FastReport VCL 2021
Interaktywne mapy stały się bardzo popularne po pojawieniu się Google Map. Mapy te umożliwiają poruszanie się po mapie, skalowanie w górę i w dół oraz posiadają wiele innych funkcji. Po wprowadzeniu FastReport VCL 2021, takie mapy mogą być osadzane w raportach. W tym celu należy pobrać mapę w jednym z dwóch dostępnych formatów i osadzić ją w raporcie za pomocą obiektu Mapy.
Można korzystać z map w formatach . shp i . osm, a także z map GPS w formacie . gpx.
Format . shp jest formatem ShapeFile. Jest to specjalny format do przechowywania wektorowych danych geoinformacyjnych. Został opracowany przez amerykańską firmę ESRI w latach 90-tych. Obecnie jest to jeden z najpopularniejszych formatów stosowanych w systemach geoinformacyjnych.
W rzeczywistości ShapeFile nie jest pojedynczym plikiem. Oprócz pliku . shp, w skład zestawu wchodzą również pliki . shx i .dbf.
Pierwszy z nich, . shp, jest geometrycznym opisem kształtów. Plik . shx posiada indeks pozycji do wiązania kształtów ze sobą. Plik .dbf zawiera informacje o kształtach z pliku . shp.
Ponieważ jest to produkt komercyjny, niektóre z map mogą być płatne.
Format . osm jest formatem OpenStreetMap.
Jest to format do przechowywania danych geograficznych oparty na xml. Jak wynika z nazwy, jest to otwarty projekt utrzymywany wyłącznie przez wolontariuszy. Ten projekt internetowy jest globalną mapą Ziemi. Wolontariusze stale dodają nowe dane geolokalizacyjne oraz zdjęcia lotnicze. Projekt jest bardzo popularny i ma wielu uczestników. Dlatego też mapy są dość szczegółowe. Wszystkie mapy, zarówno w formacie . osm jak i . shp są dwuwymiarowe, bez wysokości nad poziomem morza.
Ponieważ projekt jest bezpłatny, mapy są również bezpłatne.
Na początek potrzebujemy mapy. Obiekt Mapy obsługuje trzy formaty plików: . shp, . osm, . gpx.
Dwie pierwsze to mapy wektorowe, druga to zestaw tras i śladów dla map. Możesz pobrać mapę w jednym z dostępnych formatów, a następnie dane GPS w nowej warstwie.
Zanim zajmiemy się obiektem Mapy, ustalmy skąd możemy wziąć takie mapy. Gotowe mapy można pobrać w Internecie. Wiele stron oferuje zarówno płatne jak i darmowe mapy w obu formatach.
Jest jeszcze jeden sposób na uzyskanie pliku mapy w formacie. osm. Jest to specjalna usługa – interaktywna mapa Ziemi. Serwis ten umożliwia wybranie potrzebnego obszaru i wyeksportowanie go do pliku. Wielkość wyeksportowanego obszaru jest jednak ograniczona. Z reguły obszar ten zawiera jedną miejscowość lub jej część. Zobaczmy, jak to się robi:
Po kliknięciu "Eksportuj", przeglądarka pobiera plik . osm. Usługa jest więc bardzo przydatna, jeśli potrzebujesz pokazać na mapie tylko niewielki obszar. Jeśli chcesz tylko poeksperymentować, możesz pobrać gotowe pliki PortoSantoTrack.osm i PortoSantoTrack.gpx z FastReport VCL 2021.
Utwórz raport i dodaj do strony obiekt Mapa. Przy okazji, obiekt ten można umieścić w dowolnym paśmie z wyjątkiem "Data". Po dodaniu obiektu od razu zobaczymy jego edytor.
Obiekt jest na razie pusty. Widzimy tylko ustawienia ogólne, skalę kolorów i skalę wielkości.
Ważne jest, że można wyświetlić mapę w jednej warstwie lub podzielić ją na kilka warstw.
Jeśli podzielimy mapę na kilka warstw, każda z nich jest ustawiana osobno - kolor, czcionka, szerokość linii itp. Przy różnych ustawieniach dla poszczególnych warstw możemy np. pokolorować rzekę na niebiesko, a szlaki handlowe na czerwono. Obiekty mapy opisane są tagami w pliku XML (OSM). W każdej warstwie wybieramy znaczniki (obiekty) do wyświetlenia. Następnie w ustawieniach ustawiamy parametry (kolor, czcionkę, szerokość linii itp.). Ogólnie rzecz biorąc, wyświetlanie mapy warstwa po warstwie pozwala na dowolne ustawienie obrazu.
Jeśli wyświetlasz mapę w jednej warstwie, ustawienia są włączone dla wszystkich obiektów mapy i nie można ustawić wyświetlania jej poszczególnych elementów.
Należy zaznaczyć, że dla map w formacie . shp dostępne jest tylko wyświetlanie jednowarstwowe.
Aby dodać mapę, należy kliknąć Dodaj...:
Pojawia się okno dodawania warstwy. Wybierz plik z mapą lub GPS. Plik można włączyć do raportu za pomocą odpowiedniej opcji. Poniżej znajdują się dwa kolejne warianty dodawania warstwy:
- pusta warstwa z danymi z aplikacji - dane do budowy mapy mogą być pobierane nie tylko z pliku, ale również z bazy danych. Tworzymy więc pustą warstwę i ustawiamy połączenie ze źródłem danych;
- pusta warstwa interaktywna - o ile dobrze zrozumiałem, ta funkcja nie została jeszcze zaimplementowana. Zakłada ona możliwość ręcznego tworzenia warstwy za pomocą prymitywów.
Kliknij OK. Jeśli pobierzemy plik . osm, pojawi się okno wyboru tagów:
Uwaga! Jeśli klikniemy przycisk "Anuluj", wszystkie znaczniki zostaną automatycznie wybrane dla bieżącej warstwy. Zrobimy to jednak w inny sposób.
Przyciskiem ze strzałką przesuwamy znaczniki w prawo. Jeśli chcemy wyświetlić mapę w kilku warstwach, wybieramy znaczniki niezbędne dla bieżącej warstwy. Dla przykładu, do pierwszej warstwy przenieśliśmy prawie wszystkie znaczniki, oprócz znaczników autostrady i drogi wodnej:
Na dole znajduje się filtr tagów. Kliknij ОK, a otrzymasz prawie pełną mapę:
W ustawieniach warstwy 1 w zakładce Wygląd wybieramy Rozmiar punktu równy 0, tak aby nie przeszkadzał:
Kilka słów o ustawieniach warstw. Są one wyświetlane w pięciu zakładkach:
- Dane - aby użyć geodanych z bazy danych;
- Wygląd - ustawienie wyglądu linii;
- Zakresy kolorów - ustawienie kolorów dla automatycznego cieniowania obiektów na mapie;
- Zakresy rozmiarów - aby ustawić tabelę rozmiarów lub siatkę rozmiarów;
- Etykiety - aby ustawić etykiety.
Dodaj jeszcze jedną warstwę w taki sam sposób jak poprzednio. Tym razem wybierz znacznik autostrada. W zakładce Wygląd zmień kolor obramowania na bordowy. Teraz autostrady mają kolor bordowy.
Dodajemy trzecią warstwę. Tym razem wybieramy tag waterway. W Border Color zmieniamy kolor dróg wodnych na niebieski. Ustawiamy wartość Border Width na 2.
Wybierz jakiś pastelowy kolor dla cieniowania tła w ustawieniach Mapy.
Teraz potrzebujemy nazw. Wybierz pierwszą warstwę. W ostatniej zakładce Label wybieramy wartość Name dla Label Kind oraz wartość Name dla Label column.
Mapa została dodana, teraz zobaczmy jak będzie wyglądał ślad GPS dla tej mapy. Dodajemy jeszcze jedną warstwę i wybieramy plik z rozszerzeniem . gpx.
W zakładce Wygląd wybierz jasny kolor dla opcji Kolor obramowania:
Mapa jest skończona. Teraz uruchamiamy raport.
Widać wyraźnie jasnoróżowy ślad GSP. Po mapie możemy poruszać się za pomocą myszki oraz skalować w górę i w dół za pomocą scrolla myszki. W prawym górnym rogu znajduje się blok filtracji. Można w nim wyłączyć niepotrzebne warstwy. Dla przykładu wyłączamy ostatnią warstwę - tor:
Występuje problem z dodawaniem mapy przez warstwy. Trzeba ręcznie dodać potrzebne tagi do warstwy. Ale efekt jest znacznie lepszy niż po dodaniu wszystkich tagów do jednej warstwy.
Teraz wiesz już o wszystkich podstawowych funkcjach FastReport VCL 2021. Bądź kreatywny i twórz swoje własne wspaniałe raporty. Życzymy Ci sukcesu w imieniu firmy Fast Report!