GIS w nowoczesnym wydaniu, czyli aplikacja mapowa 3D w NetWorkS!

Geneza aplikacji

W firmie NetWorkS!, od początku jej powstania, funkcjonuje aplikacja mapowa GLOBUS, która wspiera całą organizację, zarówno w początkowych latach kształtowania się firmy jak i w kolejnych m.in. podczas wdrażania sieci 4G. Oparta jest na ArcGIS API for JavaScript w wersji 3.x (obecnie 3.21). Z biegiem lat wymagania co do niej rosły, pojawiły się oczekiwania dot. wizualizacji danych 3D. Równolegle na stronach Esri w 2016r. opublikowano pierwszą wersję ArcGIS API for JavaScript 4.x. Pojawiła się również możliwość pozyskania przydatnych danych, takich jak budynki 3D w formacie GML opublikowane przez GUGiK. Wszystko to zaowocowało pomysłem stworzenia nowej aplikacji opartej na nowym API i uwolnionych na stronie geoportal.gov.pl danych.

Przyjazny interfejs

Dobra aplikacja wymaga dobrego zaplanowania. Prace deweloperskie zostały poprzedzone konsultacjami i spotkaniami w celu najlepszego dobrania układu mapy i zapewnienia właściwego odbioru wszystkich funkcjonalności. Takie usprawnienia jak:

  • przyjazny interfejs,
  • zapamiętywanie włączonych warstw i widoku w plikach cookie oraz w URL,
  • płynne przechodzenie z różnych poziomów do innych aplikacji/informacji dostępnych w firmie, odtwarzanie widoku w zewnętrznych aplikacjach mapowych,
  • możliwość włączania całych grup i podgrup warstw,
  • podpowiedzi do używanych narzędzi,
  • wstępne zaznaczanie warstw po najechaniu na grupę/podgrupę (graficzna podpowiedź, jakie warstwy zostaną potencjalnie włączone),
  • bogata paleta map podkładowych,
  • czytelna legenda,
  • duża liczba logicznie ułożonych warstw,możliwość przeglądania atrybutów każdego obiektu w postaci wyskakujących okienek

wpływają na wygodę użytkowania oraz sprawiają, że aplikacja mapowa staje się w firmie centrum pracy. To ona jest punktem startowym do włączenia innych systemów, a nie na odwrót.

Rys. 1. Interfejs tabeli zawartości aplikacji

Aspekty techniczne

Aplikacja GLOBUS to przede wszystkim praca techniczna oraz sprzęt i oprogramowanie. Architektura aplikacji oraz serwerów ma duży wpływ na wydajność i użytkowanie. Zgromadzone dane zostały opublikowane na silniku ArcGIS Enterprise (w wersji 10.7.1). Wykorzystaliśmy również produkt ArcGIS Image Server w celu dodania możliwości dynamicznej zmiany wartości pikseli na mapie. Oprócz tego dane opracowywane były w aplikacji ArcGIS Pro (w wersji 2.4.1), która ze względu na 64-bit’ową architekturę dobrze znosiła nawet skomplikowane analizy i znaczne ilości danych. Naturalną konsekwencją był wybór ArcGIS API for JavaScript, który w łatwy sposób konsumuje opublikowane serwisy Esri oraz pozwala na pełne wykorzystanie ich możliwości. Esri zapewnia coraz bogatszą paletę gotowych rozwiązań do budowania aplikacji mapowych, takich jak Web AppBuilder for ArcGIS czy ArcGIS Experience Builder, które pozwalają na zbudowanie bardzo zaawansowanych i przyjaznych użytkownikowi aplikacji mapowych za pomocą wygodnych kreatorów. Trzeba jednak pamiętać, że można również potraktować ArcGIS API for JavaScript jako silnik do sprawnego wyświetlania i przetwarzania opublikowanych na platformach Esri serwisów, natomiast cały interfejs można zastąpić własnym serwisem, dostosowanym do indywidualnych potrzeb firmy. Możliwe jest więc korzystanie z dowolnych zewnętrznych bibliotek (jak przy każdej innej stronie internetowej), np. bibliotek tworzących dynamiczne wykresy, a także osadzać aplikację mapową korzystając z wybranych framework’ów.

16 milionów budynków w jednej warstwie

Od początku prac wiadomo było, że aplikacja będzie posiadać tryb 3D, w którym jedną z najważniejszych części będą budynki. W celu stworzenia jak najwierniejszej kopii rzeczywistych budynków oparliśmy się głównie na zasobach GUGiK, opublikowanych na Geoportalu w formacie GML w standardach LoD2 (10 województw) i LoD1 (6 województw). Przy pomocy oprogramowania Esri, z dodatkowym użyciem skryptów Python, udało nam się zarówno wczytać bryły do geobazy, jako geometria Multipatch, jak i złączyć je w jedną warstwę dla całego kraju (publikowane dane podzielone były na powiaty).

Dodatkowo warstwę uzupełniono o budynki OSM (OpenStreetMap) oraz wygenerowane zostały sztucznie obrysy na podstawie punktów adresowych, którym wysokości przypisano na podstawie Numerycznego Modelu Pokrycia Terenu oraz zbudowanego modelu statystycznego.

Rys. 2. Fragment warstwy 16mln budynków 3D

Drzewa i Lasy

Jeśli warstwa budynków wydaje się mieć wiele obiektów, to co z drzewami w Polsce? Również i taką warstwę udało się nam stworzyć. Nie oznacza to, że każde drzewo zostało pomierzone i odzwierciedlone jako punkt. Na podstawie warstw poligonowych obszarów leśnych, parków, a nawet cmentarzy, została wygenerowana nieregularna siatka drzew wraz z przypisaną wysokością z modelu statystycznego. Całkowita liczba drzew dla obszaru Polski wyniosła 1 miliard, co stanowi całkiem dobry pogląd na roślinność (zarówno w analizach jak i wizualizacjach). Użytkownik może zdecydować, czy chce wyświetlać drzewa w postaci pojedynczych obiektów czy postaci hybrydowej – dla miast w postaci osobnych drzew, a dla terenów leśnych w postaci brył 3D obrazujących lasy.

Rys. 3. Wizualizacja lasów w postaci brył

Rys. 4. Wizualizacja warstwy 1 miliarda drzew w postaci pojedynczych obiektów

Wydajność

Drzewa i budynki to nie jedyne obiekty 3D dostępne w aplikacji. Na zachowanie wydajności (nawet przy ponad 160 warstwach, jakie są obecnie podłączone do aplikacji), a także sprawne wczytywanie obiektów 3D, wpływają:

  • odpowiednie użycie ArcGIS API for JavaScript (m.in. właściwe dobieranie typów warstw),
  • oszczędzanie pamięci,
  • agregowanie danych pobieranych z serwera przy dodawaniu warstw,
  • zwalnianie zasobów przy każdej możliwej okazji
  • kolejność wczytywanych bibliotek

Liczne źródła danych (geometria wektorowa, rastry, bryły, grafika) wpływają na sposób ich wyświetlania i wybór odpowiedniego serwisu. W celu lepszego odzwierciedlenia rzeczywistości stworzone zostały modele stacji bazowych (wieże trójkątne, czworokątne, strunobetonowe, maszty z odciągami itp.). Mogą być dodane do widoku 3D jako warstwa. Również na etapie tworzenia tych obiektów należało znaleźć kompromis pomiędzy dokładnością obiektu, a jak najmniejszą wielkością pliku modelu.

Rys. 5. Przykładowy model – maszt z odciągami

Dodatkowe funkcjonalności

Wizualizacja warstw to tylko część funkcjonalności. Oprócz wyświetlenia danych inżynierowie planowania radiowego i optymalizacji oraz kadra zarządcza, mają do dyspozycji szereg narzędzi ułatwiających podejmowanie decyzji o przyszłych inwestycjach i zmianach w sieci. Do dyspozycji są m.in.:

– linie widoczności (Line of Sight) pomiędzy obserwatorem a wybranymi punktami na mapie,

Rys. 6. Przykład użycia narzędzia linii widoczności (Line of Sight)

– przekroje pionowe uwzględniające pokrycie terenu,

Rys. 7. Przykład użycia narzędzia profilu pionowego

– możliwość generowania przybliżonej strefy dopuszczalnego pola elektromagnetycznego (PEM) wytwarzanego przez stacje bazowe,

Rys. 8. Przykład użycia narzędzia do analizy PEM

– pomiary powierzchni i odległości (2D i 3D),

Rys. 9. Przykład użycia narzędzia pomiaru powierzchni

Rys. 10. Przykład użycia narzędzia pomiaru odległości 3D

– możliwość generowania jednego lub wielu okręgów o zadanych odległościach od wybranego punktu na mapie,

Rys. 11. Przykład użycia narzędzia do generowania okręgów

– wstawianie wież na żądanie i wirtualny spacer z wybranego punktu,

Rys. 12. Przykład użycia narzędzia do wstawiania wież z parametrami

– statystyki w postaci wykresów,

Rys. 13. Przykład gotowego raportu w panelu Analytics (dane losowe)

– przykładowe statystyki w postaci pierścieni wokół stacji bazowej,

Rys. 14. Przykład wizualizacji statystyk

– transformacja współrzędnych.

Czy taką aplikację może zrobić jedna osoba?

Oczywiście tak, jednak trwałoby to bardzo długo. Prace nad aplikacją podzielone były na kilka obszarów:

  • pozyskanie, obróbka, łączenie i transformacja danych,
  • stworzenia warstw i publikacji serwisów,
  • opracowanie wizualizacji i szaty graficznej,
  • prace deweloperskie,
  • zapewnienie odpowiednich zasobów i serwerów

Konieczna była również dobra współpraca IT, które zapewniło hardware dla serwerów oraz konfiguruje  zaporę sieciową. Pomimo zaangażowania pracowników prace wymagały sporych nakładów czasu, a to nadal nie koniec.

Najbliższe plany

Lista funkcjonalności, o jakie chcemy wzbogacić aplikację, już teraz sięga kilkudziesięciu pozycji i wciąż rośnie, gdyż w trakcie korzystania rodzą się nowe pomysły. Przede wszystkim chcielibyśmy dodać kilka nowych narzędzi, takich jak generowanie rastra obrazującego pole widzenia z wybranego punktu na podstawie rastra Numerycznego Modelu Pokrycia Terenu (narzędzie geoprzetwarzania) oraz inne funkcjonalności przydatne w telekomunikacji dedykowane inżynierom planowania radiowego. Planujemy również dodać wizualizację 3D dla linii sieci transmisyjnej.

Oprócz tego duży nacisk położymy na rozwój panelu analiz danych. Chcielibyśmy umożliwić tworzenie własnych zestawień. Użytkownik miałby więc wybór warstwy, z której chciałby uzyskać statystyki i wizualizację na mapie, dodane zostaną również filtry atrybutów oraz miejsce na wklejanie własnych danych (np. w postaci par współrzędnych i kolumna opisowych), wokół których możliwe będzie przeprowadzenie analizy. Dodatkowo chcemy rozbudować gotowe raporty.

Część prac została już w tym kierunku wykonana – zaznaczenie obiektów na mapie narysowaną geometrią (wraz z opcjonalnym buforem), skutkuje aktualizacją tabeli atrybutów i powiązanego wykresu.

Rys. 15. Przykład wykonanej analizy za pomocą obiektu z buforem w panelu Analytics

Na poprawę wydajności czeka też już gotowe narzędzie, pozwalające na wizualizację 3D wspomnianych wcześniej statystyk w kontekście warstwy pokrycia terenu.

Rys. 16. Przykład wizualizacji statystyk w kontekście warstwy pokrycia terenu

Przeprowadziliśmy również testy wizualizacji chmury punktów utworzonych w aplikacji Drone2Map for ArcGIS na podstawie zdjęć zrobionych podczas nalotów dronem.

Rys. 17. Wizualizacja chmury punktów utworzonej w aplikacji Drone2Map for ArcGIS na podstawie nalotów dronem na stację bazową

Aplikacja z założenia jest responsywna, możliwa jest praca na monitorach o różnej wielkości i rozdzielczości (w tym laptopach) oraz zmiana wielkości okna przeglądarki. Ze względu na bogactwo zawartości, nie jest w pełni przeznaczona do korzystania na urządzeniach mobilnych i ciężko byłoby zrobić jedną wersję spełniającą zasadę ‘mobile first’. Dlatego w celu lepszego wykorzystania potencjału zgromadzonych danych, potrzebna byłaby ewentualnie nowa, nieco odchudzona wersja dedykowana na smartfony i tablety, jednak w tej chwili nie mamy takich planów.

Dalszy rozwój będzie związany z realizacją pomysłów zgłaszanych przez użytkowników.