|
|
Vytvoření grafického rozhraní pro komunikaci s uživateli metainformačního systému CAGI Stanislav MarenčíkInstitut ekonomiky a systémů řízení VŠB – TU OSTRAVA - Hornicko Geologická fakulta Třída 17. listopadu 708 33 Ostrava-Poruba email: Stanislav.Marencik@seznam.cz
Abstrakt Tato diplomová práce měla za cíl vytvoření aplikací, provádějící činnosti související s evidencí pokrytí prostorové složky dat. Úvod práce patří popisu grafických rozhraní vytvořených aplikací. Druhá část se již věnuje problematice programování. Je zde uveden způsob ukládání da t pomocí SŘBD, datový model aplikace, dále pak popsána použitá prostorová indexace. Další kapitoly se věnují problematice zobrazení geoprvků na obrazovce a následují kapitoly, popisující celkový běh aplikací.Cíl práce Cílem práce bylo vytvoření rozšiřujícího modulu Metainformačního systému CAGI s důrazem na snadnost použití běžnými uživateli. Metainformační systém byl založen na komunikaci HTML kódu na straně klienta s CGI programem na straně serveru. Pomocí této technologie je ukládána popisná složka met adat. Avšak jazyk HTML neposkytuje dostatečně výkonné nástroje (a to i přes možnou spolupráci s JavaScriptem) pro zadávání a prohlížení grafické složky dat. Tato diplomová práce má za úkol odstranit tento nedostatek volbou nové technologie.Jelikož všechna data jsou ukládána do databáze, jedním z prvních úkolů mělo být vytvoření datového modelu. Datový model má umožňovat ukládání prostorové složky dat. S databází by mělo spolupracovat několik druhů klientských programů. V první řadě je to program pro zadává ní plošného rozsahu jednotlivých datových sad. Uživatelé by měli mít možnost zadávat rozsah několika způsoby. A to vybráním připravených administrativních jednotek, určením souřadnic lomových bodů polygonu a nebo zadáním čísel mapových listů. Program by měl také umožňovat práci v režimu běžného prohlížení. V tomto případě není možno měnit plošné pokrytí, ale je možné si ho alespoň prohlédnout s využitím zobrazovacích operací (zvětšení/zmenšení a posun). Posledním požadavkem bylo umožnit vytváření prostorových dotazů na zadaná data.Grafická rozhraní Implementace graf. rozhraní pro zadávání (prohlížení) dat V této kapitole bude popsáno grafické rozhraní mapového serveru, který byl vytvořen pro účel této diplomové práce. Bude to především pohled z hlediska uživatele. Diskutované, nebo použité algoritmy budou popsány v kapitole Implementace Mapového serveru CAGI. Tato práce navazuje na Metainformační systém CAGI. Jeho součástí je modul – “Datové sady”, který provádí operace související s uložením metadat o datových sadách. Pro vyplnění je k dispozici formulář, jehož součástí je položka, týkající se plošného pokrytí datové sady. Aktivací této položky se spustí nadstavbová aplikace, která je již předmětem diplomové práce. Na obrázku č. 1 je možno vidět grafické rozhraní spuštěné aplikace.Aplikace může běžet ve dvou režimech, které se na první pohled vůbec neliší. V režimu editace – je možno zadávat i plošný rozsah. A v režimu běžného prohlížení – nástroje pro zadávání jsou vypnuty, je možno se pouze volně pohybovat v mapě a detailně si prohlížet zadaná data, vytvořená v režimu editace. Volitelné nástroje V horní části vlevo je vidět sada ikon, představujících voli telné nástroje:Mapová plocha aplikace Mapovou plochu je možno vidět uprostřed aplikace. Je tvořena zobrazenými geoprvky. Na obrázku jsou vidět zobrazené administrativní jednotky – bývalé kraje. Jsou zde barevně odlišeny dva vybrané kraje, které byly vybrány v předešlém sezení: Severočeský a Východočeský kraj. Pokud by tato aplikace se vztahem k urči té datové sadě byla otevřena poprvé, žádný z krajů (nebo jiných administrativních jednotek) by nebyl vybrán. Uživatel má možnost vybrat zvolenou administrativní jednotku jednoduchým kliknutím na její příslušnou reprezentaci zobrazenou na obrazovce monitoru. Tento výběr je považován za specifikaci plošného pokrytí, které se váže k určité datové sadě v Metainformačním systému CAGI. Je možno provádět takový počet výběrů, kolik geoprvků je zobrazeno na obrazovce a nebo kolik je naimportovaných mapových listů. Nemusí se vůbec jednat o sousední polygony, lze tedy hovořit o specifikaci regionu. Geoprvky je možno přepnout do stavu “nevybraný” pomocí opětovného kliknutí na stejný geoprvek.Celková specifikace plošného pokrytí nemusí být složena pouze z předdefinovaných administrativních jednotek, ale je možno si vytvořit vlastní. Firmy, tvořící datové sady, nemusí totiž vždy respektovat hranice administrativních jednotek. Zadání a rozsah jejich práce může být dán například geografickými, nebo hydrologickými podmínkami na území ČR. Proto bylo nutno vytvořit nástroj umožňující definici pomocí sady libovolně zvolených lomových bodů polygonu. Zadání probíhá pomocí postupného klikání v mapě, nebo textovým zadáním ve vymezeném textovém poli. Datový model vyžaduje určitou korektnost zadání a proto bylo nutno stanovit dvě omezující podmínky:
Porušení jedné z těchto podmínek je uživateli oznámeno ve formě chybového hlášení. Uzavření polygonu se provede pomocí rychlého dvojitého kliknutí. Následuje vykreslení polygonu a dialog s možností specifikace názvu takto vytvořeného areálu, nebo jeho smazání. Dialog je možné vyvolat opětovným kliknutím na uživatelem definovaný polygon.Identifikace geoprvků zobrazených v mapě Identifikací zobrazených geoprvků je zde myšleno zobrazení názvu areálu, kterým může být některá předdefinovaná administrativní jednotka, pro okresy např. okres Bruntál, nebo uživatelem definovaný polygon. Zobrazení názvu geoprvku je nezávislé na zvoleném nástroji a dochází k němu vždy při poloze kursoru myši nad daným geoprvkem. Souřadnicový systém Vpravo od sady nástrojů je umístěna informace o souřadnicích. Souřadnice jsou zobrazovány v upraveném systému JTSK tak, že obě osy kartézského souřadného systému jsou navzájem vyměněny a navíc jejich hodnoty jsou záporně ohodnoceny. Mění se s pohybem kurzoru nad mapovou plochou. Seznam vrstev Vlevo pod sadou nástrojů je umístěn seznam vrstev. Každá položka z tohoto seznamu se skládá ze tří prvků. Vlevo je otevřeným okem znázorněna současná viditelnost vrstvy a přeškrtnutím skrytí vrstvy. Potom následuje textová informace o typu administrativní jednotky (např. Kraje) a za ní je r ádiové tlačítko, jenž informuje aplikaci, která z vrstev se bude používat k zadávání plošného rozsahu, nebo k zobrazení atributové části. Viditelnost jednotlivých vrstev je zapínána automaticky při dosažení určitého měřítka.Textové zadání plošného pokrytí Pod seznamem vrstev je umístěna textová plocha, která má dvojí využití. V případě zapnutí speciální vrstvy, kterou je klad mapových listů (na obrázku vrstva Kltm50), dojde k aktivaci a k výzvě správného vyplnění textové plochy. Do textové plochy se vepíší označení mapových listů dle příkladu, zobrazeného ve stavové ploše. Po vyplnění a zmáčknutí tlačítka “vložit” se objeví na mapové ploše požadované geoprvky polygonového charakteru. Druhé použití textové plochy slouží také k zadávání pokrytí. Tentokrát př i aktivaci uživatelské vrstvy, která umožňuje vkládat uživatelem definované polygony, viz výše.Stavový řádek a ukončení aplikace Spodní část aplikace tvoří stavový řádek a tlačítko dokončit. Ve stavovém řádku jsou dvě různá místa pro zobrazování informativních textů. Na levé straně je to především zobrazení atributu geoprvku, nad nímž se nachází kurzor myši. Do stavového prostoru umístěného vpravo se zobrazují buď instrukce o provedení operace, nebo chybová hlášení po neúspěšné operaci. Po skončení veškeré práce v režimu editace je možno stisknout tlačítko “Dokončit”, které uloží všechny vybrané geoprvky a předá běh aplikaci Metainformační systém CAGI. V režimu běžného prohlížení je toto tlačítko nahrazeno tlačítkem “Zpět”, které způsobí návrat do Metainformačního systému CAGI bez jakéhokoliv ukládání.
Implementace graf. rozhraní pro vyhledání dat Jedná se o jednoduchý rastrový obrázek, ve kterém je znázorněna mapa ČR, viz. obr. č. 2. Tento obrázek je zakomponován do HTML stránky prostřednictvím formuláře. V případě bodového kliknutí do obrázku dojde k vyhledání datových sad lokalizovaných v místě kliknutí.Další informace, týkající se implementace vyhledávacích al goritmů spolupracujících s klikací mapou, je možno nalézt v kapitole Implementace Mapového serveru CAGI.
Implementace Mapového serveru CAGI Ukládání prostorové složky do SŘBD Koncepce ukládání do SŘBD Koncepce ukládání do SŘBD vychází z řešení Metainformačního systému CAGI. Ten je založen na spolupráci HTML kódu se souborem CGI programů, vytvořených v programovacím jazyce PHP3. PHP3 obsahuje sadu nástrojů pro spolupráci se SŘBD. Uživatel u lokálního počítače po vyplnění patřičných formulářů stiskl tlačítko odeslání, obsah těchto formulářů byl odeslán na stranu serveru příslušnému PHP3 skriptu, ten provedl zápis nebo čtení nad SŘBD a vygeneroval novou HTML stránku. Uživatel tuto “výměnu” HTML stránek většinou vůbec nepostřehne a zdá se mu, že pracuje stále se stejnou stránkou, viz obr. č. 3
Tento mechanismus spolupráce HTML formuláře se SŘBD byl také použit při řešení této diplomové práce, a sice při implementaci spojení mezi grafickým rozhraním Javy a SŘBD. Řeší se tak nejen problematika komunikace Javy se SŘBD, naznačená výše, ale zároveň je umožněn stejný přístup k datům v databázi, jako v Metainformačním systému CAGI, viz obr. 4. S výhodou je také použit zmíněný skript include.php3, zaručující jednotný přístup k databázi včetně ověření oprávnění.
Datový model Datový model řeší uložení převážně prostorové části dat. Jedná se o jednotky administrativního členění, např. kraje, okresy, obce a uživatelem definované polygony. Data z Metainformačního systému CAGI, konkrétně metadata o datových sadách (DS), tak mohou být rozšířeny o prostorovou složku dat. Při tvorbě datového modelu bylo nutno dodržovat určitá omezení a zároveň požadavky. Tím hlavním je nezávislost na systému řízení báze dat. Nelze tedy využít žádný ze specializovaných SŘBD umožňujících uložení prostorové složky, jako je např. Oracle SDO (Spatial Data Option). Datový model byl také přizpůsoben nutnosti rychlého nalezení geografických dat v SŘBD. K pojmu “rychlé nalezení” se úzce váže problematika tzv. pros torové indexace, viz níže. Datový model také řeší otázku historie dat. Při změně hranice určité administrativní jednotky nedojde nikdy ke změně fyzického uložení lomových bodů plošného pokrytí DS, ledaže by vlastník DS provedl její aktualizaci. Datový model počítá s uchováním hranic starších administrativních jednotek, ale zároveň umožňuje zadávání pomocí nových jednotek.Struktura navrženého relačního datového modelu je vidět na následujícím obrázku: Podívejme se nyní na jednotlivé relace:
Prostorová indexace Prostorová indexace slouží k urychlení nalezení geoprvků na základě zvolených souřadnic. Její implementace v SŘBD je naprosto nezbytná, protože není možno vyhledávat geoprvky takovým způsobem, že se načtou všechny geoprvky ze SŘBD a teprve potom se programově rozhodne, které geoprvky se využijí a které ne. Bylo by zbytečné načítat geoprvky, které leží mimo zobrazova cí okno. Tuto techniku by bylo možné si dovolit pouze u lokální aplikace, ale nikoliv u aplikace, která k přenosu dat používá relativně pomalou počítačovou síť. Proto byla zvolena taková technika, která uchovává v programu pouze takové geoprvky, které jsou, nebo mají být zobrazeny na obrazovce. Tak se minimalizuje objem přenášených dat mezi klientem a serverem a zvýší se také rychlost aplikace.Volba SŘBD, jakožto prostředku pro ukládání prostorové části dat, má mnoho výhod. Jednou z nich je nezávislost dat na aplikaci. V případě že funkčnost aplikace přestane být postačující z důvodů nových nároků, požadavků apod., data v SŘBD zůstávají, mohou nadále spolupracovat s novou aplikací. Nebo naopak je možno zaměnit určitý SŘBD za jiný. Stačí pouze vhodnou metod ou konvertovat data ze starého systému do nového. Přístup k datům probíhá dál pomocí standardizovaného rozhraní SQL. Toto rozhraní umožňuje vytváření datových struktur v SŘBD, ukládání dat, mazání, nebo jejich aktualizaci a v neposlední řadě také dotazování. Jako každé jiné rozhraní má i SQL nevýhodu v omezení možnosti rozšíření množství jeho funkcí, které je nutné kvůli kompatibilitě s jinými SŘBD založených na bázi SQL. Z těchto důvodů je volba druhu prostorové indexace závislá na funkcích, definovaných v SQL.Prostorová indexace pomocí čtyřstromu (Quad-Tree) Prostorová indexace založená na Quad-Tree je soubor různě efektivních metod, sloužících k indexaci geoprostorových dat. Tyto metody se navzájem liší způsobem ukládání do datových struktur, způsobem vyhledávání a typem ukládaných geoprvků. Jednotlivé metody Quad-Tree jsou poměrně složité a k jejich implementaci jsou potřeba složitější nástroje – programovací jazyky. Programovací jazyk Java byl zvolen pro implementaci aplikace běžící na straně klienta. Avšak rozhodující proces musí proběhnout na straně serveru v SŘBD, který má omezenou sadu nástrojů. Složitější metody Quad-Tree často používají rozhodující proces typu: pokud něco potom udělej_toto jinak tamto. SŘBD založené na ANSI SQL nepodporují takovéto datové struktury. Je možno namítnout, že lze tyto podmíněné skoky implementovat v příslušném PHP3 skriptu, který se SŘBD komunikuje na straně serveru. Situace by vypadala asi takto: PHP3 skript spustí SQL dotaz, pomocí kterého dojde ke stažení určitých dat ze SŘBD. PHP3 program pokračuje další zpracovávanou instrukcí, např. : pokud (stažená_data=něco) potom použij_stažená_data_pro_nový_SQL_dotaz_typu_1 jinak použij_stažená_data_pro_nový_SQL_dotaz_typu_2. Na základě této podmínky dojde k provedení nového SQL dotazu. Počet těchto SQL dotazů může přibývat se vzrůstajícím množstvím geoprostorových dat v databázi. Je zřejmé, že takové řešení by příliš zpomalovalo běh celé aplikace. Vyhledání geoprvku(ů) v SŘBD by mělo proběhnout pomocí jediného SQL dotazu. To mu také odpovídá volba metody Quad-Tree, která musí být poměrně jednoduchá.Zvolená metoda Region Quad-Tree (dále jenom Quad-Tree) je poměrně jednoduchou datovou strukturou, která je snadno uložitelná a dotazovatelná v SŘBD. Byla zvolena jako metoda prostorové indexace pro účel této diplomové práce. Prostorová datová struktura Quad-Tree je určena pro dvourozměrný prostor P, který se dělí rekurzivně vždy na 4 podprostory. Ty se značí tradičně SZ, JV, JZ a SV. Všechny tyto čtverce mají stejnou velikost. Vých ozí (kořenový) čtverec má takové souřadnice rohových bodů, které pokrývají celou zpracovávanou oblast. Maximální počet úrovní dekompozice je předem zvolená konstanta, omezující počet dekompozicí. Postupná dekompozice začíná od výchozího čtverce a rekurzívně se provede tolikrát, kolik je stanoveno v konstantě maximální počet úrovní dekompozice. Nejmenší, dále již nedělitelný čtverec, můžeme označit přídavným jménem jednotkový. Dekompozicí vzniká určitá posloupnost čtverců, neboli větev hierarchie označená např. “SV, JV, JZ, SV” (principiálně se sice jedná o tzv. Mortonův klíč, ale tímto termínem bude chápán zápis v jiném tvaru). První člen posloupnosti je výchozí čtverec a poslední můžeme nazvat konečný. Konečný čtverec může být při předčasném ukončení dekompozice větší než jednotkový. Jeho poloha je považována za jednu z ploch, reprezentujících zpracovávaný polygon. Algoritmus tvorby hierarchie s výsledným konečným čtvercem nad zpracovávaným polygonem začíná testováním pozice polygonu vůči aktuálnímu (zpočátku je jím výchozí) čtverci. Výsledkem testu je jeden ze tří případů:
Na následujícím obrázku je vidět dělení čtverců nad zpracovávaným polygonem při stanoveném maximálním počtu úrovní 3. Konečné čtverce jsou barevně odlišeny. Jak již bylo zmíněno výše, důležitým předpokladem zvolené prostorové datové struktury je dotazovatelnost na geoprvky (v našem případě polygony) v SŘBD. Jednotlivé čtverce byly v úvodu této kapitoly označeny zkratkami světových stran a jejich sada tvořila větev hierarchie, reprezentující určitou část polyg onu. Takto zvolené označení ještě není příliš vhodné kvůli svému textovému charakteru a nedostatečné rozlišenosti na osy X, Y kartézského souřadného systému. Osové rozlišení je základním předpokladem pro vyhledání v databázi. Je zjevné, že označení západ a východ, reprezentuje polohu na ose X a tyto dva stavy budou dále značeny číslicemi 1 a 2. Analogicky pro osu Y, kde jihu odpovídá číslice 1 a severu 2.Sada čtverců, tvořící větev hierarchie, bude dále označovaná posloupností číslic pro každou osu a budou tvořit číslo pro osu X a Y. Čísla budou nazývána Mortonovými klíči pro osu X, nebo Y. Např. posloupnost “SV, JV, JZ, SV” bude převedena do následujících tvarů :Počet číslic tvořící MK je roven maximálnímu počtu úrovní dekompozice. Jako značka, označující předčasné ukončení dekompozice, byla zvolena číslice 0. Vpravo od ní nesmí být jiná číslice než případné další nuly. Např. číslo 2012 není platné, ale 2000 již ano. Na obrázku č. 7 je vidět označení konečných čtverců Mortonovými klíči.Nalezení geoprvku v mapě Touto operací je míněno nalezení geoprvku v datových strukturách programu na základě vstupních souřadnic X, Y. Operace nalezení geoprvku v mapě probíhá ve dvou případech a to vždy, když se nalézá kurzor uvnitř mapového okna. Buď při bodovém kliknutí, kdy se má vybrat (zrušit výběr) polygon ve kterém došlo ke kliknutí, nebo při pouhé změně polohy kurzo ru myši, kdy se má zobrazit název areálu ve kterém se kurzor nalézá.Při požadavku nalezení polygonu se provedou následující kroky:
Ukončení práce a ukládání dat Při ukončení práce v režimu běžného prohlížení zadaných geoprvků nedochází k ukládání dat, pouze se předá běh Metainformačnímu systému CAGI. V editačním módu je tomu jinak. Veškeré provedené změny je třeba uložit do SŘBD na stranu serveru. Data z případného předešlého sezení jsou nejprve smazána a všechna data jsou do databáze ukládána znovu. Je nutno rozlišit dva druhy ukládání geoprvku:
Aplikace pro zadávání a prohlížení prostorových dat (shrnutí) Tento článek tvoří ucelený přehled navzájem spolupracujících algoritmů tvořících funkční celek. Jednotlivé algoritmy byly popsány výše. Aplikace může pracovat jak v režimu zadávání, tak i v režimu běžného prohlížení. Po jejím spuštění dochází nejprve k načítání dat z databáze. Načítají se především vrstvy(a), které mají být viděny po celou dobu spuštění aplikace. Načítání se provádí způsobem popsaným výše, tedy předáním parametrů PHP3 skriptu na stranu serveru. V tuto chvíli se předává hlavně identifikátor požadované vrstvy a skript PHP3 vrac í po komunikaci s databází geoprvky z určené vrstvy.Po načtení prvotních dat začínají hrát důležitou roli vzorce pro transformaci souřadnic načtených dat na obrazovkové souřadnice a načtené vrstvy mohou být zobrazeny. Parametry zobrazení tvoří reálná souřadnice levého spodního rohu (má vliv na posunutí výřezu mapy) a rozlišení (má vliv na zvětšení). Uživatel mění tyto parametry pomocí operací zvětšení/zmenšení, posun na střed a úplné zobrazení může se tak volně pohybovat po mapě. V případě takového zvětšení mapy, kdy reálná vzdálenost hrany okna překročí určitou mez (je možno ji nastavit v databázi), může dojít k načtení podrobnější vrstvy. Načtení probíhá opět ve spolupráci s PHP3 skriptem. Tentokrát jsou mu zasílány i tzv. Mortonovi klíče pro rohové body nového mapového výřezu. Klientovi jsou potom zasílány jenom takové geoprvky, které do okna aplikace alespoň částečně zasahují.V režimu zadávání má uživatel možnost provádět bodový výběr požadovaných geoprvků polygonového charakteru. Velkou roli zde hraje operace nalezení geoprvku v určeném místě kliknutí. Další možností je definovat vlastní polygony, jsou zde použity pouze jednoduché zobrazovací operace. Třetí možností je definice mapových listů pokrývajících zadávanou oblast. Důležité jsou také algoritmy zobrazení informativních textů. Asi nejdůležitějším je zobrazení polohy kurzoru v upravených souřadnicích systému JTSK. I zde je použita transformační formule, tentokrát ovšem v inverzním tvaru pro převod obrazovkových souřadnic na reálné. Dalším textovým zobrazením je informace o poloze kurzoru myši nad areálem. Každou sekundu se tak řeší operace nalezení geoprvku a následně vypsání nalezeného názvu areálu. Kromě toho jsou do programu zabudovány nápovědy pro jednotlivé nástroje.Poslední operací v programu je jeho ukončení. Viz také Implementace grafického rozhraní pro zadávání (prohlížení) dat.
Aplikace pro provádění prostorových dotazů (shrnutí) Po uživatelově kliknutí do rastrového obrázku jsou na stranu serveru odesílány informace o místě kliknutí. Na jejich základě jsou spočítány tzv. Mortonovi klíče a proveden dotaz do databáze, viz. algoritmy výše. Výsledkem jsou identifikátory datových sad, které se nalézají v místě kliknutí. Viz také Implementace grafického rozhraní pro vyhledání dat. Závěr Podařilo se vytvořit požadované aplikace. Dotazovací aplikace umožňuje provádět prostorové dotazy. Jejich výsledkem je seznam nalezených datových sad ze zadané oblasti. Aplikace Mapový server na druhou stranu umožňuje zadávat plošný rozsah pomocí několika metod. Je možno ji použít pro podrobnější prohlížení zadaných dat nejširší veřejností. Jednou z nevýhod je malá rychlost spouštění Mapového serveru. Do budoucna je třeba hledat nová řešení odstraňující, nebo eliminující tento nedostatek. |
Copyright (C) VŠB - TU Ostrava,
Institut geoinformatiky, 2001-3. Všechna práva vyhrazena. |