|
|
Tvorba aplikace pro evidenci rybářských úlovků, využívající službu WWWKarel Vlček AbstractThis disseration is about dissemination of geographical information systems to the common people. Introduction explains visualisation of space datas in WWW. Recommended software equipment is selected as next. Following chapetr includes analysis of information system that was used as the base of WWW application for fishing trophies. This application enables interactive overview of fishing areas and tropies. All users can add own catches. The application is assigned to fishers and is useful as the fishing map of Northern Moravia and Silesia too. AbstraktTato diplomová práce je zaměřena na rozšiřování geografických informačních systémů mezi laickou veřejnost. V úvodu je vysvětlena problematika vizualizace prostorových dat v prostředí WWW. Následně je vybráno vhodné programové vybavení pro tvorbu aplikace, jenž má sloužit pro vizualizaci prostorových dat. V další části je zpracována analýza informačního systému, ze které následně vzešla aplikace pro evidenci rybářských úlovků, využívající službu WWW. Aplikace je určena především pro rybářskou veřejnost, která si může interaktivně zjišťovat informace o revírech a především úlovcích na těchto revírech. Uživatelé mají také možnost tyto úlovky zadávat. Také slouží jako mapová prohlížečka rybářských revírů na Severní Moravě a ve Slezsku. ÚvodInformační systémy hrají v dnešní době významnou roli. Uživatelé těchto systémů si přejí co nejefektivněji využívat zdroje informací a co nejrychleji informace získávat. Využívání informačních systémů není jen doménou expertů na danou oblast, tedy např. manažerů, kteří se dle získaných informací rozhodují. Manažer požaduje maximalizaci využití zdrojů a naopak minimalizaci času k jejich získání. Zároveň musí někdo zdroje aktualizovat, aby jejich využívání bylo efektivní. Dnes jsou informační systémy vyhledávány i širokou veřejností, neboť informace získané z těchto systémů mohou uživatelům ušetřit čas, finance, atd. Tato diplomová práce se zabývá tvorbou informačního systému v prostředí internetu. Prostředí internetu je voleno kvůli přístupnosti pro co největší spektrum uživatelů. Implementace v prostředí internetu většinou neobtěžuje uživatele instalací nových produktů a je vesměs poskytována zdarma. Nejinak je to s aplikací, která vznikla v rámci této diplomové práce. Aplikace pro evidenci rybářských úlovků nepožaduje instalaci žádného podpůrného programu a je poskytována zdarma. Aplikace je praktickou ukázkou toho, že geografické informační technologie mohou být využívány téměř ve všech oborech. Tento systém by měl sloužit všem sportovním rybářům, ale mohou jej využívat i ostatní uživatelé. Měl by poskytovat informace o rybářských revírech, úlovcích na těchto revírech i s jejich lokalizací. O vyhledaném revíru jsou uživateli poskytnuty veškeré informace, které obsahuje Soupis revírů pro Severní Moravu a Slezsko, jehož vydavatelem je Český rybářský svaz (viz kapitola 3). Uživatel si bude moci vyhledat revír v zájmové oblasti a zjistit si úlovky na tomto revíru, a dle této informace se rozhodnout o své návštěvě zvoleného revíru. Taktéž se předpokládá, že uživatel zaeviduje svůj lov do tohoto systému, pokud navštíví nějaký revír a uloví rybu. Zájmovou oblastí je Severní Morava a Slezsko. Postup zpracováníStanovil jsem následující postup při zpracování diplomové práce: Český rybářský svazV České republice jsou aktivity související se sportovním rybolovem organizovány Českým rybářským svazem. Mezi hlavní aktivity Českého rybářského svazu patří: Sportovním rybářstvím se zabývají 3% populace v České republice. V současné době se Český rybářský svaz skládá ze 7 územních svazů, pod které spadá 479 místních organizací. V místních organizacích je evidováno 216 221 dospělých členů a 49 889 členů ve věku od 8 do 18 let. Rybářské revíry v České republice tvoří 34 100 hektarů vodních ploch. Ročně se uloví více jak 3 751 tun různých druhů ryb. (Číselné údaje jsou vztažené k roku 2002.) Územní výbor pro Severní Moravu a Slezsko sdružuje přes 50 000 členů a to včetně mládeže. O hospodaření na rybářských revírech se podílí 60 místních organizací. Organizace pečují o 5 000 hektarů vodních ploch, a to jak pstruhových, tak i mimopstruhových. Popis použitých datV diplomové práci jsem pracoval s vektorovými geotady, které mi vymezovaly prostorové rozmístění rybářských revírů. Dále jsem pracoval s popisnými údaji o revírech. Geodata
Při rozhodování o vektorových zdrojích pro mapový výstup jsem chtěl využít vektorovou databázi ArcČR500, ale při jejím prohledání jsem zjistil, že tato databáze
je neúplná. Neobsahovala některé vodní plochy v zájmové oblasti - Severní Morava
a Slezsko. Další alternativou bylo použití vektorové databáze DMÚ200, nicméně ani tato databáze neobsahovala veškeré vodní plochy a vodní toky v zájmové oblasti. Z těchto dvou variant byla pro daný účel vhodnější vektorová databáze DMÚ200. Aby ji bylo možno použít, musel jsem vrstvy "Vodní toky" a "Vodní plochy" doplnit o chybějící elementy a atributy. Navazující popisná dataZ předchozího ročníkového projektu, v němž předmětem řešení byla aplikace
pro vedení "Místní organizace v Rožnově pod Radhoštěm", jsem měl již hotovou databázi,
která mimo jiné obsahovala tabulku s rybářskými revíry Severní Moravy a Slezska.
Tato tabulka nese záznamy, jenž jsou uvedeny v "Rybářském řádu a soupisu revírů platném
od 1.1.2003". Měl-li revír více lokalit, byla tato skutečnost zaznamenána v nové tabulce,
jenž byla propojena s tabulkou "Revír" vazbou 1..N. Databáze byla ve formátu Microsoft Access. Pro účely této diplomové práce jsem použil tabulku se všemi lokalitami určenými k lovu ryb na Severní Moravě a ve Slezsku. Tabulku jsem vyexportoval
do textového formátu, jednotlivé záznamy byly odděleny oddělovačem. Datový modelDatový model relační databáze je popsán pomocí diagramu entit a vztahů. Obr č. 1 ER diagram databáze Vztah mezi tabulkou "Úlovek" a "Bod" je 1:1, a to z důvodu práce s výslednou aplikací. Tato vazba akceptuje požadavky dále navrženého řešení. Databáze "rybydb"Pro ukládání dat do databáze jsem zvolil databázový systém MySQL a v tomto prostředí jsem vytvořil tabulky pro ukládání dat. Tabulka s lokalitami určenými pro lov ryb byla tedy naimportována pod jménem Revir. Výběr programového vybaveníZ práce vyplývá, že informační systém má fungovat v prostředí internetu, tedy bez lokálně uložených programových aplikací a dat. K řešení tohoto problému bylo nutno nejprve nalézt odpovídající technologie. Přehled softwarových produktů, které umožňují vytvoření a běh informačních systémů v prostředí WWW je detailně popsán v textu diplomové práce. Text je ke stažení na konci WWW stránky. Přehled zvoleného programového vybaveníWebový server: Apache, verze 1.3 Analýza a návrh informačního systémuPro analýzu systému jsem použil objektově orientovanou analýzu. Celý proces realizace produktu je při této analýze popsán jistými modely, jenž nám umožní lépe pochopit vyvíjený systém. K tomuto popisu jsem použil jazyka UML (Unified Modeling Language). "UML je jazyk umožňující specifikaci, vizualizaci, konstrukci a dokumentaci artefaktů softwarového systému" [2]. Slovní specifikace požadavkůCílem práce je vytvořit informační systém, který bude sloužit k evidenci rybářských úlovků v prostředí internetu. Po systému je požadováno, aby byl schopen zobrazovat mapu revírů
a měl možnost zobrazovat podrobné informace k vybranému revíru. Dále systém musí umožňovat vyhledávat revíry dle jeho čísla nebo názvu revíru. Informační systém musí
být schopen předkládat uživateli podrobný přehled o úlovcích a to jak na jednotlivých revírech, tak i v rámci celého Severomoravského kraje. Uživatel může zadávat nový úlovek nebo vyhledávat informace o revíru či úlovcích. Pro práci s mapovým oknem musí
být použity translokační nástroje, jako jsou zoom-in, zoom-out, pan, centrování, pohyb s mapou pomocí šipek. Pro práci s mapou je používán produkt MapServer z Minesoty.
O údržbu by se měl starat administrátor informačního systému.
Informační systém by měl být navržen takovým způsobem, aby nebyla potřeba
při jeho provozu používat komerční software. Bližší popis je opět v textu diplomové práce, ke stažení na konci WWW stránky Model byznys procesů a doménový modelDoménová analýza se nám snaží poskytnout pohled na objekty v informačním systému, jejich vztahy a chování. "Třída je popis množiny objektů majících společnou strukturu, chování, vztahy a sémantiku"[3]. Pro přehlednost a pochopení tříd uvádím jejich podrobnější textový popis - v textu diplomové práce. Obr č. 2 Doménový model Diagram aktivit
Diagram aktivit slouží k popisu jednotlivých procesů a reprezentuje jejich stavy
a přechody mezi nimi. Při vlastní tvorbě informačního systému jsem vypustil část přihlašování uživatele (login), jež je zde zaznamenána. Přihlašování uživatele by bylo vzhledem k účelu této aplikace poněkud zbytečné a mohlo by nejednoho uživatele odradit
od jejího použití. Přihlašování jsem v tomto diagramu ponechal kvůli eventuálnímu rozšíření informačního systému. Model případů užití
Případ užití neboli USE CASE slouží k vymezení toho, co existuje vně systému (v našem případě uživatel) a toho, co působí uvnitř systému - tj. to, co je systémem prováděno.
Sekvenční diagramy
Jedná se o diagramy, jenž sledují, jaké zprávy jsou mezi objekty zasílány z pohledu času.
Diagram tříd
Je to pohled na množinu tříd, rozhraní a jejich vzájemné vztahy. Tento diagram nám vyjadřuje statický pohled na systém.
Diagram spolupráce
Diagram spolupráce upřednostňuje při popisu komunikace mezi objekty topologii, tedy jejich rozložení a vzájemné spojení. Vychází ze sekvenčních diagramů. Diagram spolupráce jsem vytvořil jen pro zadávání nového úlovku.
Stavový diagram
Stavový diagram prezentuje životní cyklus objektu dané třídy z hlediska jeho stavů, přechodů mezi těmito stavy a událostmi, které je vyvolávají.
Vlastní návrh informačního systémuInformační systém je určen především pro rybářskou veřejnost, kterou zajímají informace o revírech Severní Moravy a Slezska a úlovcích na nich, ale také pro evidenci ulovených ryb na těchto revírech. window.open(url,jmeno,'resizable=1,scrollbars=1,top=0, left=0, menubar=0, width='+ (screen.availWidth - 10)+', height=' + screen.availHeight)
Grafické uživatelské rozhraní informačního systému je vytvořeno pomocí jazyku HTML, skriptů PHP a javaskriptu. V aplikaci jsou načítány soubory ESRI Shapefile, jenž zobrazují zájmové území (Severní Morava a Slezsko). Vrstva toků a vodních ploch je propojena s databází MySQL "rybydb". Aplikace je tvořena tabulkou, která rozděluje obrazovku na 6 základních částí a ty jsou všechny načteny do úvodní stránky. Obr č. 3 Vzhled aplikace - rybářský průvodce Funkce aplikace
- vyhledávat informace o jednotlivých revírech - zobrazení informace na podkladě zadaného vyhledávacího znaku Vyhledávání informací o jednotlivých revírechUživatel má možnost vyhledávat revír dle zadaných specifik. Buď zná číslo revíru (čísla), podle něhož si chce vyhledat informace, a nebo chce vyhledat revír za pomoci slova nacházejícího se v názvu revíru (jména). Vyhledávací hodnotu zadá do příslušné kolonky. Přepne vyhledávání dle čísla nebo dle jména a odešle pomocí tlačítka Hledej. Vstupní hodnota je porovnána s údaji v tabulce revir nacházející se v databázi "rybydb". Obr č. 4 Formulář pro vyhledávání revíru K výpisu informací je využíván PHP skript - soupis.php, jenž nám zobrazuje výsledek dotazu, který jsme zaslali. Je-li odeslaná hodnota nalezena, zobrazí se nová stránka s výpisem názvů revírů, jenž obsahují klíčová slova zadaná ve vstupním parametru. Není-li hodnota v databázi nalezena, je tato skutečnost taktéž sdělena uživateli. Obr č. 5 Formulář s vyhledanými revíry Na výpisu této stránky se můžeme dozvědět, kolik revírů bylo nalezeno dle stanoveného vyhledávacího klíče; v tomto případě se jedná o dva záznamy. Pod číslem revíru "473002" se nachází dva záznamy, tok Rožnovské Bečvy a Nádrž u Macečků na Horní Bečvě. Kromě čísla revíru a názvu revíru se zde ještě dozvíme lokalitu na revíru, pokud nějaká existuje, a dále katastrální území, ve kterém je lokalita soustředěna. Další informací je délka revíru u toků a rozloha u uzavřených lokalit. Je zde taktéž informace o revíru a omezení na tomto revíru. Vybraný revír je možno nechat vyhledat na mapě, k čemuž slouží tlačítko - v kolonce mapa. Tlačítko předá parametr hlavnímu skriptu. Skript prohledá vrstvu toky a voda a nalezne objekt, jenž má v poli "Id_pod" identickou hodnotu jako hodnota předaná HTTP protokolem. Skript přebere index daného objektu a pomocí knihovny PHP/Mapscriptu na daný objekt Map nastaví EXTENT pro zobrazení. Jakmile se nastaví nový rozsah zobrazovaného území, vygeneruje se obrázek, který je načten do aplikace. Obr č. 6 Mapové okno s nalezeným revírem Vyhledávání informací o všech revírechPrincip této funkce je obdobný jako u funkce pro vyhledání specificky zadaného revíru. Při kliknutí na tlačítko "Zobraz revíry" se předá skritpu soupis.php parametr pro výpis všech revírů. Otevře se stejná stránka jako na Obr. 5 s tím rozdílem, že jsou zobrazeny všechny revíry nalezené v databázi, tedy 444 revírů a to včetně jejich lokalit. Revíry jsou zobrazovány po 30 záznamech na stránku. Ve spodní části jsou odkazy na následující revíry. Způsob zobrazení námi vybraného revíru je stejný jako u předchozí funkce. Vyhledávání informací o všech úlovcíchTato funkce umožní vypsat data o všech úlovcích na všech revírech. Ke spuštění slouží tlačítko (Obr. 7) umístěné na hlavní stránce aplikace. Tlačítko předá parametry skriptu celkul.php. Ten otevře novou stránku (Obr. 8) s chronologicky uspořádanými úlovky na všech revírech. Zde je možné prohlédnout si úlovky a lokalitu vybraného úlovku zobrazit na mapě. K zobrazení úlovku na mapě slouží opět tlačítko - v kolonce mapa. Obr č. 7 Formulář pro vyhledání všech úlovků Obr č. 8 Výpis informací s úlovky na všech revírech
Hlavnímu skriptu jsou předány tři parametry. Číslo revíru, na němž došlo k úlovku; dle něj se nastaví poloha zobrazovaného území. Dále číslo, jenž představuje identifikátor úlovku; podle tohoto čísla se zobrazí daná příslušná data v pravé informační části aplikace
(Obr. 13). Poslední předaný parametr udává identifikátor bodu, který se zobrazí na načtené mapě. Tady si můžeme všimnout, že všechny vrstvy nemusí být předem nadefinované v souboru MAPFILE. Modul PHP/Mapscript nám nabízí nástroje pro přidávání tématických vrstev přímo do mapové kompozice. Nemusí se jednat pouze o vektorové vrstvy ESRI Shapefile, ale může se jednat jako v tomto případě, o bodovou vrstvu s vykreslováním z databáze.
$database = mysql_select_db("rybydb"); $vypis_bodu = mysql_query("SELECT * FROM bod WHERE id_ul LIKE '$bodka'"); $x_s = MySQL_Result($vypis_bodu, 0,"x_sour"); $y_s = MySQL_Result($vypis_bodu, 0,"y_sour"); $pointobj = ms_newPointObj(); $pointobj->setXY($x_s,$y_s); $lineobj = ms_newLineObj(); $lineobj->add($pointobj); $pointobj->free(); $shapeobj = ms_newShapeObj(MS_SHAPE_POINT); $shapeobj->add($lineobj); $lineobj->free(); $layerobj = ms_newLayerObj($map); $layerobj->set('type',MS_LAYER_POINT); $layerobj->set('status',MS_ON); $layerobj->addFeature($shapeobj); $classobj = ms_newClassObj($layerobj); $classobj->set('symbol',1); $classobj->set('size',20); $newColor = $map->addColor(255,0,0); $classobj->set("color", $newColor);
Obr č. 9 Zobrazení úlovku v mapě Zobrazovací operacePro práci s mapou je určena nástrojová lišta, která je umístěna nad mapovým oknem. Na nástrojové liště je umístěno 5 tlačítek pro obsluhu aplikace a měřítko pro aktuální mapový výřez. Obr č. 10 Nástrojová lišta pro práci s mapou
První tlačítko je pro posun mapy "Pan". Uživatel vybere bod kliknutím do mapy.
Na tento bod se nastaví střed nového zobrazeného mapového okna.
Obr č. 11 Formulář s výpisem informací o revíru Vyhledávat informace o úlovcích na revírechPostup zjištění úlovku na revíru začíná stejnými kroky, jaké jsou popsány v předcházejících kapitolách (vyhledávání informací o revíru). Jakmile má uživatel před sebou vypsanou tabulku s informacemi o revíru, má možnost kliknout na tlačítko "Zobraz". Tímto tlačítkem je vyvolán PHP skript (Příloha 3), kterému je předáno číslo revíru, na němž chceme vidět úlovky. Otevře se okno s výpisem úlovku na daném revíru (Obr. 12). Obr č. 12 Výpis informací s úlovky na jednom revíru Pro lokalizaci úlovku v mapě slouží tlačítko v kolonce mapa. Po jeho potvrzení se postupuje stejně jako v kapitole 6.2.3 Vyhledávání informací o všech úlovcích. V informační části aplikace se místo informace o revíru zobrazí informace o úlovku (Obr. 13). Obr č. 13 Výpis informací o jednom úlovku Na tomto formuláři máme k dispozici tlačítko "Zobraz foto", po jeho potvrzení se otevře nové okno (Příloha 8) s fotografií úlovku, tedy pokud byla přiložena. Nové okno je otevíráno ve specifickém rozměru, jenž je dán výškou a šířkou fotografie. Tuto funkci nám poskytuje PHP knihovna php_gd.dll, která je určena pro práci s obrázky. Viz Příloha 1 (zjištění velikosti fotografie). Vkládání nových údajů o lovu a úlovkuPro vkládání nových záznamů do informačního systému slouží spodní část aplikace. Obr č. 14 Formulář pro zadávání nových úlovků Jedná se o formulář, který vyplňuje uživatel. Formulář se skládá z pěti povinných položek, které musí uživatel vyplnit. Jedná se o jméno lovce, e-mailovou adresu lovce, datum lovu, revír, na kterém uživatel lovil a popis lovu. Dále má uživatel možnost zadat nepovinný údaj, což je fotografie úlovku. Povinné údaje jsou ověřovány, a pokud uživatel nezadá jednu z těchto pěti povinných podmínek je mu tato skutečnost sdělena a musí údaj doplnit. O validaci a ukládání údajů do databáze se stará PHP skript uloz.php (Příloha 7). Pokud uživatel chce zadat fotografii k záznamu, musí kliknout na tlačítko "Procházet" čímž vyvolá dialogové okno, které jej vybízí k vybrání souboru s fotografií. u fotografie je ověřováno zda se jedná o soubor typu JPG či GIF, žádné jiné soubory nám skript nevezme. Dále je zde ověřována podmínka, jestli je soubor menší než 100 kB a zároveň nemá nulovou velikost. Jsou-li tyto podmínky dodrženy, soubor je nahrán na server do adresáře foto. Originální názvy fotografií jsou měněny a nahrazovány číselným názvem, jenž zaručuje jedinečnost, a tudíž nemůže dojít k přepisování souborů. Proběhne-li vše korektně, uživatel je informován výpisem informací. Pokud byla vložena fotografie, skript vypíše původní název fotografie, velikost souboru, typ souboru (zda se jedná o JPG či GIF), a především informuje uživatele, že fotografie byla v pořádku uložena na server. Dalším údajem, jenž se zobrazí uživateli je informace, že pro zakreslení místa lovu má kliknout do mapy. Posledním údajem je informace o úspěšném uložení do databáze. Pokud uživatel nevloží fotografii, je v tomto okně vypsána informace: "Nebyla vložena fotografie". Veškeré ostatní informace jsou stejné jako v předchozím případě. Uživatel v tomto okně musí kliknout na tlačítko "Zakresli bod". Po jeho stisknutí se volá hlavní skript. Před jeho zobrazením se ale uživateli opět připomene, že kliknutím do mapového okna se provede zakreslení místa lovu. Tato hláška je vyvolávána javaskriptem. V hlavním skriptu se mapové okno automaticky přiblíží na revír, jenž zadal rybář ve formuláři. Nyní uživatel klikne do mapového okna, čímž uložil do databáze x a y souřadnici místa úlovku. Doplňkové funkceLevá dolní část aplikace informuje uživatele o počtu připojených uživatelů, o optimalizovaném rozlišení aplikace a o tvůrci informačního systému. O výpis on-line uživatelů se stará PHP skript online.php (Příloha 4). Skript zjišťuje IP adresu uživatele, podle počtu různých IP adres vypíše počet uživatelů. V pravé spodní části je "mapka", která zachycuje celé území mapových zdrojů. Na ní je zobrazován bílý obdélník, který představuje území, jenž je přiblíženo v mapovém okně. Mapka tedy zlepšuje naši orientaci v hodně přiblíženém území v hlavním mapovém okně. Závěr
Informační systém pro evidenci rybářských úlovků splňuje požadavky, které byly uvedeny v zadání diplomové práce. Výsledná aplikace byla testována za pomoci spolužáků
a rybářů v mém blízkém okolí. Výsledkem testování bylo odladění systému a oprava drobných programových chyb. Po této drobné úpravě bylo opět provedeno testování, jehož výsledkem byly jen kladné reakce okolí na výslednou aplikaci. Literatura
Text diplomové práce: Otevřít
|
Copyright (C) VŠB - TU Ostrava,
Institut geoinformatiky, 2001-3. Všechna práva vyhrazena. |