ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE FAKULTA STAVEBNÍ
BAKALÁŘSKÁ PRÁCE
PRAHA 2014
Jaroslav URIK
ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE FAKULTA STAVEBNÍ PROGRAM GEODÉZIE A KARTOGRAFIE OBOR GEOINFORMATIKA
BAKALÁŘSKÁ PRÁCE
VÝVOJ SOFTWARU PRO SBĚR DAT PŘI MAPOVÁNÍ DNA VODNÍCH PLOCH
Vedoucí práce: Ing. Zdeněk LUKEŠ, Ph. D. Katedra Geomatiky
červen 2014
Jaroslav URIK
ABSTRAKT Bakalářská práce se zabývá vývojem softwaru pro navigaci a sběr dat z modelu lodi, mapujícího dno vodního tělesa. Jejím hlavním cílem je zjednodušit ovládání modelu lodi na větší vzdálenost. Toho je být dosaženo přehlednou počítačovou aplikací zobrazující informace potřebné k navigaci, spolu s naměřenými daty, podle níž uživatel naviguje model lodi. Aplikace je psána programovacím jazykem Java a naměřená data jsou zpracována softwarem ArcGIS.
KLÍČOVÁ SLOVA počítačová aplikace, WMS, model lodi, dálkové ovládání, mapování vodního dna, sonar, sběr dat, ArcGIS, Java
ABSTRACT This bachelor thesis describes development of navigation and data collection software for model ship, performig water bottom mapping.
The main objective it to simplify
control of the model ship, especialy at long distances. That is achieved by user friendly computer application, which helps user control the model ship by displaying guidance information, together with measured data. The application is written in Java languange and the obtained data was processed by ArcGIS software.
KEYWORDS program, WMS, ship model, remote control, water bottom mapping, sonar, data collection, ArcGIS, Java
PROHLÁŠENÍ
Prohlašuji, že bakalářskou práci na téma „ Vývoj softwaru pro sběr dat při mapování dna vodních ploch“ jsem vypracoval samostatně. Použitou literaturu a podkladové materiály uvádím v seznamu zdrojů.
V Praze dne
...............
.................................. (podpis autora)
PODĚKOVÁNÍ
Chtěl bych poděkovat vedoucímu bakalářské práce Ing. Zdeňku Lukešovi, Ph.D. za připomínky a čas, který mi věnoval při konzultacích a Ing. Janu Pytlovi, Ph.D. za rady ohledně jazyka Java. Dále bych chtěl poděkovat své rodině a své přítelkyni za podporu, kterou mi poskytovali po celou dobu studia.
Obsah Úvod
1
1 Současné metody mapování vodního dna
3
1.1
Tachymetrie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
1.2
Z-Boat 1800 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
1.3
EdgeTech DF-1000
4
1.4
Letecké laserové skenování
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2 O Aplikaci
5
7
2.1
Grafické uživatelské rozhraní . . . . . . . . . . . . . . . . . . . . . . .
7
2.2
Práce s aplikací
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
2.2.1
Použití aplikace v terénu . . . . . . . . . . . . . . . . . . . . .
10
2.2.2
Plánování trasy . . . . . . . . . . . . . . . . . . . . . . . . . .
10
2.2.3
Navigace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
3 Zpracování naměřených dat
13
3.1
Sběr dat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
3.2
Zpracování dat
13
3.3
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2.1
Import dat
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
14
3.2.2
Odstranění chybných záznamů . . . . . . . . . . . . . . . . . .
14
3.2.3
Tvorba TIN . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14
3.2.4
Tvorba rastru . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
3.2.5
Tvorba vrstevnic
. . . . . . . . . . . . . . . . . . . . . . . . .
15
Zhodnocení výsledků . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
4 Komunikace s lodí 4.1
17
Přenos dat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
4.1.1
NMEA 0183 . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
4.1.2
Předzpracování zpráv . . . . . . . . . . . . . . . . . . . . . . .
18
4.1.3
Přijímané zprávy
. . . . . . . . . . . . . . . . . . . . . . . . .
18
4.1.4
Limitující faktory . . . . . . . . . . . . . . . . . . . . . . . . .
19
5 Mapové podklady 5.1
5.2
21
Využití mapových podkladů aplikací
. . . . . . . . . . . . . . . . . .
21
5.1.1
Získání a práce s mapovými podklady . . . . . . . . . . . . . .
21
5.1.2
Kartografické zobrazení . . . . . . . . . . . . . . . . . . . . . .
21
5.1.3
Souřadnicový systém . . . . . . . . . . . . . . . . . . . . . . .
21
5.1.4
Formát mapových podkladů . . . . . . . . . . . . . . . . . . .
22
5.1.5
Struktura dat . . . . . . . . . . . . . . . . . . . . . . . . . . .
22
WMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24
5.2.1
24
Komunikace s WMS serverem
. . . . . . . . . . . . . . . . . .
6 Vývoj aplikace
27
6.1
Programovací jazyk . . . . . . . . . . . . . . . . . . . . . . . . . . . .
27
6.2
Funkce aplikace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
27
6.3
Popis nejdůležitějších tříd
. . . . . . . . . . . . . . . . . . . . . . . .
30
6.4
Struktura databáze . . . . . . . . . . . . . . . . . . . . . . . . . . . .
33
6.5
Instalace aplikace . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
34
7 Závěr
35
Použité zdroje
37
Seznam použitých zkratek
39
A Datová příloha
41
B Obrazová příloha
43
Seznam obrázků 1.1
Z-Boat 1800 [1]
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2
EdgeTech DF-1000 a jeho použití [3]
. . . . . . . . . . . . . . . . . .
5
2.1
Grafické uživatelské rozhraní aplikace . . . . . . . . . . . . . . . . . .
7
2.2
Roletová nabídka s poddělením
. . . . . . . . . . . . . . . . . . . . .
8
3.1
Retenční nádrž Jiviny
. . . . . . . . . . . . . . . . . . . . . . . . . .
13
3.2
Nepravidelná trojúhelníková síť (TIN) . . . . . . . . . . . . . . . . . .
14
3.3
Volba barevné stupnice (vlevo) a klasifikace rastru (vpravo) . . . . . .
15
3.4
Technické potíže v průběhu měření
16
5.1
Zvýšení úrovně přiblížení o jeden stupeň
5.2
Odpověď WMS serveru na dotaz
6.1
Znázornění spolupráce nejdůležitějších tříd programu
. . . . . . . . .
33
B.1
Výsledný model části dna retenční nádrže Jiviny . . . . . . . . . . . .
43
B.2
Zobrazení naměřených dat v aplikaci
. . . . . . . . . . . . . . . . . .
44
B.3
Naměřená data zpracovaná v programu ArcMap . . . . . . . . . . . .
44
B.4
Model lodi využívaný v rámci této bakalářské práce . . . . . . . . . .
45
. . . . . . . . . . . . . . . . . . .
4
. . . . . . . . . . . . . . . .
23
. . . . . . . . . . . . . . . . . . . .
26
ČVUT v Praze
Úvod
Při geodetickém zaměření dna vodní plochy se povětšinou využívá člun, či loď s lidskou posádkou, která plavidlo řídí a někdy také asistuje s měřením samotným. V některých případech však mohou tyto metody být limitovány různými faktory, ať už je to cenová dostupnost či náročnost na obsluhu, nebo příliš mělké vody, nebo dokonce nebezpečí pro posádku představované například skalní stěnou narušenou erozí. Všechny výše zmíněné limity současně používaných metod byly vzaty v potaz ve studentském projektu, jehož cílem bylo vyrobit dálkově ovládaný model lodi, který bude mapovat dno vodního tělesa. Tento projekt dal vzniknout dálkově řízené loďce, vybavené sonarem pro měření hloubky a GNSS (Global Navigation Satellite System) přijímačem pro přesné měření polohy. Tato práce se snaží eliminovat jeden z nedostatků výše zmíněného projektu, kterým je velmi obtížná navigace a to především na větší vzdálenosti. Cílem této práce je vytvořit grafickou aplikaci, s jejíž pomocí bude mít uživatel přehled o aktuální poloze loďky, jejím pohybu a naměřených datech. Doposud bylo měření touto metodou založeno z velké části na odhadu a bystrém zraku. Především při větších vzdálenostech uživatel odhadoval aktuální polohu a směr plavidla, a jen stěží si mohl být jist rovnoměrným a kompletním pokrytím zkoumaného území. Díky této aplikaci by měl být uživatel schopen přímo v terénu určit, která část území je více či méně dobře zmapovaná a případné nedostatky okamžitě napravit. Účelem výše zmiňované aplikace však není pouze zjednodušit práci při měření, ale položit základy kvalitní aplikaci, která bude v budoucnu dále vyvíjena. Výsledkem dalšího vývoje by mohla být postupná automatizace celého postupu při mapování dna. Konečná aplikace by následně mohla nejen navrhnout vlastní trasu plavby, ale po této trase i sama loďku navigovat.
1
ČVUT v Praze
1
Současné metody mapování vodního dna Současné metody mapování vodního dna se dají rozdělit do třech pomyslných
skupin dle způsobu, jakým získávají informace o vodním dnu.
První způsobem
získání informace, je fyzický kontakt se dnem, například pomocí dlouhé tyče. Zástupcem této skupiny je kupříkladu tachymetrie (viz sekce 1.1). Dalším způsobem je vyslání zvukového impulsu, který se odrazí od dna zpátky k vysílači. Tato skupina by se dala ještě dále rozdělit na zařízení mapující jednotlivé body a zařízení mapující souvislé pásy dna. Zástupcem zařízení mapující jednotlivé body je například loďka využívaná v rámci této bakalářské práce (viz obrazová příloha B.4, str.45), nebo
Z-Boat 1800 (viz 1.1, str.4). Zástupcem zařízení, které mapuje vodní dno v pásech je kupříkladu EdgeTech DF-1000. Třetí pomyslnou skupinou je využití laserového paprsku, například při leteckém laserovém skenování, popsaném v sekci 1.4, str.5.
1.1 Tachymetrie Tachymetrie je geodetická metoda, při níž je současně určována jak poloha, tak i výška bodu.V současnosti se pro tuto metodu s výhodou využívá totálních stanic. Na břehu vodní plochy je vytvořeno stanovisko, či síť stanovisek, ze kterých je prováděno podrobné měření. Toto měření nejčastěji probíhá tak, že figurant na loďce projíždí vodní plochu a v pravidelných intervalech staví na dno odrazný hranol umístěný na výtyčce o známé délce.
1.2 Z-Boat 1800 Z-Boat 1800 (Obr.1.1, str.4) je na dálku ovládaný člun určený k mapování dna především mělkých vod, které nejsou přístupné větším člunů či lodím s lidskou posádkou.
Tato metoda také nachází uplatnění při mapování v oblastech, pro
které je vetší člun s lidskou posádkou nevhodný, nebo jsou pro lidskou posádku dokonce nebezpečné.
Datový přenos z člunu, pracující na frekvenci 900MHz, je
možné zachytit i na vzdálenost větší než 2km.
Člun je však omezen dálkovým
ovládáním, které je při frekvenci 2,4GHz omezeno vzdáleností 1500m. Základní sestava Z-Boat 1800 je napájena 12V baterií s kapacitou 30Ah, se kterou je schopen jezdit rychlostí 2 m/s až 150 minut. Dojezdový čas i rychlost se dají navýšit v sestavě obsahující tři 24V baterie o kapacitě 10Ah, se kterými se dojezd až 240 minut
3
ČVUT v Praze
rychlostí až 5m/s.
1. SOUČASNÉ METODY MAPOVÁNÍ VODNÍHO DNA
Takto vybavený člun váži okolo 30kg, ve kterých je zahrnuto
20kg užitečného nákladu. Součástí vybavení je i software, s jehož pomocí lze člun ovládat na větší vzdálenosti[1]. Tato metoda je založená na stejném principu, jako metoda, jíž se zabývá tato práce.
Obrázek 1.1: Z-Boat 1800 [1]
1.3 EdgeTech DF-1000 EdgeTech DF-1000 (Obr. 1.2) je speciální zařízení určené k mapování dna vodních ploch v pásech. Toto zařízení má cylindrický tvar se zakulacenou špičkou a kormidly vzadu. Zařízení je taženo za lodí, přičemž vysílá pod sebe a do stran akustický puls a zaznamenává amplitudu vrácené energie. Tímto způsobem mapuje dno v pásech o šířce od 100 do 200 metrů na každou stranu. Pro správné fungování zařízení je zapotřebí, aby dno mapovaného území obsahovalo nerovnosti nezbytné k odražení signálu zpět k zařízení. Zařízení tímto způsobem dokáže určit tvar, hrubost a složení mapovaného dna.
Tato měření obvykle bývají doplněna dalšími analýzami, pro
přesnější určení složení materiálů na dně [3].
4
ČVUT v Praze
1.4.
LETECKÉ LASEROVÉ SKENOVÁNÍ
Obrázek 1.2: EdgeTech DF-1000 a jeho použití [3]
1.4 Letecké laserové skenování Pro mapování vodního dna je použitelné i LLS (letecké laserové skenování). Při použití této metody je však zapotřebí brát v potaz vlnovou délku, pomocí níž je mapování prováděno.
Jelikož je standardně používané záření v blízkém infračer-
veném spektru vodou téměř zcela pohlcováno, je pro mapování pod vodní hladinou nutné použít zelenou nebo modrozelenou část spektra. Tato část spektra není vodou pohlcována a tím pádem se může ode dna odrazit zpět. Ve světě se s výhodou používá kombinace záření infračerveného pro mapování vodní hladiny a okolí, a záření zelenomodrého pro mapování dna. Tento systém se nazývá DIAL, neboli Differential Absorption Lidar. U klidné a průzračné hladiny je za použití tohoto systému teoreticky možné provádět mapování až do hloubky 50m. V tomto případě je však nutná výrazně nižší letová hladina (200 - 400m). [4]
5
ČVUT v Praze
2
O Aplikaci Aplikace vytvořená v rámci této práce nabízí uživateli způsob, jak na velkou
vzdálenost ovládat relativně malý model lodi (přibližně 1m).
Tato vzdálenost je
omezena pouze dosahem rádiového přenosu dat z lodi a dosahem dálkového ovládání (více v kapitole 4, str.17). Uživatel se v přehledném grafickém rozhraní dozví všechny důležité informace o stavu lodi a měřených hodnotách.
2.1 Grafické uživatelské rozhraní Grafické uživatelské rozhraní této aplikace (Obr. 2.1) je rozděleno do tří pomyslných segmentů.
Obrázek 2.1: Grafické uživatelské rozhraní aplikace
Největší část okna aplikace zaujímá panel s mapovým podkladem umístěný ve střední části aplikace.
Na tomto panelu jsou vykresleny mapové podklady, na
kterých je znázorněna poloha loďky a ujetá trasa.
Tento panel je interaktivní a
reaguje posunem mapy jak na směrové šipky, tak na kliknutí myší.
Přiblížení a
oddálení je prováděno kolečkem myši, nebo klávesami „O“ pro oddálení a „I“ pro přiblížení.
Na tomto panelu je dále možné zobrazit uživatelem definované záj-
mové území v podobě uzavřeného polygonu (funkce Create Polygon viz 6.2, str.28), v němž se dají zobrazit linie, které mají uživateli pomoci udržovat stejný rozestup
7
ČVUT v Praze
2. O APLIKACI
při mapování (funkce Create guidelines viz 6.2, str.28).
Další z funkcí aplikace
je zobrazení měřené hloubky v podobě bodů s odlišným odstínem modré barvy v závislosti na hloubce (funkce Show depth points viz 6.2, str.30). Tato funkce je velice užitečná pro zjištění případných anomálií na dně vodní nádrže, které by měly být důkladněji prozkoumány. Obrazová příloha B.2, str.44 ukazuje použití této funkce. Při srovnání s daty zpracovanými programem ArcMap (viz příloha B.3, str.44) je vidět, že již pomocí takto zobrazených surových dat si uživatel může udělat představu o povrchu dna a případných anomáliích. Ve spodní části okna aplikace se nachází stavová lišta. Na této liště jsou zobrazeny aktuální informace o stavu aplikace, navigační informace a data z loďky. Informace
1
o aplikaci zahrnují hodnotu přiblížení (viz 5.1.5, str.23), název aktuální zakázky , stav radiového spojení a velikost místa na pevném disku, které zabírají data aplikace. Z informací o lodi se uživatel dozví aktuální směr, rychlost pohybu a počet zafixovaných satelitů GPS. Směr pohybu je na stavové liště vyznačen také korouhví. Dále pak poslední změřenou hloubku, ujetou vzdálenost a vzdálenost k nejbližší linii (pokud jsou pomocné linie vytvořeny). V horní části se nachází několik roletových nabídek (Obr.2.2). Tyto nabídky slouží k získání přístupu k funkcím této aplikace a jsou dostupné kliknutím myši nebo
2
současným stiskem kláves Alt
a příslušného písmene dané nabídky. Tato písmena
jsou u každé z nabídek zvýrazněna podtržením.
Podrobný popis níže zmíněných
funkcí a přepínačů je umístěn v sekci 6.2, str.27.
Obrázek 2.2: Roletová nabídka s poddělením
1 Název, se kterým jsou naměřená data uložena v databázi 2 Levé tlačítko Alt na klávesnici
8
ČVUT v Praze
2.2.
PRÁCE S APLIKACÍ
Nabídka File obsahuje funkce s jejichž pomocí lze vytvořit, načíst, importovat, exportovat a smazat polygon reprezentující zájmové území. Tento polygon je standardně ukládán a načítán z databáze, avšak lze jej také importovat a exportovat do textového souboru.
Dále tato nabídka obsahuje ještě funkci
pro vytvoření či smazání pomocných linií.
Tyto linie jsou vázány na daný
polygon, který vyplňují. Není-li tento polygon definovaný, nedovolí aplikace linie vytvořit.
Nabídka Map je dále rozdělena (Obr.2.2, str.8) a obsahuje tyto položky:
–
Nabídka OnClick action definuje reakci aplikace na kliknutí myši. Uživatel si může vybrat mezi posunem obrazu, nebo kreslením.
–
Nabídka Base map umožňuje uživateli měnit mapové podklady. Na výběr je z ortofoto mapy nebo základních map ZM200, ZM50 a ZM10.
–
Přepínače pro zapnutí/vypnutí využívání internetového připojení, zobrazení/skrytí podkladové mapy, zapnutí/vypnutí automatického centrování obrazu na loďku a zobrazení/skrytí bodů znázorňujících hloubky.
–
Funkci pro stahování mapových podkladů.
1,𝑠𝑡𝑟.8 Nabídka Session umožňuje vytvořit novou zakázku , nebo načíst zakázku dle jména. Záznamy mohou také být načteny dle data, přičemž se jako název zakázky načte název poslední zakázky z tohoto data, existuje-li taková. Dále jsou v této nabídce funkce pro pozastavení a opětovného spuštění nahrávání zakázky, jimiž může uživatel pozastavit nahrávání například při manipulaci s plavidlem na souši.
Nabídka Receiver obsahuje funkci pro vyvolání dialogu s jehož pomocí zvolí uživatel port, přes který aplikace komunikuje s loďkou.
Nabídka Help slouží pro rychlou nápovědu.
Tato nápověda shrnuje infor-
mace potřebné pro základní ovládání aplikace a stručný popis úkonů, jež jsou potřeba vykonat před začátkem mapování.
2.2 Práce s aplikací Aplikace byla vyvíjena tak, aby byla uživatelsky co možná nejpřívětivější a její ovládání bylo intuitivní, snadné a efektivní, obzvláště při práci v terénu, pro níž je
9
ČVUT v Praze
2. O APLIKACI
aplikace primárně určena. Za pomoci nabídky Help, nacházející se na horní liště, by měl být uživatel schopen aplikaci plně ovládnout během několika minut.
2.2.1 Použití aplikace v terénu Před započetím samotného sběru dat o dnu vodní plochy je zapotřebí aplikaci spustit a nakonfigurovat. Jelikož je aplikace psaná v jazyku Java, lze spustit nezávisle na operačním systému, avšak za předpokladu že je nainstalován JVM (Java Virtual Machine) (viz sekce 6.1, str.27).
Program se spustí dvojklikem nebo z příkazové
řádky příkazem
java -jar \cesta_k_programu\aplikace.jar Pokud má uživatel předem uloženou hranici zájmového území, načte ji funkcí Load
Polygon. V opačném případě může spustit funkci Create polygon, definovat zájmové území a následně zobrazit pomocné linie funkcí Create guidelines. Příkazem Connect
receiver pak vybere příslušný sériový port, ke kterému je připojen radiový přijímač a potvrdí tlačítkem Connect . Následující kroky, kterými mohou být načtení předchozího měření, zobrazení aktuálních měřených dat, nebo automatické centrování na loďku, jsou již pouze volitelné a aplikace je tímto okamžikem plně připravena k použití. Výše zmíněné funkce jsou podrobně popsané v sekci 6.2, str.27.
2.2.2 Plánování trasy Uživatel z nabídky File nebo klávesovou zkratkou Ctrl+Shift+D aktivuje režim kreslení určený pro vyznačení zájmového území.
Pokud má uživatel toto území
již definované, může ho načíst funkcí Load Polygon.
Zájmovým územím může
být celé území vodní plochy, nebo pouze jeho část, je-li toto území rozlehlejší a bude-li mapováno po částech. Takto vybrané území je pro přehlednost zvýrazněno uzavřeným polygonem libovolné barvy a šířky.
V rámci tohoto území má uživa-
tel pomocí funkce Create guidelines možnost zobrazit pomocné linie s libovolným azimutem a rozestupem. Výše zmíněné funkce jsou podrobně popsané v sekci 6.2, str.27.
10
ČVUT v Praze
2.2.
PRÁCE S APLIKACÍ
2.2.3 Navigace Navigace modelu lodi je řešena ručně ovládanou vysílačkou, přičemž vizuální zpětná vazba je realizována právě touto aplikací. Uživatel má k dispozici údaje o poloze loďky, jejím kursu a rychlosti. Využívá-li uživatel pomocných linií, zobrazuje se na stavové liště informace o vzdáleností od nejbližší linie.
11
ČVUT v Praze
3
Zpracování naměřených dat Tato kapitola popisuje veškerou práci s daty, kterou bylo zapotřebí vykonat pro
vznik digitálního modelu dna retenční nádrže Jiviny (Obr.3.1).
V následujících
odstavcích jsou popsány všechny kroky od měření dat, až po výsledný digitální model.
Obrázek 3.1: Retenční nádrž Jiviny
3.1 Sběr dat Data jsou, po připojení aplikace k lodi, automaticky ukládána do databáze, která mimo jiné obsahuje i samostatnou tabulku pro data ze sonaru. Tato tabulka obsahuje polohu a hloubku pro každé měření sonarem. použita poslední známá poloha lodi.
Jako poloha pro data ze sonaru je
Jelikož příchozí data mohou být poškozená
(viz kapitola 4, str.17), může se stát, že k několika měřením je přiřazena stejná poloha. Takto vzniklé chyby je nutno odstranit při zpracování dat.
3.2 Zpracování dat Data byla zpracovávána v programu ArcMap 10.1 s nadstavbou 3D Analyst. Tento program poskytuje řadu nástrojů pro analýzu, editaci, zpracování a tvorbu dat. Jedinou nevýhodou tohoto programu jsou časté pády i při triviálních operacích, které velmi znepříjemňují práci s jinak kvalitním softwarem.
13
ČVUT v Praze
3. ZPRACOVÁNÍ NAMĚŘENÝCH DAT
3.2.1 Import dat Naměřená bodová data, obsahující mimo jiné souřadnice, měřenou hloubku a čas, byla vyexportována z databáze do textového souboru, přičemž jako oddělovač záznamů slouží nová řádka a jednotlivé hodnoty v záznamu jsou odděleny čárkami. Takto upravená data jsou načtena programem ArcMap 10.1, který je zobrazí v přehledné tabulce. Pomocí funkce Display XY data bylo programu sděleno, že tato data obsahují body v souřadnicovém systém WGS 1984, ve stupních a tyto body byly zobrazeny. Vstupními parametry této funkce jsou číslo sloupce se zeměpisnou šířkou, číslo sloupce se zeměpisnou délkou a souřadnicový systém importovaných dat.
Takto zobrazené body byly převedeny do formátu „Esri shapefile“, který je
nativním formátem programu ArcMap a poskytuje více možností při práci s daty.
3.2.2 Odstranění chybných záznamů Jak bylo zmíněno výše, data mohou obsahovat chyby v podobě záznamů se stejnou polohou, avšak rozdílnými hloubkami.
Tyto záznamy byly odstraněny za použití
funkce Field Calculator, jíž byl jako parametr vložen skript psaný v jazyce Python, který do pomocného sloupce označil duplicitní záznamy.
3.2.3 Tvorba TIN Z takto upravených záznamů byla vytvořena TIN (Triangulated irregular network), neboli nepravidelná trojůhelníková síť (Obr.3.2), k čemuž posloužila funkce
Create TIN. Vstupními parametry pro tuto funkci je souřadnicový systém a sloupec atributové tabulky definující výšky resp. hloubky bodů zvolené vrstvy.
Obrázek 3.2: Nepravidelná trojúhelníková síť (TIN)
14
ČVUT v Praze
3.2.
ZPRACOVÁNÍ DAT
3.2.4 Tvorba rastru Pro přehlednější vizualizaci výstupu byl vytvořen rastr funkcí Tin to Raster. Pro tuto funkci byly voleny dva vstupní parametry.
Parametr „metoda interpo-
lace“ byl zvolen na lineární a parametr „velikost pixelu“ byl zvolen na 10 pix/m (2000pix/200m). Tato funkce tedy vypočte hodnotu resp. výšku v pro každý pixel lineární interpolací a skutečná velikost takto vypočteného pixelu bude 10cm. Takto vytvořenému rastru je v nabídce vlastnosti vrstvy přidělena barevná stupnice a provedena klasifikace (Obr.3.3), čímž je vytvořena barevná hypsometrie.
Rozsah
hodnot pro klasifikaci byl určen na základě histogramu.
Obrázek 3.3: Volba barevné stupnice (vlevo) a klasifikace rastru (vpravo)
3.2.5 Tvorba vrstevnic Pro tvorbu vrstevnic byla použita funkce Contours, jejímž vstupem je rastr, pro který vygeneruje vrstevnice. interval vrstevnic.
Povinný parametr je zde pouze jeden, jímž je
Tato hodnota byla zvolena na 0,2 m.
K takto vytvořeným
vrstevnicím byly dále přidány kóty zaškrtnutím políčka Label Features ve vlastnostech vrstvy. Dále byla přidána rastrová podkladová vrstva, nadpis, měřítko, vygenerována příslušná legenda, a takto vzniklý výkres byl vyexportován do formátu pdf.
15
ČVUT v Praze
3. ZPRACOVÁNÍ NAMĚŘENÝCH DAT
3.3 Zhodnocení výsledků Z dat, zpracovaných výše uvedeným způsobem, vznikl výkres (Příloha B.1, str.43), jenž znázorňuje část dna retenční nádrže Jiviny za pomoci barevné hypsometrie. Z tohoto výkresu lze vyčíst tvar dna s hloubkami, avšak pouze přibližně. Na první pohled jsou z výkresu patrné náhlé změny hloubky a ostré hranice vrstevnic, což naznačuje možné chyby. Na vině je několik faktorů, které měly s vysokou pravděpodobností negativní vliv na měřená data. Jedním z těchto faktorů je počasí. V průběhu měření měření vál relativně silný vítr, způsobující několik decimetrů vysoké vlny, které, v kombinaci s větrem samotným, plavidlo o délce jeden metr značně rozhoupávaly.
Díky to-
muto houpání nemohlo být zaručeno, že sonar měřil hloubku přímo pod lodí a tato hloubka se mohla, v důsledku náklonu, zvětšit. Dalším faktorem, majícím vliv na kvalitu výsledného modelu, je nízká hustota bodů. Tento nedostatek je způsobený především účelem, za kterým bylo měření prováděno.
Tímto účelem bylo přede-
vším otestovat navigaci na větší vzdálenost (přes 200m) pomocí počítačové aplikace, přičemž kvalitní pokrytí body bylo až na druhém místě. Posledním z nepříznivých faktorů, který úzce souvisí s nízkým počtem měřených bodů, jsou technické potíže v podobě špatného těsnění lodního šroubu, jehož vinou se dostala voda do podpalubí (Obr.3.4). Tyto technické potíže měly za následek snížený dojezd plavidla, avšak možnou chybu způsobenou narůstajícím ponorem loďky je možno vzhledem k rozlišovací schopnosti sonaru zanedbat.
Obrázek 3.4: Technické potíže v průběhu měření
16
ČVUT v Praze
4
Komunikace s lodí Jedna z nejdůležitějších součástí modelu lodi je lodní počítač.
V podstatě se
jedná o miniaturizovaný standardní počítač, na kterém běží operační systém Linux. Tento počítač umožňuje obousměrnou komunikaci se svým okolím prostřednictvím radiového přijímače/vysílače. V současné době je pro tuto aplikaci využívána komunikace pouze jednosměrně, tj. z lodi k uživateli na pevnině. Tato komunikace je využívána pro přenos informace o poloze a hloubce.
4.1 Přenos dat Data jsou generována sonarem a GNSS (Global Navigation Satellite System) přijímačem. V obou případech mají data formát standardu NMEA 0183. Tato data jsou předzpracována lodním počítačem a následně vysílána pomocí rádia. Jelikož se při přenosu mohou posílané zprávy poškodit, je každá z nich optřena takzvaným „kontrolním součtem“ (viz. odstavec 4.1.1 – Kontrolní součet). Díky tomu mohou být poškozené zprávy automaticky vyřazeny.
Tato skutečnost však může mít za
následek ztrátu dat.
4.1.1 NMEA 0183 NMEA, neboli the National Marine Electronics Association, je nezisková organizace výrobců, dodavatelů, prodejců, vzdělávacích a dalších institucí, zabývajících se periferní námořní elektronikou. Tato organizace vytvořila protokol NMEA 0183, který slouží ke komunikaci mezi námořními přístroji. Zpráva vytvořená pomocí tohoto protokolu je řetězec znaků obsahující pouze znaky ASCII (American Standard Code for Information Interchange),
3
4
a . Zpráva vždy začíná znakem
„ $“ , za nímž následuje označení typu zprávy, jednotlivé parametry oddělené čárkami a znak „*“ za kterým následuje kontrolní součet (viz. odstavec Kontrolní součet) [6]. Např. zpráva s polohou z GPS přijímače může vypadat takto (viz. tabulka 4.1)
3 „carriage return“ - návrat na začátek řádku 4 „line feed“ - nový řádek
17
ČVUT v Praze
4. KOMUNIKACE S LODÍ
typ
tělo zprávy
kontrolní součet
zprávy $GPGGA
123519,4807.038,N,01131.000,E,1,08,0.9,545.4,M,46.9,M„
*47
Tab. 4.1: NMEA zpráva
Kontrolní součet Kontrolní součet je doplňková informace, která se předává spolu s vlastní informací a slouží k ověření, zda je vlastní informace úplná a zda při jejím přenosu nedošlo k chybě. Kontrolní součet je výsledkem nějaké předem určené operace, provedené s vlastní informací.
Příjemce informace má možnost sám kdykoliv spočítat svůj
vlastní kontrolní součet. Jakmile vypočtený kontrolní součet nesouhlasí s předaným kontrolním součtem, znamená to, že během přenosu došlo k poškození zprávy nebo k poškození kontrolního součtu.[5] V případě protokolu NMEA 0183 je tento součet dvoumístný řetězec hexadecimálních znaků.
4.1.2 Předzpracování zpráv Jelikož jsou na loďce dvě zařízení, která nezávisle na sobě posílájí svá data, může se stát, že obě zařízení pošlou zprávu ve stejný okamžik, přičemž takto přijatá „dvojzpráva“ by obsahovala nesmyslná data. Z tohoto důvodu je vyžadováno jednoduché předzpracování, jež provádí aplikace běžící na lodním počítači. Jelikož je každé zařízení, tj. sonar a GNSS (Global Navigation Satellite System) přijímač, připojeno k počítači svým portem, může je aplikace jednoduše rozlišit. Data z každého portu jsou aplikací shromažďována v zásobníku a ve chvíli, kdy aplikace usoudí, že z portu přijala kompletní zprávu, je tato zpráva rádiem poslána uživateli.
4.1.3 Přijímané zprávy Data přijímaná z loďky jsou touto aplikací shromažďována v zásobníku do chvíle, než je přijata sekvence „
3
4 “ , neboli „nový řádek“.
V tu chvíli je
zpráva považována za kompletní a je předána k dalšímu zpracování. Další zpracování spočívá v porovnání kontrolního součtu s vypočteným kontrolním součtem. Pokud nejsou kontrolní součty stejné, je tato zpráva zahozena, čímž je zajištěno, že se k dalšímu zpracování dostanou pouze platné zprávy.
18
Následuje třídění dle typu
ČVUT v Praze
4.1.
PŘENOS DAT
zprávy a následně zpracování dat z této zprávy. V aplikaci není nijak omezeno, jaké typy zpráv mohou být zpracovávány, avšak pro získání potřebných dat jsou použity pouze tyto typy zpráv:
$GPGGA – Zpráva, z níž jsou získávány informace o poloze přijímače a počtu zafixovaných satelitů
$GPVTG – Zpráva, z níž jsou získávány informace o azimutu a rychlosti pohybu loďky.
$SDDBT – Zpráva, z níž jsou získávány informace o hloubce v metrech nebo ve stopách.
4.1.4 Limitující faktory Limitujícím faktorem tohoto typu měření je především vzdálenost, avšak pouze za předpokladu příme viditelnosti. Je-li tato podmínka zaručena, pohybuje se dosah okolo 1500 m.
19
ČVUT v Praze
5
Mapové podklady Aplikace využívá veřejně dostupných mapových podkladů v rastrové podobě,
poskytovaných prostřednictvím služby WMS (Web Map Service) Českým úřadem zeměměřičským a katastrálním. Jako mapové podklady jsou využívány vrstvy Ortofoto, ZM10, ZM50 a ZM200.
5.1 Využití mapových podkladů aplikací Jelikož je aplikace primárně určena pro práci v terénu, je tomuto účelu přizpůsoben i přístup k mapovým podkladům. Z důvodu nízké rychlosti připojení k síti internet prostřednictvím mobilního připojení, které je mimo velkoměsta pro službu WMS zcela nedostačující, umožňuje aplikace svými funkcemi stažení mapových podkladů o vybraném území a uložení těchto podkladů na pevný disk pro využití při práci v terénu.
5.1.1 Získání a práce s mapovými podklady Mapové podklady jsou aplikací primárně vyhledávány na pevném disku počítače. Pokud nejsou podklady nalezeny, pokusí se je aplikace získat online pomocí WMS. Takto získané podklady jsou nejen zobrazeny uživateli, ale také uloženy na pevný disk pro využití v budoucnu. Podklady jsou ukládány do předdefinované adresářové struktury v domácím adresáři uživatele (viz 5.1.5, str.22). Aplikace uživateli také nabízí možnost stažení mapových podkladů pro větší území najednou(viz 6.2, str.28).
5.1.2 Kartografické zobrazení WMS služba poskytovaná Českým úřadem zeměměřičským a katastrálním umožňuje mapové podklady stahovat v několika kartografických zobrazeních. Data stahovaná touto aplikací jsou v kartografickém zobrazení UTM (Universal Transverse Mercator).
5.1.3 Souřadnicový systém Ačkoli aplikace přijímá a ukládá údaje o poloze v zeměpisných souřadnicích, veškeré interní operace, tedy i operace s mapovými podklady, jsou prováděny v systému pravoúhlých souřadnic UTM33N, v metrech.
21
ČVUT v Praze
5. MAPOVÉ PODKLADY
5.1.4 Formát mapových podkladů Mapové podklady získané prostřednictvím WMS mají v případě této aplikace podobu čtvercových rastrů o hraně 700 pixelů ve formátu *.PNG (Portable Network Graphics).
Z těchto "mapových dlaždic" je následně vykreslen výsledný mapový
podklad.
5.1.5 Struktura dat Mapové podklady jsou získávány a ukládány na pevný disk na základě třech parametrů, kterými jsou:
Vrstva
– Aplikace má na výběr ze čtyř vrstev
–
Ortofoto – Letecké snímkování zemského povrchu
–
ZM10 – Základní mapa České republiky 1:10 000
–
ZM50 – Základní mapa České republiky 1:50 000
–
ZM200 – Základní mapa České republiky 1:200 000
Souřadnice
– Souřadnice severovýchodního rohu rastru v metrech v pořadí
–
Severní šířka, neboli Northing
–
Východní délka, neboli Easting
Zoom level
– Hodnota přiblížení (viz 5.1.5, str.23)
Na základě těchto parametrů je vygenerována cesta k souboru a jeho název. Takto vygenerovaná cesta se skládá z následujících parametrů v následujím pořadí: 1. Domovský adresář uživatele 2. Název Adresáře s daty – resources 3. Typ dat, v případě podkladové mapy – basemap 4. Název vrstvy
5. Hodnota přiblížení, skládájící se z předpony „lvl_" a hodnoty
6. Název souboru, skládající se z hodnot souřadnic severovýchodního rohu rastru zaokrouhlených na 6 desetinných míst a oddělených spodním podtržítkem.
22
ČVUT v Praze
5.1.
VYUŽITÍ MAPOVÝCH PODKLADŮ APLIKACÍ
7. Koncovkou danou formátem rastru, tedy .PNG (Portable Network Graphics)
Na operačním systému Windows Vista a novějším, může cesta k rastru vypadat takto:
C:/Users/uživatel/resources/basemap/ortofoto/lvl_3 /5587500.000000_375000.000000.png
Zoom level Je
abstraktní
blížení.
hodnota
definující
míru
při-
Na základě této hodnoty se určí délka
strany jednoho čtverce rastrového podkladu ve skutečnosti.
Takto
definované
čtverce
jsou
následně staženy z internetu a poskládány vedle sebe, čímž je utvořena podkladová mapa. Díky této hodnotě jsou v aplikaci přesně stanoveny souřadnice sousedních čtvercových rastrů.
Pro
výpočet délky strany se zvolí konstanta, která je dělena číslem 2 umocněným na hodnotu přiblížení (Zoom level).
Matematický předpis vy-
padá takto:
𝑆𝑡𝑟𝑎𝑛𝑎 = 𝐾 ÷ 2𝑍𝑜𝑜𝑚𝑙𝑒𝑣𝑒𝑙
Obrázek 5.1: Zvýšení úrovně při-
Kde K je libovolná konstanta a ZoomLevel je
blížení o jeden stupeň
hodnota přiblížení. V této aplikaci je K zvoleno 100 000. To znamená, že plocha jednoho mapového čtverce při hodnotě přiblížení
2 0, je rovna 10 000km . Tato hodnota byla přibližně zvolena tak, aby při hodnotách přiblížení kolem nuly a menších, bylo vidět značné území našeho státu a dalo se tak v mapě lépe zorientovat při spuštění aplikace.
23
ČVUT v Praze
5. MAPOVÉ PODKLADY
5.2 WMS WMS neboli Web Map Service je standardizovaný protokol pro poskytování georeferencovaných mapových podkladů ve formě rastrových dat v různých formátech. Tato služba může na základě URL požadavku kombinovat jak rastrová, tak i vektorová data z nichž je následně vygenerován rastrový obrázek, který je zaslán uživateli.
5.2.1 Komunikace s WMS serverem Komunikace se serverem probíhá přes protokol HTTP (Hypertext Transfer Protocol), pomocí nějž se pošle serveru konkrétní příkaz, který je součástí URL (Uniform resource locator) adresy. Adresa URL je řetězec znaků s pevně stanovenou strukturou
protokol://server.com/podadresar?parametry Aby mohl server dekódovat jednotlivé parametry příkazu, používají se speciální znaky s jejichž pomocí se nastaví parametry výstupního rastru. V následující tabulce jsou uvedeny některé znaky, které jsou při komunikaci s WMS serverem používány nejčastěji.
Znak
Funkce
/
Oddělovač adresářů a podadresářů
?
Začátek parametrů v požadavku
=
Přiřazení hodnoty parametru
&
Oddělovač parametrů.
,
Oddělovač jednotlivých hodnot, pokud jich parametr obsahuje více Tab. 5.1: Speciální znaky v URL
Různé WMS servery podporují řadu příkazů, které se mohou server od serveru lišit. Existuje však několik příkazů, které by standardně měly podporovat všechny WMS servery. Mezi nejzákladnější a také nejčastěji používané, při získávání dat ze serverů, patří příkaz GetCapabilities a příkaz GetMap.[7]
24
ČVUT v Praze
5.2.
WMS
Dotaz GetCapabilities Abychom mohli začít používat WMS server, jediné co potřebujeme znát je jeho URL (Uniform resource locator) adresa.
Pokud máme tuto informaci, můžeme
vytvořit dotaz typu GetCapabilities.
http://geoportal.cuzk.cz/WMS_ORTOFOTO_PUB/WMService.aspx?service=WMS &request=getCapabilities Jak napovídá název, pomocí dotazu GetCapabilities se uživatel dozví podrobnosti o konkrétním serveru. Dotaz typu GetCapabilities má dva povinné parametry, jimiž jsou:
Parametr
SERVICE sděluje serveru, jakou službu chce klient využít
Parametr
REQUEST specifikuje typ dotazu
Jako odpověď na tento dotaz obdržíme XML (Extensible Markup Language) dokument, ve kterém jsou specifikovány všechny dostupné služby. V tomto výčtu najdeme mimo jiné:
Položku
Version – verze WMS protokolu
Položku
Layer – výčet vrstev, které můžeme použít
Položku
CRS
– výčet souřadnicových systémů, ve kterém můžeme dotazy
zadávat
Položku
Bounding box – rozsah poskytovaných dat v podporovaných souřad-
nicových systémech
25
ČVUT v Praze
5. MAPOVÉ PODKLADY
Dotaz GetMap Díky informacím získaným příkazem GetCapabilities může uživatel vytvořit dotaz typu GetMap, ve kterém specifikuje všechny povinné parametry a odešle serveru. Příkaz GetMap může vypadat takto:
http://geoportal.cuzk.cz/WMS_ORTOFOTO_PUB/WMService.aspx? VERSION=1.3.0&REQUEST=GetMap&LAYERS=GR_ORTFOTORGB &CRS=EPSG:32633&BBOX=456050.0,5549900.0,456831.25,5550681.25 &WIDTH=700&HEIGHT=700&STYLES=&FORMAT=image/png Výsledkem dotazu GetMap je rastr splňující všechny zadané parametry. Pokud jsou zadané parametry chybné, nebo některý z povinných parametrů chybí, odpoví server v podobě textu ve formátu XML (Extensible Markup Language), ve kterém specifikuje chybu.
Obrázek 5.2: Odpověď WMS serveru na dotaz
26
ČVUT v Praze
6
Vývoj aplikace Tato kapitola se zabývá vnitřním uspořádáním aplikace. Jsou zde popsány nej-
důležitější součásti programu.
6.1 Programovací jazyk Program, jímž se zabývá tato práce, je psán v programovacím jazyce Java. Jazyk Java je objektově orientovaný programovací jazyk, speciálně navržený tak, aby vyžadoval co nejméně závislostí.
Cílem tohoto programovacího jazyka je:
„write
once, run anywhere“ , neboli „napiš jednou, spusť kdekoli“ . Toho je dosaženo za pomoci takzvaného JVM (Java Virtual Machine), což je virtuální stroj, pomocí nějž jsou spouštěny všechny programy napsané v jazyce Java, bez ohledu počítačovou architekturu.[8] Program byl vyvíjen v NetBeans IDE 8.0 (Integrated development environment). NetBeans je jedním z předních vývojových prostředí pro jazyk Java, nabízející přehledné, uživatelsky příjemné prostředí se širokou škálou funkcí a uživatelských rozšíření. Toto vývojové prostředí podporuje kromě jazyka Java i další jazyky včetně HTML5, PHP a C/C++.
6.2 Funkce aplikace V tomto odstavci jsou popsány jednotlivé funkce, jichž může uživatel při práci s aplikací využívat. Funkce jsou řazeny abecedně, s názvem nábídky, v níž se nacházejí, uvedeném v závorce za názvem funkce.
Funkce
App usage
(Help) zobrazí nápovědu, obsahující jednotlivé kroky,
které jsou zapotřebí vykonat, před začátkem měření za pomoci této aplikace.
Přepínač
Funkce
Base map visible (Map) zobrazí, nebo skryje podkladovou mapu.
Begin recording (Session) zapne označování dat ukládaných do databáze
názvem současné zakázky
1,𝑠𝑡𝑟.8
. Tato funkce, spolu s funkcí Pause recording,
je užitečná pro zpřehlednění záznamů v databázi.
Funkce
Clear guidelines (File) smaže pomocné linie.
Funkce
Connect receiver
(Receiver) zobrazí dialog, pomocí nějž uživatel
zvolí port, který bude použit pro příjem dat z loďky.
27
ČVUT v Praze
Funkce
6. VÝVOJ APLIKACE
Create guidelines
(File) vytvoří pomocné linie, určené k usnad-
nění navigace loďky v rámci předem definovaného zájmového území.
Toho
je docíleno zobrazením dialogu, ve kterém uživatel zvolí rozestup v metrech, načež je vyzván k zadání dvou bodů uvnitř zájmového územ (polygonu vytvořeného funkcí Create polygon).
Tyto body jsou zadány kliknutím levým tlačítkem
myši, přičemž při zadávání druhého bodu tažením stisknuté myši, se uživateli znázorní budoucí linie. Těmito liniemi lze stále pohybovat, dokud není tlačítko myši uvolněno.
Funkce
Create new session (Session) vytvoří v databázi novou zakázku1,𝑠𝑡𝑟.8 .
Název této zakázky je vyznačen i na stavové liště aplikace.
Funkce
Create Polygon
(File) vytvoří uzavřený polygon, s jehož pomocí
je vyznačeno zájmové území.
Vytváření polygonu probíhá tak, že uživatel,
kliknutím levého tlačítka myši, definuje jednotlivé body zájmového území. Uživatel má také možnost specifikovat tloušťku a barvu čáry v dialogu, který je zobrazen při zavolání této funkce.
Funkce
Download extent (Map) stáhne mapové podklady pro vybrané území.
Toto území je vybráno tažením myši současně se stisknutým levým tlačítkem, přičemž je vybírané území znázorňováno obdélníkem. Následně se zobrazí dialog vyzývající uživatele ke zvolení druhů podkladových map a rozsahu úrovní přiblížení. Potvrzením tohoto výběru započne stahování mapových podkladů.
Funkce
Draw action (Map → OnClick action) umožní uživateli kreslit poly-
gon. Toho je dosaženo stejným způsobem, jako ve funkci Create polygon.
Funkce
Exit (File) ukončí běh aplikace.
Funkce
Export polygon (File) uloží polygon do uživatelem zvoleného souboru
na pevném disku. Soubor obsahuje textové řetězce, přičemž oddělovačem je nový řádek. První tři řádky definují typ útvaru, barvu a šířku čáry. Následují dvojice souřadnic oddělené čárkou. Souřadnice bodů jsou v systému souřadnic UTM33N, v metrech. Začátek souboru může vypadat následujícím způsobem:
POLYGON COLOR:java.awt.Color[r=255,g=200,b=0]
28
ČVUT v Praze
6.2.
FUNKCE APLIKACE
BRUSH WIDTH:2.5 5547874.834333148, 449969.53473772266 5547815.12451172, 449982.9275948655 ...
Funkce
Import polygon (File) načte polygon ze souboru uloženém na disku
počítače. Formát souboru je popsán ve funkci Export polygon
Funkce
Keyboard controls
(Help) zobrazí nápovědu s možnostmi ovládání
aplikace pomocí klávesnice.
Funkce
Load polygon (File) nabídne uživateli seznam polygonů uložených v
databázi. Po zvolení polygonu a potvrzení, je tento polygon načten a zobrazen.
Funkce
Load session by date
(Session) umožní uživateli načíst a zobrazit
měřené data v rámci jednoho dne.
Funkce
Load session by name
(Session) nabídne uživateli seznam zakázek
uložených v databázi. Po zvolení zakázky a potvrzení, jsou data z této zakázky načtena a zobrazena.
Funkce
Mouse controls
(Help) zobrazí nápovědu s možnostmi ovládání ap-
likace pomocí myši.
Funkce
Ortofoto
(Map
→
Base map) přepne mapový podklad na ortofoto
mapu.
Funkce
Pan action (Map → OnClick action)
Funkce
Pause recording
(Session) pozastaví označování dat ukládaných do
databáze názvem současné zakázky
1,𝑠𝑡𝑟.8
.
Tato funkce, spolu s funkcí Begin
recording, je užitečná pro zpřehlednění záznanamů v databázi.
Funkce
Save polygon (File) vyzve uživatelel k zadání unikátního jména, pro
ukládaný polygon. Po zadání jména a potvrzení je polygon uložen do databáze.
Přepínač
Ship auto center (Map) zapne, nebo vypne automatické centrování
obrazu na poslední známou polohu plavidla.
29
ČVUT v Praze
Přepínač
6. VÝVOJ APLIKACE
Show depth points (Map) zapne, nebo vypne zobrazení bodů zná-
zorňujících měřené hloubky.
Přepínač
Use internet connection
(Map) zapne, nebo vypne automatické
stahování mapových podkladů z internetu.
Funkce
ZM10 (Map → Base map) přepne mapový podklad na mapu ZM10.
Funkce
ZM200 (Map → Base map) přepne mapový podklad na mapu ZM200.
Funkce
ZM50 (Map → Base map) přepne mapový podklad na mapu ZM50.
6.3 Popis nejdůležitějších tříd V tomto odstavci jsou popsány nejdůležitější třídy této aplikace. Spolupráce jednotlivých tříd je naznačena na diagramu 6.1, str.33.
Kompletní dokumentace, s
popisem všech tříd, jejich metod a funkcí, je obsahem datového přílohy (příloha A).
Třída
CommDecoder
zajišťuje rozpoznání druhu přijaté NMEA (National
Marine Electronics Association) zprávy a následné získání informací z této zprávy. Nejprve je zavolána metoda decodeType, pomocí níž se určí druh přijaté zprávy. Tato metoda ověřuje kontrolní součet (viz. odstavec 4.1.1 – Kontrolní součet) a obsah zprávy.
Na základě této kontroly vrátí hodnotu konkrétního typu
zprávy, nebo hodnotu indikující poškozenou zprávu. Na základě předchozího třídění je dle typu zprávy zavolána příslušná metoda, jejíž parametrem je přijatá zpráva. Tato třída nabízí metody pro získávání informací o poloze, azimutu, rychlosti pohybu, počtu zafixovaných satelitů a měřené hloubce. Přijímané zprávy musí být platné dle standardu NMEA0183.
Třída
CommPortReceiver
nekonečné smyčky.
zajišťuje příjem dat ze sériového portu pomocí
Přijímaná data jsou uchovávána v zásobníku.
maných datech je hledána sekvence označující konec řádku.
V přijí-
Při zachycení
této sekvence je přijatá zpráva považována za kompletní a odeslána v podobě tzv. „události“ k dalšímu zpracování. Toho je docíleno podtřídou CommEmi-
tor, která obsahuje seznam zaregistrovaných „posluchačů“, kterým je zpráva
30
ČVUT v Praze
6.3.
POPIS NEJDŮLEŽITĚJŠÍCH TŘÍD
tímto způsobem odeslána. Registrace „posluchače“ je umožněna metodou ad-
dEmitListener. Parametrem této metody je odkaz na instanci třídy Emitor, což je rozhraní implementující metodu signalEmission, jejímž parametrem je zpráva určená k odeslání. Přijetí takto posílané zprávy je řešeno třídou, která implementuje třídu Emitor a je zaregistrována jakožto „posluchač“.
Třída
CommPortWork zajišťuje vše potřebné pro práci se sériovým portem.
Prostřednictvím metody list vypíše seznam dostupných portů. K vybranému portu ze seznamu je možné se připojit metodou connect, jejímž parametrem je název zvoleného portu. Tato metoda nastaví parametry sériového portu a vytvoří instanci třídy CommPortReceiver, načež spustí její nekonečnou smyčku zavoláním instance_tridy.start.
Třída
ConnectDialog
nabídne prostřednictvím třídy CommPortWork sez-
nam sériových portů dostupných v počítači a s využitím této třídy se rovněž připojí ke zvolenému portu.
Třída
DBWork
(Database) zprostředkovává práci s databází.
Databáze,
umístěná ve výchozím adresáři (viz sekce 6.4), je připojena metodou connect. Tato metoda rovněž ověří existenci potřebných tabulek v databázi metodou
createTables. Metoda connect je volána konstruktorem třídy. Tato třída dále obsahuje metody pro vkládání a načítání měřených dat a polygonů.
Třída
MapStatusBar
rozšiřuje třídu javax.swing.JPanel. Pomocí této třídy
jsou zobrazovány všechny důležité informace v přehledném panelu.
Vzhled
tohoto prvku je popsán v sekci 2.1, str.8, ve třetím odstavci.
Třída
MapView
rozšiřuje třídu javax.swing.JPanel. Pomocí této třídy jsou
zobrazeny mapové podklady, na nichž jsou zobrazena naměřená data v podobě projeté trasy, měřených hloubek a další. Toho je docíleno zděděnou metodou
paint, která umožňuje kreslit čáry, polygony, obrázky a další prvky, na panel představující tuto třídu.
U vykreslovaných útvarů jsou vždy specifikovány
souřadnice v souřadnicovém systému obrazovky, takže je nutné souřadnice do tohoto systému převést.
Převod mezi souřadnicovými systémy zajišťují
metody této třídy. Tato třída dále obsahuje množství metod pro používání a práci s mapovými
31
ČVUT v Praze
podklady.
6. VÝVOJ APLIKACE
Mapové podklady s nimiž se v této aplikaci pracuje , se sklá-
dají z čtvercových dlaždic o dané straně, hodnoty přiblížení a souřadnicích severo-západního rohu (viz sekce 5.1.4). Tato třída si mimo jiné udržuje informaci o současné poloze severo-východního rohu panelu s mapou ve světových souřadnicích a matici mapových dlaždic, jenž jsou v daný okamžik viditelné. Vykreslení aktuálního pohledu na mapu probíhá v několika krocích. Nejprve je na základě světových souřadnic severo-východního rohu mapového panelu a velikosti tohoto panelu rozhodnuto, zda současně vykreslované dlaždice stále pokrývají celou plochu panelu (metoda isViewWithinMap). Pokud tomu tak není, je zavolána metoda fillRasterMatrix, která ve spolupráci s třídou Raster-
Work naplní matici mapových dlaždic správnými dlaždicemi. Tyto dlaždice jsou primárně vyhledávány na pevném disku počítače, avšak pokud nejsou tyto podklady dostupné, zajistí si tatáž metoda (fillRasterMatrix) jejich stažení z internetu. Stahování mapových podkladů je prováděno samostatnými vlákny, přičemž místo stahovaných dlaždic je vykreslena dlaždice s nápisem „loading“. Vlákna stahující mapové podklady jsou periodicky kontrolována a v okamžik, kdy všechna vlákna dokončila stahování podkladů, je opět zavolána metoda
fillRasterMatrix, která zajistí naplnění matice mapových dlaždic správnými, nyní již dostupnými, dlaždicemi.
Tento proces je součástí každého posunu,
přiblížení a oddálení mapy. Třída MapView dále obsahuje podtřídu UserMouseImputListener (implementující rozhraní ActionListener, MouseListener, MouseMotionListener a Mouse-
WheelListener), která definuje reakce aplikace na podněty vyvolané uživatelem pomocí myši, nebo podobného zařízení. Vzhled této třídy v rámci grafického rozhraní je popsán v sekci 2.1, str.7, ve druhém odstavci.
Třída
MapWork je centrální třída spojující ostatní třídy do jednoho funkčního
celku, jak je vidět na obrázku 6.1, str.33.
Tato třída zajišťuje příjem dat
z lodi pomocí své podtřídy ShipInputListener.
Třída ShipInputListener im-
plementuje rozhraní Emitor, s jehož pomocí je schopna reagovat na události generované třídou CommPortReceiver, která přijímá data z loďky.
Z takto
získaných zpráv jsou třídou CommDecoder extrahovány potřebné informace.
32
ČVUT v Praze
6.4.
STRUKTURA DATABÁZE
Tyto informace jsou uživateli zobrazeny postřednictvím tříd MapView a Map-
StatusBar a zaznamenány do databáze prostřednictvím třídy DBWork. Celý výše zmíněný proces je vykonán při přijetí každé nepoškozené zprávy. Třída MapWork dále obsahuje podtřídu UserKeyboardInputListener (implementující rozhraní KeyListener), která definuje reakce aplikace na podněty vyvolané tlačítkem, nebo kombinací více tlačítek stisknutých na klávesnici. Třída MapWork rovněž definuje roletové nabídky (viz sekce 2.1, str.8, čtvrtý odstavec). Toho je docíleno třídou MapMenuBar (rozšiřující třídu JMenuBar), v níž jsou definovány všechny možnosti obsažené v roletových nabídkách.
Třída
RasterWork umožňuje získávání mapových podkladů z internetu a je-
jich následné ukládání, nebo načítání. Kromě stahování rastrů z internetu pomocí metody getRastOnline, umožňuje tato třída stahování rastrů v samostatných vláknech. Toho je docíleno podtřídou ImageDownloader implementující třídu Runnable. Při stahování rastru touto cestou je vytvořena instance třídy
ImageDownloader, v jejímž konstruktoru jsou definovány parametry stahovaného rastru a odkaz na tuto třídu je předán třídě FutureTask, s jejíž pomocí je spuštěno nové vlákno.
Obrázek 6.1: Znázornění spolupráce nejdůležitějších tříd programu
6.4 Struktura databáze Pro práci s daty byla použita SQlite databáze. Výhodou tohoto řešení je databáze, skládající se z jediného souboru, bez nutnosti použití serverové aplikace. Databáze
33
ČVUT v Praze
6. VÝVOJ APLIKACE
je umístěna ve složce resources/database/ v domovském adresáři uživatele, podobně jako je tomu u mapových podkladů (viz sekce 5.1.5, str.22).
Interní struktura
databáze se skládá ze čtyř tabulek.
Tabulka
gps
obsahuje čas přijetí zprávy a souřadnice bodů získané z GPS
přijímače na lodi.
Tabulka
sonar obsahuje čas přijetí zprávy a měřené hloubky získané ze sonaru,
spolu se souřadnicemi poslední známé polohy plavidla.
Tabulka
polygon obsahuje souřadnice uživatelem definovaných polygonů před-
stavujících zájmová území.
Tabulka
pgon_atr
obsahuje informace o polygonech uložené v tabulce poly-
gon.
6.5 Instalace aplikace I přes to, že je software psán programovacím jazykem Java (viz sekce 6.1, str.27), vyžaduje aplikace pro své spuštění přítomnost knihoven umožňujících komunikaci přes sériový port. Tyto knihovny jsou součástí datové přílohy (viz příloha A, str.41) a pro správný chod aplikace, je nutné tyto knihovny umístit do domovského adresáře Javy, dle návodu umístěného spolu s knihovnami (soubor README.txt).
34
ČVUT v Praze
7
Závěr V rámci této bakalářské práce vznikla aplikace, s jejíž pomocí lze navigovat
model lodi mapující vodní dno.
Tato aplikace okamžitě zobrazuje měřená data
a tím umožňuje uživateli okamžitě prověřit případné anomálie na dně zkoumané vodní nádrže. Při testování aplikace v terénu však bylo zjištěno, že využití pouze této aplikace k ovládání lodi nestačí. Především při menších vzdálenostech je jednodužší loďku ovládat bez aplikace. Při větších vzdálenostech, kdy se malá loď téměř ztrácí z dohledu a ovládání pomocí aplikace je nezbytné, je při zatáčení zapotřebí snížit rychlost a odhadovat míru zatočení, dokud aplikace neobdrží další zprávu o poloze.
Právě
nízká frekvence příchozích zpráv určujících polohu loďky (1Hz) je příčinou tohoto problému, jehož řešení je nezbytné pro další vývoj projektu. Jedním z řešení výše zmíněného problému by mělo být zvýšení frekvence odesílání zpráv s polohou. Toho by mělo být dosaženo změnou nastaví GPS přijímače. Dalším možným řešením je přidáním digitálního kompasu do výbavy plavidla. Tím by byl zajištěn nepřetržitý tok informací o směru plavby, což by velmi napomohlo vyřešení tohoto problému. řešení.
Nejlepším řešením by však byla kombinace obou předchozích
Dalším problémem, se kterým se aplikace potýkala, byly výpadky v úda-
jích o poloze.
Jelikož tyto výpadky nebyly tak časté, mohl by se tento problém
vyřesit výše zmíněným zvýšením frekvence posílaných zpráv. Pokud by však toto řešení nebylo dostačující, musel by se tento problém vyřešit robustnějším rádiovým spojením s protokolem odolným vůči chybám. I přes to, že aplikace splňila všechny stanovené cíle, zůstává mapování vodního dna tímto způsobem stále náročné na ovládání. Navzdory tomuto částečnému neúspěchu si však myslím, že tato aplikace poskytla solidní základy pro projekt, jenž v budoucnu vyřeší všechny výše zmíněné problémy, například plně automatizovaným ovládáním.
35
ČVUT v Praze
Použité zdroje [1] The
Oceanscience
Z-BOAT
Group:
1800
Remote
Hydrographic
Survey
Boat [online]. Dostupné z URL:
Z-Boat/Z-Boat.aspx>. [2] Povodí
Vltavy
tupné
s.p.:
Vyměřovací
loď
Valentýna
II.
[online].
Dos-
URL:
z
vymerovaci-lode/valentyna>. [3] Center for Rivers and Estuaries, Earth Institute, Columbia University: Sed-
iment Processes and Bottom Environments:
Survey Method and Tools [on-
line]. Dostupné z URL:
research/bot_mapping/methods.php>. [4] UHLÍŘOVÁ
Kateřina,
ZBOŘIL
Aleš,
VÚV
T.G.MASARYKA,
v.
v.
i.:
Možnosti využití laserového snímání povrchu pro vodohospodářské účely [online]. Dostupné z URL:
pdf?PHPSESSID=uxbjycatmqkz>. [5] Wikipedia: tupné
z
Kontrolní součet [online]. Poslední aktualizace 22. 02. 2014. Dos-
URL:
8Det>. [6] Klaus
Betke:
NMEA
data
[online].
Poslední
aktualizace
08. 2001.
Dos-
tupné z URL:.
OpenGIS Web Map Service (WMS) Im-
[7] Open Geospatial Consortium Inc.:
plementation Specification
[online].
Poslední
aktualizace
15. 03. 2006.
Dos-
tupné z URL:
14416>. [8] Wikipedia: Java (programming language) [online]. Dostupné z URL:
.
37
ČVUT v Praze
Seznam použitých zkratek ASCII
American Standard Code for Information Interchange
DIAL
Differential Absorption Lidar
GNSS
Global Navigation Satellite System
GPS
Global Positioning System
HTTP
Hypertext Transfer Protocol
IDE
Integrated development environment
JVM
Java Virtual Machine
LLS
Letecké laserové skenování
NMEA
National Marine Electronics Association
PNG
Portable Network Graphics
TIN
Triangulated Irregular Net
URL
Uniform resource locator
WMS
Web Map Service
XML
Extensible Markup Language
39
ČVUT v Praze
A
Datová příloha
Obsah přiloženého datového CD.
Aplikace
– src.zip – zdrojový kód aplikace – javadoc.zip – dokumentace aplikace – app.zip – balík obsahující aplikaci s potřebnými knihovnami – libraries.zip
– dodatečné knihovny potřebné pro správný chod ap-
likace
Data
– data.zip – data naměřená za pomoci aplikace
Text
– jaroslav-urik-bp-2014.pdf – text bakalářské práce v elektronické podobě – text.zip – zdrojový kód pro LATEX k textu
41
ČVUT v Praze
B
Obrazová příloha
Obrázek B.1: Výsledný model části dna retenční nádrže Jiviny
43
ČVUT v Praze
B. OBRAZOVÁ PŘÍLOHA
Obrázek B.2: Zobrazení naměřených dat v aplikaci
Obrázek B.3: Naměřená data zpracovaná v programu ArcMap
44
ČVUT v Praze
Obrázek B.4: Model lodi využívaný v rámci této bakalářské práce
45