104
ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE DIPLOMOVÁ PRÁCE 2009 Bc. Zdeněk JANKOVSKÝ

DIPLOMOVÁ PRÁCE - cvut.czgeo.fsv.cvut.cz/proj/dp/2010/zdenek-jankovsky-dp-2010.pdf · V rámci práce byly vytvořeny tři webové stránky, z toho dvě doplněny kódem JavaScriptu

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

  • ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE

    DIPLOMOVÁ PRÁCE

    2009 Bc. Zdeněk JANKOVSKÝ

  • ČESKÉ VYSOKÉ UČENÍ TECHNICKÉV PRAZE

    Fakulta stavebníKatedra mapování a kartografie

    EŘešení optimální jízdy vozidel HZS

    k lesním požárůmpomocí GIS webového serveru

    Diplomová práce

    2009 Bc. Zdeněk Jankovský

  • ZADÁNÍ DIPLOMOVÉ PRÁCE

    ii

  • 1

    Text této práce, stejně jako zdrojové kódy v rámci této práce vytvořené, je možnépoužívat podle licence Creative Commons „Uveďte autora – Neužívejte dílo ko-merčně 3.0 Česko“ , CC BY-NC Česko 3.0. Text licence je dostupný na.

    Zdrojová data použitá pro tvorbu webové aplikace eL.iška byla zapůjčena pouzepro účely vyhotovení této diplomové práce. Stále se na ně tedy vztahují vlastnickápráva daných organizací. Data proto nejsou součástí této práce a nejsou s ní anišířena.

    1Ikona stažena z

    iii

    http://creativecommons.org/licenses/by-nc/3.0/cz/http://creativecommons.org/about/downloads/

  • Řešení optimální jízdy vozidel HZS k lesním požárům pomocí GIS webového serveru

    Finding the Optimum Route Plan Leading to Forest Fire for Fire andRescue Service Vehicles Using the GIS Web Server

    Bc. Zdeněk Jankovský

    Abstrakt

    Diplomová práce se zabývá zpřístupněním mapových služeb a služeb Network Ex-tension pomocí mapového serveru ArcGIS Server 9.3.1. Mapové a síťové služby jsouzpřístupněny na webových stránkách vytvořených v rámci této práce. Síťové službyjsou použity pro nalezení nejrychlejší trasy po síti pozemních komunikací a lesníchcest pro hasičská vozidla od zadané požární stanice k místu lesního požáru. Mapovépodklady a poskytované služby se vztahují na území Libereckého kraje.

    V rámci práce byly vytvořeny tři webové stránky, z toho dvě doplněny kódemJavaScriptu pro zpřístupnění webových služeb ArcGIS Server. V práci byly pou-žity serverové služby pro vyhledávání dat v geodatabázi a serverové služby NetworkExtension.

    Klíčová slova

    ArcGIS Server, JavaScript, Network Analyst, Network Extension, webové mapovéslužby, lesní požáry, Dojo

    Summary

    This diploma thesis deals with access to mapping services and Network Analystservices using ArcGIS Server 9.3.1. Mapping and network services are available onthe websites created for the purpose of this work. Network services are used to findoptimum route plan within the network of routes and forest roads. They are appliedto find the fastest route from specified fire station to forest fire in the Liberec Region.

    This thesis consists of three websites. It was necesary to supplement two of themwith JavaScript code to make the ArcGIS Server web services available. The thesisis using server services to find data in a geodatabase and also the services of NetworkAnalyst.

    Key words

    ArcGIS Server, JavaScript, Network Analyst, Network Extension, Web mappingservices, forest fires, Dojo

    iv

  • Prohlášení

    Prohlašuji, že jsem předloženou práci vypracoval samostatně a že jsem uvedl veš-keré použité informační zdroje v souladu s Metodickým pokynem o etické přípravěvysokoškolských závěrečných prací.

    V Praze dne 18. prosince 2009 . . . . . . . . . . . . . . . . . . . . . . . . . . .podpis autora

    v

  • Poděkování

    Rád bych na tomto místě poděkoval vedoucímu této diplomové práce, prof. Ing. AlešiČepkovi, CSc., za mé vedení, konstruktivní přípomínky a za prokázanou trpělivost.

    Rád bych poděkoval všem organizacím, které pro tuto práci poskytly data. Jednáse o Zeměměřičský úřad v Praze, Ředitelství silnic a dálnic ČR, Ústavu pro hospo-dářskou úpravu lesů Brandýs nad Labem a Hasičský záchranný sbor Libereckéhokraje.

    Dík patří i firmě ARCDATA PRAHA, s. r. o., za zápůjčku softwaru, na kterém bylatato práce vypracována.

    V neposlední řadě děkuji svým rodičům za jejich velkou podporu během mého téměřšestiletého studia a za vytvoření pracovního zázemí pro psaní této práce. Také děkujisvé sestře Zuzaně za pomoc se závěrečnou korekturou textu.

    vi

  • Don’t Fight the Style!

    JavaScript is a dynamically typed interpreted language with many mis-understood features that can take a little getting used to, especially ifyou’re coming from a statically typed, compiled language like C++ orJava. If you find yourself having an awfully hard time solving a problemor fighting too hard to fix a bug, take a moment to back up, make sureyou understand the subtleties of what you’re trying to accomplish, andask yourself how you can better leverage built-in features of the language.

    If you bend the style enough by translating an algorithm from a languagelike Java line by line into JavaScript, you may eventually get what youwant — but it’ll cost you time, code maintainability, efficiency, and a lotof sanity. So, don’t fight the style; seek first to understand it, and thenuse it to our advantage.

    Matthew A. Russell, Dojo: The Definitive Guide, 2008

    vii

  • Obsah

    Obsah viii

    Seznam obrázků xi

    Seznam tabulek xi

    Seznam ukázek kódů xii

    Seznam značek a zkratek xiii

    Poznámky k textu 14

    I Úvod 15

    II Teoretické poznatky 16

    1 Použitý hardware a software 171.1 Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171.2 Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

    1.2.1 Operační systém . . . . . . . . . . . . . . . . . . . . . . . . . 181.2.2 ArcGIS Desktop 9.3.1 . . . . . . . . . . . . . . . . . . . . . . 181.2.3 ArcGIS Server 9.3.1 . . . . . . . . . . . . . . . . . . . . . . . . 19

    1.3 Další software použitý pro vývoj práce . . . . . . . . . . . . . . . . . 20

    2 Popis použitých dat 222.1 Lesní komunikace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222.2 Lesy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222.3 Pozemní komunikace . . . . . . . . . . . . . . . . . . . . . . . . . . . 232.4 Výjezdní místa – požární stanice . . . . . . . . . . . . . . . . . . . . 242.5 Názvy GEONAMES . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

    viii

  • Obsah ix

    III Praktická část 25

    3 Tvorba, nastavení a implementace sítě 263.1 Základní funkce Network dataset . . . . . . . . . . . . . . . . . . . . 26

    3.1.1 Jednosměrné hrany . . . . . . . . . . . . . . . . . . . . . . . . 263.1.2 Connectivity Policy – propojení sítě . . . . . . . . . . . . . . . 263.1.3 Ohodnocení hran . . . . . . . . . . . . . . . . . . . . . . . . . 273.1.4 Další omezení sítě – Restriction . . . . . . . . . . . . . . . . . 28

    3.2 Příprava dat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293.2.1 Datová třída silniceDir . . . . . . . . . . . . . . . . . . . . . . 293.2.2 Datová třída cestyDir . . . . . . . . . . . . . . . . . . . . . . 30

    4 Návod k užívání webového rozhraní 344.1 Nastavení hlavních parametrů trasy . . . . . . . . . . . . . . . . . . . 34

    4.1.1 Nastavení místa výjezdu . . . . . . . . . . . . . . . . . . . . . 344.1.2 Nastavení místa požáru . . . . . . . . . . . . . . . . . . . . . . 36

    4.2 Použití stránky s mapou . . . . . . . . . . . . . . . . . . . . . . . . . 394.2.1 Ovládání mapy . . . . . . . . . . . . . . . . . . . . . . . . . . 394.2.2 Otevření stránky . . . . . . . . . . . . . . . . . . . . . . . . . 394.2.3 Použití a nastavení záložek . . . . . . . . . . . . . . . . . . . . 404.2.4 Informace o mapě . . . . . . . . . . . . . . . . . . . . . . . . . 44

    5 Programová dokumentace 485.1 JavaScriptové knihovny . . . . . . . . . . . . . . . . . . . . . . . . . . 48

    5.1.1 ESRI JavaScript API, principy a použité objekty . . . . . . . 485.1.2 Knihovna Dojo . . . . . . . . . . . . . . . . . . . . . . . . . . 51

    5.2 Skript index.js . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565.2.1 Funkce spravnyVyjezd() . . . . . . . . . . . . . . . . . . . . 565.2.2 Funkce init() . . . . . . . . . . . . . . . . . . . . . . . . . . 56

    5.3 Skript mapa.js . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575.3.1 Funkce init . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585.3.2 Funkce resTrasu() . . . . . . . . . . . . . . . . . . . . . . . . 595.3.3 Funkce doRestoreHandler() . . . . . . . . . . . . . . . . . . 595.3.4 Funkce doPushHandler() . . . . . . . . . . . . . . . . . . . . 605.3.5 Funkce doImgConnect() . . . . . . . . . . . . . . . . . . . . . 605.3.6 Funkce mapOnLoadHandler() . . . . . . . . . . . . . . . . . . 605.3.7 Funkce addStopClick() . . . . . . . . . . . . . . . . . . . . . 615.3.8 Funkce showRoute() . . . . . . . . . . . . . . . . . . . . . . . 615.3.9 Funkce preberArg() . . . . . . . . . . . . . . . . . . . . . . . 625.3.10 Funkce showCoordinates() a showExtent() . . . . . . . . . 62

    5.4 Další přidružené skripty . . . . . . . . . . . . . . . . . . . . . . . . . 635.4.1 Soubor lib.js . . . . . . . . . . . . . . . . . . . . . . . . . . 635.4.2 Soubor getVyjezdy.py . . . . . . . . . . . . . . . . . . . . . . 645.4.3 Soubor odeberDiakr.py . . . . . . . . . . . . . . . . . . . . . 64

  • Obsah x

    IV Závěr 65IV.1 Překážky při tvorbě aplikace . . . . . . . . . . . . . . . . . . . . . . . 66IV.2 Znalostní základ ČVUT . . . . . . . . . . . . . . . . . . . . . . . . . 67

    Literatura 68

    V Přílohy 70

    A Skript index.js 71

    B Skript mapa.js 78

    C Skript lib.js 97

    D Skript getVyjezdy.py 99

    E Skript odeberDiakr.py 100

    F Digitální přílohy 102

    G Kopie smluv k poskytnutým datům 103

  • Seznam obrázků

    3.1 Nastavení Network Dataset, záložka Attributes . . . . . . . . . . . . . . 28

    4.1 Zadání místa výjezdu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374.2 Možnosti zadání místa požáru . . . . . . . . . . . . . . . . . . . . . . . . 374.3 Výsledky dotazu GEONAMES . . . . . . . . . . . . . . . . . . . . . . . 464.4 Ikony a mapové značky aplikace . . . . . . . . . . . . . . . . . . . . . . . 464.5 Záložka Trasa; tlačítka pro ovládaní grafiky . . . . . . . . . . . . . . . . 474.6 Záložka Směry, znázornění zvýrazněné části trasy . . . . . . . . . . . . . 47

    5.1 Přehled součástí Dojo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

    Seznam tabulek

    2.1 Přehled atributů lesních komunikací . . . . . . . . . . . . . . . . . . . . . 222.2 Přehled vykreslení třídy CestyDir v mapě . . . . . . . . . . . . . . . . . 232.3 Přehled vykreslení třídy SilniceDir v mapě . . . . . . . . . . . . . . . . . 232.4 Mapové vrstvy a jejich vykreslení pro třídu Geonames . . . . . . . . . . 24

    3.1 Ohodnocení hran dle atributů, třída silniceDir . . . . . . . . . . . . . . . 303.2 Ohodnocení hran dle atributů, třída cestyDir . . . . . . . . . . . . . . . 323.3 Nastavení průjezdnosti . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

    4.1 Výchozí nastavení atributů pro vyhledání trasy . . . . . . . . . . . . . . 36

    xi

  • Seznam ukázek kódů

    5.1 Načtení knihoven JavaScriptu . . . . . . . . . . . . . . . . . . . . . . . . 485.2 Ukázka práce s objekty . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505.3 Ukázka připojení ovladače události k dojo.query . . . . . . . . . . . . . 535.4 Ukázka použití metody dojo.byId . . . . . . . . . . . . . . . . . . . . . 535.5 Ukázka připojení ovladače události pomocí dojo.connect . . . . . . . . 545.6 Ukázka použití dojo.forEach . . . . . . . . . . . . . . . . . . . . . . . . 555.7 Přidání bodů do mapy . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

    xii

  • Seznam značek a zkratek

    Ajax Asynchronous JavaScript and XML — označení pro technologii vý-voje interaktivních webových aplikací

    DOM Document Object Model — objektový model dokumentu, standardvytvořen konsorciem W3C

    GEONAMES databáze názvů geografických objektů na území ČR,spravovaná ZÚ

    HZS Hasičský záchranný sbor

    OPRL Oblastní plány rozvoje lesů, definice zásad hospodaření v lesích,metodický nástroj státní lesnické politiky, spravuje ÚHÚL

    ŘSD Ředitelství silnic a dálnic ČR

    S-JTSK Souřadnicový systém Jednotné trigonometrické sítě katastrální, od-povídající Nařízení vlády č. 430/2006 Sb.

    ÚHÚL Ústav pro hospodářskou úpravu lesů Brandýs nad Labem, organi-zační složka státu

    WGS84 Světový geodetický referenční systém 1984, odpovídající Nařízenívlády č. 430/2006 Sb.

    wkid well-known ID, kód označující dané zobrazení, možné vyhledat nastránkách ESRI, (ESRI, 2009c)

    ZÚ Zeměměřičský úřad

    xiii

  • Poznámky k textu

    Text celé práce se řídí jednotným stylem zvýraznění textu:

    – v práci jsou použity anglické výrazy pro některé funkce či prvky, jejich po-užití považuji za programátorskou terminologii a jejich nahrazení českýmiekvivalenty (mnohdy ovšem ekvivalenty ani neexistují) by obecně utrpělapřehlednost textu,

    – v textu je rozlišen pojem funkce a metoda: metodou se v textu myslí funkce,která je součástí některé z knihoven ESRI JavaScript API, či Dojo; funkcí jemíněna funkce mnou naprogramovaná,

    zdrojové kódy, funkce, metodytímto typem písma jsou sázeny části zdrojových kódů, názvy funkcí, názvymetod, adresy URL; tímto písmem jsou též zvýrazněny názvy geodatabázo-vých atributů a jednotlivé hodnoty uvedené v tabulkách,

    názevkurzívou jsou v práci zvýrazněny některé prvně použité pojmy, dále poténázvy tříd prvků v geodatabázi, názvy a typy souborů (jejich přípony —obvykle třípísmenné).

    14

  • I Úvod

    S vývojem výpočetní techniky v posledních desetiletích nastal i velký rozvoj di-gitálních map. S rozmachem webových služeb a rychlého internetového připojeníse dostavila i konjunktura softwaru pro publikování map na internetu. Takovýmsoftwarem je i ArcGIS Server 9.3.1. Mapy mohou být publikovány v rámci veřejnéinternetové sítě nebo intranetu; pouze k nahlížení, nebo také k editaci pro potřebyčlenů skupiny vývojářů.

    Lesní požáry působí v lesním prostředí velice negativně. Způsobují přímé poškozenídřevní hmoty, lesních kultur, lesních zařízení a v konečném důsledku též sníženíekologické stability lesních porostů. Přímé škody způsobené lesními požáry v ČRdosáhly v r. 2004 32,147 mil Kč, (Jankovská, 2006).

    Jednou z příčin přílišného rozšíření lesního požáru může být špatná dostupnost les-ních porostů pro hasičské vozy a také neznalost místního terénu u členů hasičskéhozáchranného sboru, (Jankovská, 2006). V takových případech chybí optimální ur-čení nejrychlejší trasy, která je dostatečně sjízdná a únosná pro těžké hasičské vozynaplněné vodou.

    Cílem práce bylo vytvořit aplikaci na straně serveru a i lehkého internetového kli-enta, která umožní HZS rychle vyhledat optimální dostupnou trasu od požární sta-nice k místu lesního požáru. Vzhledem k tomu, že jsou v hasičských databázícho požárech uváděny místní názvy, lze v aplikaci vyhledávat místa požáru nejen zapomoci zeměpisných souřadnic, ale i za pomoci místních názvů. Konečná podobaaplikace nese název eL.iška.

    Práce zpřístupňuje mapové a síťové služby. K tomu na straně serveru využívá soft-ware ArcGIS Server 9.3.1. Na straně lehkého internetového klienta pak knihovnufunkcí ESRI JavaScript API pro zpřístupnění služeb ArcGIS Serveru a javascripto-vou knihovnu Dojo pro zjednodušení práce s XHTML a JavaScriptem. Pro výpisdat a hromadnou manipulaci s daty v geodatabázi je použit jazyk Python.

    Text práce je rozdělen na dvě hlavní části. První část pojednává o použitém softwarua o přípravě softwaru k práci. Součástí je přehled a popis použitých dat. Druháčást se zabývá tvorbou a implementací síťové analýzy, webového rozhraní aplikacea poslední kapitolu tvoří dokumentace naprogramovaných skriptů.

    15

  • Část II

    Teoretické poznatky

  • 1 Použitý hardware a software

    Při zpracování této diplomové práce jsem se potýkal s nepříjemnou skutečností:potřebný software nebyl na škole dostupný. Tento handicap jsem nejdříve řešil spo-luprací s firmou ARCDATA PRAHA, s. r. o., která mi umožnila navštěvovat jejichprostory s patřičným hardware i software. Později jsem požádal firmu ARCDATAo zápůjčku software pro svoji práci, čemuž bylo ze strany firmy vyhověno.

    1.1 Hardware

    Parametry počítače PC používaného ve společnosti ARCDATA byly následující: jed-nalo se o tradiční PC „Intel Inside“ , minimálně s dvoujádrový procesorem a operačnípamětí 4 GB.

    Později jsem práci zpracovával na tomto počítači:

    procesor: Intel Core i5-750, 2,66 GHz,

    základní deska: MSI P55-GD65 – Intel P55,

    operační paměť: GEIL 2×2GB DDR3,

    HDD: 2× Hitachi Deskstar SATA II, 500GB.

    Sestava je pro použití systému ArcGIS Desktop i Server zcela dostačující.

    1.2 Software

    Ke své práci jsem potřeboval toto softwarové vybavení: ArcGIS Desktop 9.3.1 s roz-šířením Network Analyst, ArcGIS Server 9.3.1 s rozšířením Network Extension.

    Pro správnou funkčnost Serveru je vyžadován operační systém, který dokáže po-skytovat serverové funkce, tedy například Windows Server 2008 — plnohodnotnýserverový systém. Domácí verze Windows, například Windows XP Home nevyho-vuje podmínkám pro spuštění ArcGIS Server.

    17

  • Kapitola 1. Použitý hardware a software 18

    1.2.1 Operační systém

    Pro instalaci softwaru ESRI jsem jako operační systém použil Windows Server2008, 180 denní bezplatnou testovací verzi. Software jsem stáhl z oficiálních strá-nek společnosti Microsoft, na konci října 2009 ().

    Tento systém má všechny náležitosti nutné pro provoz softwaru ESRI.

    Instalace Windows Server 2008 ze staženého obrazu DVD je naprosto bezproblé-mová. Software rozpozná i starší verze Windows a nastaví pro ně duální bootování přistartu počítače (neměl jsem možnost vyzkoušet například s instalací GNU/Linux).

    Odinstalace duálního zavaděče není jednoduchá operace, řídil jsem se nápovědou proobnovení staré instalace Windows po instalaci Windows 7 na oficiálních webovýchstránkách společnosti Microsoft.

    K úspěšnému provozu 180 denní zkušební verze je nutné Windows Server aktivo-vat. Volbu v menu sytému není snadné najít. Nejlepší způsob, který mohu dopo-ručit, je přes dialog nápovědy k aktivaci softwaru. Správně provedenou aktivaci jemožné zkontrolovat podle informace v pravém dolním rohu prázdné pracovní plochyDesktop.

    1.2.2 ArcGIS Desktop 9.3.1

    Instalace

    Instalce ArcGIS Desktop probíhala bez problémů.

    Menší potíže jsem měl se zprovozněním licenčního serveru pomocí programu Win-dows License Manager. Firma ARCDATA mi zapůjčila tzv. plovoucí licenci pro-gramu ArcGIS.

    License Manager je samostatný program, jenž je spuštěn jako služba operačníhosystému na pozadí. Při instalaci License Manager je nutné zadat správný licenčnísoubor: název serveru (počítače) uvedený v licenčním souboru se musí shodovat sesíťovým názvem počítače, který bude provozován jako licenční server. Pokud jménoneodpovídá, je možné licenční soubor běžnými textovými editory upravit a jménoserveru, počítače, přepsat.

    Po úspěšném zprovoznění licenčního serveru (lze zjistit pomocí instalovaného pro-gramu License Manager) je nutné správně nastavit parametry licence pomocí utilityDesktop Administrator. V jedné z posledních voleb je nastavení licenčního serveru.Do tohoto pole je nutné zadat název počítače v síti, který poskytuje služby licenč-ního serveru. Může to být jedna a tatáž pracovní stanice.

    http://www.microsoft.com/cze/windowsserver2008/default.mspxhttp://www.microsoft.com/cze/windowsserver2008/default.mspx

  • Kapitola 1. Použitý hardware a software 19

    Použití

    Programové vybavení ArcGIS Desktop jsem ve své práci použil takto:

    program ArcCatalogvytvoření geodatabáze, import dat do geodatabáze, vytváření a správa Ne-twork Dataset, publikování mapového souboru mxd do prostředí ArcGIS Ser-ver,

    program ArcMapvytvoření souboru mxd, nastavení zobrazení jednotlivých datových vrstev,vytvoření datové vrstvy typu Route Network Analyst, zadání výchozích pa-rametrů pro řešenou trasu, správa vrstvy Route.

    1.2.3 ArcGIS Server 9.3.1

    Instalace

    Instalaci Serveru ArcGIS jsem musel provést několikrát. Bohužel, minimální nárokyna operační systém byly větší než jsem očekával. Při instalaci softwaru mohu je-dině doporučit prostudování on-line doporučení a oficiálních návodů na stránkáchspolečnosti ESRI.

    Původně jsem instaloval Server v prostředí Windows XP Home. Instalace ovšemnebyla funkční, bylo nutné použít jiný operační systém.

    Podruhé jsem instaloval Server již na operační systém Windows Server 2008. Vybraljsem si instalaci založenou na platformě .NET. V instalačním dialogu jsem byl ovšemupozorněn na to, že některé součásti nebude možné nainstalovat. Po nahlédnutí doonline nápovědy jsem zjistil, že je nutné doinstalovat součásti systému Windows tak,aby podpora .NET byla úplná.

    Součásti systému Windows bylo možné jednoduše nainstalovat, vše je popsáno vonline nápovědě společnosti ESRI. Instalce ArcGIS Serveru již proběhla bez pro-blému. Funkčnost instalace se mi ovšem nepodařilo ověřit. Přihlášení do webovéaplikace (v případě problémů, doporučuji zkusit zcela vypnout Windows Firewall)proběhlo, ovšem aplikace se nechovala tak, jak jsem byl zvyklý ze správné instalaceve společnosti ARCDATA. Tipy a triky z prostředí diskuse uživatelů na stránkách — různým mazáním a přidáváním uživatele Admi-nistrator do rozličných skupin uživatelů — se mi podařilo Windows Server dostatdo stavu, kdy ani Administrator nemohl sytém správně používat. Následovala rein-stalace celého Windows Server 2008.

    Z důvodů problémů s verzí .NET jsem se poté rozhodl instalovat ArcGIS Serverzaložený na platformě Java. Instalace nevyžaduje další součásti sytému Windows.Z tohoto hlediska je jednodušší a pohodlnější. Postupoval jsem již zcela podle návodu

    http://forums.esri.com

  • Kapitola 1. Použitý hardware a software 20

    na stránkách ESRI. K Windows Serveru 2008 existuje v návodu k instalaci ještědodatek. Všechny kroky, které je nutné pro zprovoznění vykonat, jsou ale dobřepopsány. Závěrem instalace je přiřazení správce počítače a uživatelů, kteří budoumoci služby ArcGIS Serveru využívat do skupin uživatelů ArcGIS Server.

    Po dokončení instalace by měl být Server připraven k použití a je možné přihlásitse do webového rozhraní (pokud sytém odmítá přijmout heslo a uživatelské jméno,doporučuji opět zkusit vypnout Windows Firewall).

    Použití

    Pomocí ArcGIS Serveru je možné publikovat mapové výstupy, WMS, a mnoho dal-ších služeb. Osobně jsem použil Map Service, základní mapovou službu, doplněnouo službu Network Extension.

    ArcGIS Server používá pro přehled publikovaných služeb speciální webové rozhraní,tzv. REST API. Po připojení se k tomuto rozhraní je možné procházet služby,které server zprostředkovává. Pomocí tohoto rozhraní je možné dohledat URL danémapové vrstvy – třídy prvků, kterou je nutné předat metodám ESRI JavaScriptAPI.

    Ardesa REST API na mém počítači je ve tvaru:

    a URL mapové vrstvy Geonames (použitá pro dotaz na stránce index.html) je:

    Prohlížením REST API po instalaci a publikaci první mapové služby na Server Javanefungovalo správně. Při vytváření mapové služby jsem nastavil mapovou službujako „Not Pooled“ a stále jsem službu nemohl v REST API zobrazit.

    Příčinu problému jsem nemohl odhalit — prohledávání on-line nápovědy bylo bezvýsledné. Po dlouhé době jsem ovšem našel důvod: služby „Not Pooled“ nejsou vewebovém rozhraní REST API zpřístupněny.

    Po nastavení služby jako „Pooled“ již vše fungovalo jak mělo: mapová služba bylapřístupná v REST API a mapa se zobrazovala na mých XHTML stránkách.

    1.3 Další software použitý pro vývoj práce

    Další software, který jsem použil pro tuto práci, uvádí následující seznam:

    Mozilla Firefox 3.5.3(postupně aktualizovaný) použit jako základní prohlížeč pro ladění a zobra-zení stránek. Ostatní prohlížeče (Internet Explorer) jsem použil jen k získánínáhledů.

    http://repr32:8399/arcgis/rest/serviceshttp://repr32:8399/arcgis/rest/services/ImpSil/MapServer/7

  • Kapitola 1. Použitý hardware a software 21

    Firebug 1.4.3tzv. add-on pro Mozillu Firefox. Lze použít jako debugger pro JavaScript čináhled kaskádových stylů prvků XHTML. Pro vývoj webových aplikací lzejedině doporučit.

    další rozšíření Mozilla Firefoxke své práci jsem používal především tato další rozšíření: Session Manager0.6.6.2 (slouží k ukládání oken a záložek Firefox), Tab Mix Plus 0.3.8.2 (prolepší práci se záložkami), Adblock Plus 1.1.1 (pro odstranění nežádoucíchreklam a obrázků z www stránek), DownThemAll! 1.1.6 (skvělý downloadakcelerátor), Forecastfox 0.9.10.1 (pro přehled počasí).

    Apache Server 2.2.14webový server, použitý pro zpřístupnění stránek na lokálním počítači. Zobra-zení webových stránek jednoduchým otvřením souboru stránky v prohlížečiFirefox se chovalo jinak než načtení stránky z webového rozhraní Apache Ser-ver. Apache Server byl použit pro simulaci zpřístupnění stránek na internetu.

    Eclipse IDE Galileovývojové prostředí. Použil jsem jej pro svoji práci k vývoji skriptů a XHTMLstránek. Použitá rozšíření: JavaScript Developer Tools 1.1.2, Web DeveloperTools 3.1.1 a PyDev 1.5.0.

    sázecí systém LATEXsystém pro sazbu dokumentů a technických textů. Pro jeho instalaci jsempoužil balíček TEXLive 2008. Pro vysázení textu práce poté mnou upravenouverzi třídy memoir. Pro výpis citací v textu rozšíření BibTEX, a to taktéžs upraveným nastavením csplainnat.bst.

    LEdzkratka pro LATEXEditor. Jedná se o editor pro soubory LATEX a BibTEX.

  • 2 Popis použitých dat

    2.1 Lesní komunikace

    Data lesních komunikací jsem získal z Ústavu pro hospodářskou úpravu lesů Brandýsnad Labem (ÚHÚL), pocházejí ze sady dat Oblastních plánů rozvoje lesů (OPRL).Data jsem získal od vedoucího oddělení GIS Ing. Jana Císaře. Datové soubory mibyly poskytnuty v zobrazení S-JTSK_Krovak_East_North, v souboru s názvemF_L_Cesty_Odvozni.shp.

    Lesní komunikace jsou uloženy v třídě prvků SitDirec\cestyDir. Lesní komunikacemůžeme rozdělit na několik tříd, podle atributu TRIDA a VOZOVKA, tab. 2.1 (ÚHÚL,2009). Podle těchto atributů jsou také vykresleny v mapě, tab. 2.2.

    Tabulka 2.1: Přehled atributů lesních komunikací

    TRIDA VOZOVKA popis

    L1L a+p lesní komunikace, celoroční provoz; asfaltový povrchL2L n lesní komunikace sezónní provoz; nezpevněný povrch

    z lesní komunikace sezónní provoz; zpevněný povrchN 0 komunikace v návrhuV1L a+p veřejná cesta, celoroční provoz; asfaltový povrchV2L z veřejná cesta, sezónní provoz; zpevněný povrch

    Jak vyplývá z tabulky 2.1, třída označena značkou N je podle dokumentace ÚHÚL,2009 pouze návrhem lesní cesty či jiné veřejné komunikace. Z tohoto hlediska tedy jejípoužití pro vyhledávání nejrychlejší trasy není vhodné. Ovšem, pokud si uvědomíme,že třídou N je označeno 839 prvků geodatabáze z 2876, je jasné, že vyřazením tétotřídy z vyhledávání by aplikace poměrně utrpěla.

    Proto je aplikace nastavena tak, že je na vyřazení třídy N připravena, ale toto vyřa-zení není provedeno. Informace také v části 3.1.4.

    2.2 Lesy

    Třída prvků lesy pochází taktéž ze zdrojů ÚHÚL, z dat OPRL. Bližší informaceo vrstvě lze nalézt na webových stránkách organizace,

  • Kapitola 2. Popis použitých dat 23

    Tabulka 2.2: Přehled vykreslení třídy CestyDir v mapě

    komunikace typ povrch zobrazení

    lesní cesty celoroční provoz modrá barvasezónní provoz tmavě zelená barva

    a+p, z plná čáran, N přerušovaná čára

    veřejné cesty celoroční provoz a+p červená plná čárasezónní provoz z světle zelená plná čára

    návrh komunikace 0 šedá přerušovaná čára

    oprl/>. Obdobně jako lesní komunikace jsem získal i lesní porosty, původní ná-zev souboru dat byl F_A_Les_OPRL.shp.

    Data v třídě prvků lesy obsahují jen základní informace o každé položce (ID1,PLOCHA, DS_OPRL). V mapě slouží pro přehled toho, kde se lesní porosty nacházejí.

    2.3 Pozemní komunikace

    Zdrojem dat pozemních komunikací je Ředitelství silnic a dálnic ČR (ŘSD). Data miposkytl vedoucí oddělení GIS a zpracování dat Ing. Bogdan Kaleta, se sídlem v Os-travě. Data byla poskytnuta v zobrazení S-JTSK_Krovak_East_North, v souboruguseky.shp.

    Datová třída pozemních komunikací je uložena v geodatabázi, v datasetu s NetworkDataset. Jedná se o třídu prvků SitDirec\silniceDir.Třída obsahuje atribut KOD_TRIDY_KOMUNIKACE, podle kterého je nastaveno vykres-lení v mapě, tab. 2.3. Komunikace s prázdnou hodnotou atributu jsou považoványza komunikace první a vyšší třídy (dálnice, rychlostní komunikace).

    Tabulka 2.3: Přehled vykreslení třídy SilniceDir v mapě

    KOD_TRIDY_KOMUNIKACE zobrazení

    „ “ (prázdný) tmavší šedá barva, šíře 3ostatní hodnoty světle šedá barva, šíře 2

    Data obsahují poměrně velké množství položek s velkým počtem atributů s hodnotou. Jedná se o silnice, které jsem do této třídy prvků přidal při dokreslovánía připojování silniční sítě.

    http://www.uhul.cz/oprl/http://www.uhul.cz/oprl/

  • Kapitola 2. Popis použitých dat 24

    2.4 Výjezdní místa – požární stanice

    Zdrojem dat byl Hasičský záchranný sbor Libereckého kraje se sídlem v Liberci(HZS). Data mi poskytla správkyně GIS kpt. Bc. Jana Havrdová. Data byla po-skytnuta v souřadnicovém systému S-JTSK_Krovak_East_North, název původ-ního datového souboru byl JPO.shp.

    V aplikaci jsou všechna výjezdní místa považována za stejně důležitá, do mapy jsouvykreslena pomocí stejné mapové značky.

    Třída je uložena v geodatabázi, v datasetu s Network Dataset. Jedná se o tříduprvků SitDirec\StaniceDir.

    2.5 Názvy GEONAMES

    Zdrojem dat byl Zeměměřičský úřad v Praze (ZÚ). Data mi poskytla vedoucíoddělení odbytu Ing. Renata Nováková. Data byla poskytnuta v zobrazení S-JTSK_Krovak_East_North, v datovém soubor s původním názvem Geonames.shp.

    Třída prvků je v geodatabazi uložena mimo dataset. Třída mimo jiné obsahujeatributy NAZEV, OBJEKT, XJ, YJ, KU a FONTHEIGH.

    Třídu prvků jsem rozdělil podle atributu FONTHEIGH do 4 mapových vrstev, tab. 2.4.V každé vrstvě je nastaven popis prvků pomocí atributu NAZEV. Popis se liší podlejednotlivých vrstev ve velikosti a úpravě písma. Každé vrstvě je též nastaveno jinérozmezí zobrazení podle aktuálního měřítka mapy.

    Řešení pomocí více mapových vrstev není zcela elegantní, ale pro toto použití jezcela dostačující.

    Tabulka 2.4: Mapové vrstvy a jejich vykreslení pro třídu Geonames

    FONTHEIGH mapová vrstva zobrazení zobrazeno v měřítku

    9 a méně Geon9mene Arial 9pt, podtržené od 1 : 45 00010 až 15 Geon10-15 Arial 12pt od 1 : 100 00016 až 20 Geon16-20 Arial 14pt 1 : 250 000 – 1 : 35 00021 a více Geon21more Arial 20pt, bold do 1 : 35 000

  • Část III

    Praktická část

  • 3 Tvorba, nastavenía implementace sítě

    3.1 Základní funkce Network dataset

    3.1.1 Jednosměrné hrany

    Jednosměrné hrany v Network dataset se nejjednodušeji nastaví pomocí geodata-bázového atributu s názvem One_Way. Tento atribut je při tvorbě network datasetrozpoznán a automaticky nastaven jako rozhodující pro jednosměrné určení hran.Data v atributu (pro automatické nastavení — pokud uživatel vše nastaví ručně jemožné použít jakékoliv volby) mohou nabývat těchto hodnot:

    FT — From-To, linie je průjezdná (není zakázána) ve směru kresby ,

    TF — To-From, linie je průjezdná (není zakázána) proti směru kresby,

    N — linie je neprůjezdná oběma směry,

    jiné hodnoty — linie je průjezdná oběma směry (v práci je použita hodnotabt – both).

    Nastavení jednosměrných cest je zprostředkováno pomocí Evaluator typu Field.Tento typ Evaluator je zpracován při sestavování sítě. Pokud se hodnota atributuv databázi změní, je nutné vyvolat sestavení sítě znova (spustit operaci Build Ne-twork).

    3.1.2 Connectivity Policy – propojení sítě

    Nastavené Connectivity Policy udává, jaký způsobem mají být prvky v síti pospo-jovány.

    U liniových tříd je na výběr z těchto možností nastavení:

    Any Vertexpropojí linie v datové třídě v každém bodu zlomu linie, nejen v koncích,

    End Pointpropojí linie pouze v koncových bodech, jakékoliv jiné křížení linií není po-važováno za propojení.

    26

  • Kapitola 3. Tvorba, nastavení a implementace sítě 27

    Propojení má samozřejmě vliv na spojení sítě. Například mosty mohou být simulo-vány nastavením „End Point“ . Ovšem například u dat, která nejsou zcela korektnětypograficky správně, a není třeba uvažovat jejich mimoúrovňové křížení, je jedno-dušší použít nastavení „Any Vertex“ .

    3.1.3 Ohodnocení hran

    Úloha použitá v této práci je zaměřena na vyhledání nejrychlejší trasy mezi dvěmabody. Pro vyhledání trasy je použit Dijkstrův algoritmus. Pokud hledáme nejrych-lejší trasu je nutné každé hraně přiřadit čas, který hranu ohodnotí. Dijkstrův algo-ritmus poté vyhledá trasu s nejnižším možným tranzitním časem.

    Výpočet ohodnocení hran je implementován jako atribut Network Dataset s názvem„casXmultiplier“ , Usage Cost, Units minutes, Data Type Double. Je nastaven jakovýchozí. Viz obr. 3.1. Atribut je nastaven s Evaluators typu Function, ke správnémuvýpočtu používá druhý atribut Network Dataset „casVypocet2“ . Hodnotu tohotoatributu dělí hodnotou svého parametru „P_v_multiplier“ .

    Atribut „casVypocet2“ s typem Evaluators Field má syntaxi výpočtu své hodnotypodle rovnice 3.1. Výsledkem je hodnota času potřebná pro překonání liniovéhoprvku v minutách.

    tcasV ypocet2 =[Shape_Length] · 3,6[rychlost] · 60

    (3.1)

    Mým záměrem bylo vytvořit model sítě komunikací co nejvíce odpovídající realitě.Proto je v Network Dataset zaveden parametr „P_v_multiplier“ . Je implementovánv „casXmultiplier“ jako Evaluator typu Function podle rovnice 3.2.

    tkonecny =tcasV ypocet2

    P_v_multiplier(3.2)

    Celkový předpis pro výpočet tranzitního času jednotlivého prvku je poté:

    tkonecny =

    [Shape_Length]·3,6[rychlost]·60

    P_v_multiplier=

    [Shape_Length] · 3,6[rychlost] · P_v_multiplier · 60

    (3.3)

    Parametr „P_v_multiplier“ plní tedy úlohu násobiče rychlosti použité pro výpočettranzitního času. Pomocí tohoto atributu je tedy možné simulovat zhoršený průjezdpři řešení úlohy vyhledání trasy. Pro hodnoty P_v_multiplier < 1 je tranzitníčas prodlužován, pro hodnoty P_v_multiplier > 1 zkracován. Výchozí hodnota jeP_v_multiplier = 1.

    Ve své práci jsem testoval ještě jeden přístup k problému aktuálního nastavenírychlosti průjezdu. Měl jsem v úmyslu použít pro výpočet geodatabázový atributv_multiplier. Atribut by měl stejný význam jako výše popsaný atribut Network

  • Kapitola 3. Tvorba, nastavení a implementace sítě 28

    Dataset. Jeho hodnota by mohla být pro každý prvek geodatabáze různá. Tentozáměr jsem nemohl implementovat, protože on-line nápověda společnosti ESRI mineposkytla žádné informace ohledně psaní Evaluator VBScript. Evaluator typu VB-Script je jediný typ Evaluator, který je možné použít k načítání hodnot z geoda-tabáze během algoritmu hledání trasy. Ostatní typy Evaluator načítají data z ge-odatabáze pouze během vytváření Network Dataset funkcí Build Dataset. Atributv_multiplier jsem v geodatabázi již ponechal.

    Jednotlivé silnice a cesty, hrany grafu, jsou ohodnoceny rychlostí podle tabulky 3.1a 3.2.

    Obrázek 3.1: Nastavení Network Dataset, záložka Attributes

    3.1.4 Další omezení sítě – Restriction

    Restriction je název Usage – Použití – atributů sítě. Atribut OneWay je jen jednouinstancí Restriction. Pomocí Restriction lze definovat i další omezení pro síť.

    V síti jsem definoval omezení průjezdu v závislosti na maximální hmotnosti a šířcevozidla, které může danou komunikací (hranou grafu) projet.

    Hmotnost a šíře vozidla je zadána vždy před řešením dané trasy jako parametrřešení.

  • Kapitola 3. Tvorba, nastavení a implementace sítě 29

    3.2 Příprava dat

    Data použitá v práci, jak uvádí kapitola 2, jsou z mnoha zdrojů a tudíž dosti nesou-rodá. Pro správné a bezchybné propojení sítě bylo nutné data editovat a to poměrněve velkém měřítku. Zásadní změny se týkaly napojení dat (tříd silniceDir s třídoucestyDir), a také připojení dat: připojení třídy staniceDir na okolní síť.

    Použitá geodatabáze neobsahuje žádný nadstandardní prvek. Jsou v ní uloženypouze linie představující komunikace, body vyjadřující požární stanice a názvyGEONAMES a polygony znázorňující polohu lesních celků. Geodatabáze neobsa-huje žádné prvky které by sloužili jako objekty sítě; například objekt vyjadřujícíkřižovatky a jiné objekty. Úrovňové křižovatky komunikací jsou realizovány jedno-duchým napojením konců kresby.

    3.2.1 Datová třída silniceDir

    Data pozemních komunikací od společnosti ŘSD byla z globálního hlediska zcelav pořádku. Všechny na sebe navazující prvky byly pospojovány svými konci (toznamená, že například mosty jsou řešeny jako obyčejné, nepropojené křížení geome-trie).

    Doplnění kresby

    Při připojování třídy prvků cestyDir a staniceDir a testování sítě jsem shledal, žesíť komunikací je v některých místech dosti neúplná.

    Velké nedostatky jsou převážně v městské zástavbě (území města Liberce). Kresbujsem se v takovýchto oblastech snažil dokreslit. Dokreslení jsem prováděl jed-noduchými nástroji, pouze z přímých liniových prvků. Jako podklad pro datajsem použil veřejně přístupnou WMS službu ze serveru Cenia, konkrétně službucenia_b_ortorgb1m_sde, (Ministerstvo vnitra ČR, 2009).

    Connectivity Policy

    Pro tuto třídu bylo nastaveno v Connectivity Policy „End Point“ , právě z důvodusimulace mimoúrovňového křížení.

    Dále bylo nutné připojit veškeré lesní komunikace v třídě cestyDir. V programuArcMap jsem musel vyhledat všechny komunikace, které se blížily prvkům silni-ceDir , a manuálně všechna spojení opravit: připojit lesní cestu k prvku silniceDira tento prvek poté rozdělit v bodě napojení — tak aby platila podmínka spojenípouze koncovým bodem.

  • Kapitola 3. Tvorba, nastavení a implementace sítě 30

    Nastavení jednosměrných ulic

    Pro datovou třídou silniceDir proběhlo nastavení jednosměrných komunikací jedno-duše. Veškeré mnou zjištěné jednosměrné komunikace, tedy dálnice a přípojky na ně,i kruhové objezdy, byly kresbou správně orientované. Stačilo tedy vytvořit v data-bázi atribut One_Way a nastavit jeho hodnotu u těchto komunikací na FT. Tak došlopo vytvoření Network Dataset k automatickému nastavení průjezdu pouze jednímsměrem.

    Nastavení atributu rychlost

    Nastavení atributu rychlost jsem provedl podle tab. 3.1.

    Tabulka 3.1: Ohodnocení hran dle atributů, třída silniceDir

    silniceDirKOD_TR_KOM nastavená rychlost 20, 30, 40, 50, 60, 70, 90, 100 kmh−1

    2 90 nebo 130 kmh−1 pro "KOD_R" = ’R’3 90 kmh−1

    4 90 kmh−1

    Hodnota v třídě prvků silniceDir zahrnuje prvky, které jsem ručně do-kresloval do sítě. Proto také hodnoty rychlosti jsou tolik různorodé – každé takovésilnici jsem nastavil atribut rychlost individuálně. Atribut KOD_R s hodnotou Rznačí rychlostní silnice. Tyto silnice jsem také převážně nastavil jako jednosměrné.

    Nastavení omezení sítě

    Nastavení podmínek a omezení sítě jsem pro tuto třídu prvků neprovedl. Podmínkamaximální možné průjezdní hmotnosti či šíře vozidla u této třídy prvků nemá vý-znam (všechny komunikace považuji za dostatečně únosné) — přinejmenším ji nenímožné generalizovat na obecnou skupinu prvků.

    3.2.2 Datová třída cestyDir

    Data získaná z OPRL byla na první pohled v pořádku. Ovšem při vykreslení datcestyDir a silniceDir do jedné mapy byly okamžitě vidět značné nedostatky. Šlozejména o špatné připojení cestyDir k prvkům třídy silniceDir ; toto ovšem nenípříliš překvapující z důvodů naprosto rozdílného zdroje dat. V některých případechjsem našel i zdvojení kresby. Jednalo se převážně o velmi nepřesné vedení prvků

  • Kapitola 3. Tvorba, nastavení a implementace sítě 31

    cestyDir po prvcích silniceDir . Při podložení vrstvou cenia_b_ortorgb1m_sde zeserveru Cenia bylo patrné, že poloha lesních cest není správná. Poloha ostatníchkomunikací odpovídala podkladu.

    Doplnění a úprava kresby

    Kresbu třídy cestyDir jsem příliš neupravoval. Pokud ano, tak v místech, kde jsemeditoval původní kresbu (původní prvek jsem upravil tak, aby bylo možné ho např.připojit na pozemní komunikace; prvek jsem „prodloužil“ nebo „zkrátil“ ).

    V několika místech, kde se kresba lesních komunikací shodovala s kresbou pozem-ních komunikací jsem prvky lesních komunikací smazal. Pozemní komunikace svojípolohou spíše odpovídaly vrstvě cenia_b_ortorgb1m_sde.Též je zřejmé, že pokudurčitým místem vede pozemní komunikace, je zabezpečen lepší průjezd touto komu-nikací, než kdyby byl úsek cesty považován pouze za lesní cestu.

    Connectivity Policy

    Connectivity Policy pro tuto třídu byla nastavena jako „Any Vertex“ . Je téměř vy-loučeno, že by bylo nutné na lesních komunikacích simulovat mimoúrovňové křížení.Toto nastavení mi zjednodušilo práci, v případě nastavení druhé volby by bylo nutnézkontrolovat správnou topologii kresby, což by si vyžádalo více času.

    Nastavení jednosměrných ulic

    Nastavení pro třídu cestyDir postrádá smysl. Všechny lesní komunikace jsou pova-žovány za obousměrné.

    Nastavení je provedeno tak, že v nastavení Evaluators v kartě Source Values proatribut sítě OneWay není zadán žádný typ pro tuto třídu prvků. Síť tedy uvažujevšechny lesní cesty obousměrně průjezdné.

    Nastavení atributu rychlost

    Nastavení atributu rychlost jsem provedl podle tab. 3.2.

    Pro N je nastavena velmi nízká hodnota rychlosti. A to z toho důvodu, že je třída Nvyhrazena návrhu lesních komunikací (viz kap. 2). Proto je možné, že reálně nebudecesta v terénu vůbec průjezdná.

  • Kapitola 3. Tvorba, nastavení a implementace sítě 32

    Tabulka 3.2: Ohodnocení hran dle atributů, třída cestyDir

    cestyDirTRIDA nastavená rychlostL1L 30 kmh−1

    L2L 20 kmh−1

    N 5 kmh−1

    V1L 30 kmh−1

    V2L 20 kmh−1

    Nastavení omezení sítě

    Pro třídu lesních komunikací je nastaveno omezení maximální dovolené hmotnostivozidla a také maximální možné světlé, průjezdní, šířky komunikace. Obě dvě hod-noty je možné zadat jako parametr řešení trasy.

    Nastavení v Network Dataset je provedeno následovně:

    1) je vytvořen atribut sítě MaxWeight, typu Descriptor, data type Integer — tenpřebírá hodnotu geodatabázového atributu max_weight, pomocí Evaluatortypu Field. Protože třída silniceDir tento atribut neobsahuje (omezení proní není nastaveno) je zde Evaluator typu Constant s hodnotu 1000, tedy takvelkou, aby nemohla dostát omezení; dle bodu 2) je tato hodnota irelevantní,

    2) je vytvořen atribut sítě WeightRestr, typu Restriction, data type Boolean –toto omezení má jeden vstupní parametr s názvem „Vehicle Weight“ , jehožhodnotou je hmotnost vozidla, pro který se hledá daná trasa. Atribut Weight-Restr má za úkol porovnat, zda-li zadaný parametr nepřekračuje hmotnostz MaxWeight. Porovnání je vyřešeno Evaluator typu Function s předpisem:

    MaxWeight < VehicleWeight (3.4)

    pokud je výsledkem porovnání hodnota true, hrana je neprůjezdná, (ESRI,2009e). Pro třídu prvků silniceDir je Evaluator nastaven na typ Constants hodnotou Traversable, tedy vždy průjezdný.

    Pro třídu cestyDir je také nastaveno omezení vztahující se k maximálně přípustnéšířce vozidla. Nastavení omezení je shodné s principem nastavení pro maximálníhmotnost vozidla.

    Maximální přípustná hmotnost a šíře průjezdu je pro lesní komunikace nastavenapodle tabulky 3.3.

  • Kapitola 3. Tvorba, nastavení a implementace sítě 33

    Tabulka 3.3: Nastavení průjezdnosti

    TŘÍDA VOZOVKA maximální váhamax_weight

    maximální šířevozidla max_width

    L1L a+p 0 (bez omezení) 3mL2L n 12 tun 2,5m

    z 0 2,5ma+p 0 2,5m

    N 0 12 tun 2,5mV1L a+p 0 3mV2L z 0 2,5m

  • 4 Návod k užívání webovéhorozhraní

    V prostředí webové aplikace je brán zřetel na přehlednost a užitnou hodnotu. Vzhleda funkčnost se podřídily záměru vytvořit rychlou a snadno dostupnou aplikaci.

    Všechny webové stránky jsou založeny na standartu XHTML 1.0 Strict a CSS level2.1. Při tvorbě stránek jsem se zaměřil na co největší přístupnost z různých aplikací.Funkce mapy jsou naprosto závislé na zpracování JavaScriptu, to znamená, že pokudpoužitý prohlížeč JavaScript nepodporuje, není možné stránky používat. Z tohotodůvodu je i stránka index.html doplněna kódem JavaScriptu. Stránka info.htmlje naproti tomu čistá statická stránka.

    Při tvorbě stránek jsem se držel většiny doporučení z literatury (Yank – Adams,2008; Zeldman, 2004). Například informovat uživatele, že s vypnutým JavaScrip-tem nejsou stránky funkční, či konstruovat stránky tak, aby i v případě vypnutíJavaScriptu byly, pokud možno, veškeré textové informace uživateli přístupné.

    4.1 Nastavení hlavních parametrů trasy

    Hlavní parametry trasy jsou zadávány na první straně webového rozhraní, s názvemindex.html. Základními parametry trasy se rozumí:

    výjezdní místonastavení požární stanice, ze které hledáme nejrychlejší cestu k požáru,

    parametry trasyjedná se o šířku a hmotnost vozidla. Tyto atributy bohužel nelze zahrnoutdo vyhledání trasy, viz konec části 4.1.1,

    místo požárumísto zadané pomocí souřadnic JTSK či WGS84 nebo vyhledané pomocínázvu GEONAMES.

    4.1.1 Nastavení místa výjezdu

    Výjezdní místo se určí pomocí seznamu jmen výjezdních míst. Jméno umístěnív tomto rolovacím seznamu se přebírá ze dvou atributů geodatabáze a to jmenovitě

    34

  • Kapitola 4. Návod k užívání webového rozhraní 35

    z: SIDLO a NAZ_CAST. Pro rychlejší výběr příslušného jména je možné při rozvinutémseznamu nabídky stisknout na klávesnici první písmeno názvu hledaného výjezdníhomísta a kurzor pro výběr přeskočí na první další položku začínající tímto písmenem.Obr. 4.1.

    Webová aplikace je konstruovaná tak, aby vybrané výjezdní místo uložila do počítačeuživatele v podobě zápisu položky cookie. Název cookie je nastaven na vybranoJe.Její hodnota obsahuje číslo atributu EJVC, což je jedinečné číslo pro identifikacipožární stanice.

    Nastavení cookie usnadňuje uživateli práci. Při opětovném navštívení stránky jecookie načtena a automaticky nastavena předchozí vybraná hodnota.

    Pro lepší přehled je uživatel informován o stavu načtení či uložení cookie a to těmitostavy:

    SET — informuje uživatele, že výjezdní místo bylo uloženo,

    LOAD — výjezdní místo bylo načteno ze záznamu cookie,

    not FOUND — cookie byla načtena z paměti prohlížeče, ale v seznamu nebylnalezen odpovídající záznam výjezdního místa,

    not LOAD — cookie nebyla nalezena v paměti prohlížeče,

    někde IE chyba? — značí chybu s prohlížeči typu Internet Explorer, uloženémísto je povětšinou správně načteno a v seznamu nalezeno, do obsluhujícíhoskriptu je ovšem vrácena chybová zpráva,

    SET — právě vybrané výjezdní místo bylo v pořádku uloženo do paměti prohlí-žeče,

    not SET — při ukládání vybraného místa vznikla chyba, místo není s největšípravděpodobností uloženo,

    cookie NOT supported — cookie nejsou podporovány; tento stav může být vy-volán například netradičním nastavením prohlížeče. Pokud je tento stav sig-nalizován, cookie není možné vůbec používat ani pro tuto funkci ani pro dalšífunkce na všech stránkách.

    Výjezdní místa jsou webovou aplikací získávána pomocí tzv. Ajax dotazu. Z tohoplyne, že seznam výjezdních míst nemusí být, z důvodu chyby, správně stažen zeserveru. Pokud tato chyba nastane, uživatel je o ni informován chybovou zprávou:„Nepovedlo se navázat spojení se serverem!“ . Poté je uživateli zobrazen odkaz napřesměrování se na stránku s mapou přímo (bez možnosti zadat výjezdní místo čimísto požáru pomocí souřadnic), kde může výjezdní místo a místo požáru zadatručně, kliknutím do mapy. Je zřejmé, že toto ruční zadaní může být mnohonásobněpomalejší. K lepší orientaci na mapě pak uživateli slouží alespoň položky „ZobrazeníExtent“ a „Souřadnice ukazatele“ (část 4.2.4).

  • Kapitola 4. Návod k užívání webového rozhraní 36

    Parametry trasy

    V dialogu pro výběr místa výjezdu je možné do aplikace zadat i parametry trasy.Rozhraní společnosti ESRI použité v této práci (ESRI, 2009f) neumožňuje však tytozadané parametry odeslat na server. Při výpočtu nejkratší trasy tak na ně není bránzřetel.

    Aplikace je připravena na jejich zadání, ovšem v této fázi stavu JavaScript API nenímožné je použít.

    Aplikace je nastavena tak, že trasa je vždy vyhledávána s následujícími parametry,tab. 4.1

    Tabulka 4.1: Výchozí nastavení atributů pro vyhledání trasy

    atribut parametr hodnota poznámka

    WeightRestr Vehicle Weight 22 t hmotnost vozidlaWidthRestr Vehicle Width 3m šíře vozidlacasXmultiplier P_v_multiplier 1 konstanta pro násobení rychlosti

    4.1.2 Nastavení místa požáru

    Pro vybrání, určení, místa požáru umožňuje aplikace tyto 3 metody (obr. 4.2):

    Zadání pomocí WGS84 — požářiště je možné zadat v souřadnicích WGS84,

    Zadání pomocí S-JTSK — požářiště je možné zadat v souřadnicích systémuJTSK,

    Nalezení názvu GEONAMES — možnost vyhledat název GEONAMES,jehož souřadnice se poté zvolí jako místo požáru.

    Zadání pomocí WGS84

    Souřadnice WGS84 se zadávají ve stupních. Nejdříve zeměpisná délka, poté země-pisná šířka.

    Souřadnice je možné zadávat jak v desetinném čísle (je možné použít jak desetinnoutečku tak i čárku), či kombinací stupně, minuty (v desetinném čísle), tak následněi stupně, minuty, vteřiny (v desetinném čísle). Jednotlivé číslice šedesátinné soustavyse oddělují pomocí znaku středník (;). Čísla je nutné zadávat „od předu“ : první čísloje považováno za stupně, druhé za minuty a třetí za vteřiny.

    Aby zadání proběhlo správně, je při odesílání formuláře kontrolováno, zda-li jsouvšechna pole formuláře vyplněna. Pokud v některém poli hodnota chybí, odesláníse nezdaří.

  • Kapitola 4. Návod k užívání webového rozhraní 37

    Obrázek 4.1: Zadání místa výjezdu

    Obrázek 4.2: Možnosti zadání místa požáru

  • Kapitola 4. Návod k užívání webového rozhraní 38

    Po odeslání formuláře je uživatel přesměrován na webovou stránku s mapu. Mapaje zobrazena v souřadnicovém systému WGS84 a taktéž veškeré zobrazované sou-řadnice jsou v tomto souřadnicovém systému.

    Zadání pomocí S-JTSK

    Souřadnice S-JTSK se zadávají v metrech.

    Opět je možné použít jak desetinnou tečku, tak i desetinnou čárku. Mezi jednotlivécifry souřadnic se nesmí vkládat mezery (např. oddělující tisíce a milióny).

    Odeslání formuláře je možné jen v případě, kdy vstupní hodnoty nejsou nulové čiprázdné. Při odesílání je též kontrolováno, zda-li je souřadnice X větší než souřadniceY. Toto omezení je platné na celém území ČR, proto je zavedeno.

    Označení souřadnicových os (tedy označení X a Y ve webové aplikaci) korespondujes běžně používaným označením v souřadnicovém sytému (kladná poloosa X směřujícína jih, osa Y s ní v levotočivé soustavě). Souřadnice jsou poté interně převedenyna vyjádření, které se používá v GIS systémech: souřadnice X nahrazena -Y a Ynahrazena -X.

    Webová aplikace umožňuje zadávat souřadnice i v minusové hodnotě, označení os seale nemění (osy jsou vždy označeny podle tradiční levotočivé soustavy).

    Po odeslání formuláře je uživatel obdobně přesměrován na webovou stránku s ma-pou. Mapa je zobrazena v souřadnicovém systému JTSK, všechny souřadnice jsoutaktéž v tomto systému.

    Nalezení názvu GEONAMES

    Do pole pro název je možné zadat jakoukoliv část názvu z databáze GEONAMES— geodatabázového atributu NAZEV. Zadání je možné provést jak pomocí diakritiky,tak i bez ní. Velikost písmen také nemá žádný vliv na vyhledávání.

    Po odeslání formuláře jsou ve spodní části stránky zobrazeny výsledky. Každý od-povídající záznam je zobrazen v samostatném prvku s následujícími informacemi:nalezený název, typ vyhledaného názvu (např. vrchol hory, pozemková trať, . . . ),katastrální území, obec, okres, kraj, souřadnice prvku na mapě. Obr. 4.3, strana 46.

    Uživatel může kliknout na vybrané vyhledané místo (kamkoliv do oblasti rámečkuprvku). Tím je přenesen na mapu. V tomto případě je mapa zobrazena v souřadni-covém systému JTSK.

  • Kapitola 4. Návod k užívání webového rozhraní 39

    4.2 Použití stránky s mapou

    Stránka s mapou je realizována webovou stránkou mapa.html.

    4.2.1 Ovládání mapy

    Mapu lze ovládat těmito příkazy:

    jednoduché kliknutí — vložení bodu do mapy. Pokud jsou vloženy minimálnědva body, je vyhledána nejrychlejší trasa mezi těmito body — pokud tonastavení v záložce Trasa neupraví jinak,

    tažení při stisknutí levého tlačítka — posun po mapě,

    tažení levým tlačítkem myši při držení klávesy Shift — přiblížení ozna-čené části mapy,

    tažení levým tlačítkem myši při držení kláves Ctrl-Shift — oddálenímapy v poměru označené části mapy,

    pravé tlačítko — nejsou přiřazeny žádné akce.

    4.2.2 Otevření stránky

    Při otevírání stránky s mapou může dojít ke dvěma situacím:

    přesměrování přes formulářdojde k němu při správně vyplněných formulářích na stránce index.html,

    přesměrování pro ruční zadánípokud nebylo možné zadat výjezdní místo nebo byla stránka otevřena bezpoužití stránky index.html.

    Přesměrování přes formuláře

    Pokud je otevřena strana přesměrováním ze stránky index.html, její adresní řádekobsahuje údaje, jež jsou předány z první strany. Tyto údaje jsou načteny a pomocínich okamžitě po zobrazení stránky vyhledána trasa odpovídají těmto údajům.

    Poznámka: Této vlastnosti (uložení parametrů do adresy URL stránky) je možnévyužít. Je možné již vyhledané trasy uložit například do Oblíbených stránek a potéje jednoduše s nezměněnými základními údaji vyvolat.

    Mapa a souřadnice mapy jsou zobrazeny v souřadnicovém systému, který byl použitpro vyhledání lesního požáru.

  • Kapitola 4. Návod k užívání webového rozhraní 40

    Přímý přístup na stránku — ruční zadání

    Pokud je strana otevřena bez zadání parametrů, nejsou do mapy načteny žádnéa mapa je otevřena tak, aby zobrazovala celé území Libereckého kraje.

    Pouhým kliknutím je možné do mapy zadat místo výjezdu či požáru — použitáikona je závislá na nastavení na záložce Trasa. Trasa, která se vyhledá po zadáníminimálně dvou bodů, je vždy vyhledána od prvního k druhému bodu. Do mapyje možné zadat kliknutím i další body, trasa se poté vyhledá od posledního bodupředcházejícího úseku do nového bodu — opět závisí na nastavení na záložce Trasa.

    4.2.3 Použití a nastavení záložek

    Stránka mapa.html obsahuje v pravé horní části záložky. Pod každou volbou seskrývá možnost nastavení či informace o stavu aplikace.

    Ovládací tlačítka pod názvy záložek

    Ovládací tlačítka jsou zobrazena s jakoukoliv záložkou — jsou viditelná vždy. Jejichfunkce je následující:

    Vymaž trasuz mapy je odstraněna grafika vyhledané trasy,

    Vymaž dočasné bodyz mapy jsou odstraněny dočasné značky bodů a linií: značka pro znázorněnívymazaného bodu a modré zvýraznění linie trasy,

    Vymaž veškerou grafikuvymaže jak trasu, dočasné body a linie, tak platné zastávky pro vyhledávání.

    Záložka Vrstvy

    Záložka vrstvy obsahuje výpis vrstev zobrazovaných v mapě. Každou takovou vrstvuje na této záložce možné nechat zobrazit nebo skrýt.

    Informační ikona „Informace“ , obr. 4.4, v levé části pole odkazuje na informaceo vrstvě na stránku info.html.

    Záložka Trasa

    Na této záložce se zobrazují informace o aktuálně nalezené trase a též nastavenípro vyhledávání. Trasa je v mapě zobrazena pomocí tlusté červené mapové značky.

  • Kapitola 4. Návod k užívání webového rozhraní 41

    Její průhlednost je nastavena na hodnotu 50%, aby bylo také vidět po jakém typukomunikace je trasa vedena (obr. 4.4, „Vyhledaná trasa“).

    Trasa je po každém novém vyhledání (buď načtením stránky, nebo s pomocí tlačítka„Vyhledej trasu“) okamžitě po vyhledání zobrazena do mapy, spolu s ní jsou do mapyzobrazeny i body, použité pro vyhledání trasy.

    Informace o trase zobrazují celkovou délku a celkový čas pro průjezd vyhledanoutrasou. Viz obr. 4.5, str. 47.

    Nastavení vyhledávání umožňuje uživateli nastavit jakým způsobem se budevyhledávat další trasa. Přehled ovládacích prvků:

    optimalizovat zastávky na trasepokud je výběr aktivní, systém automaticky propojí všechny zastávky provyhledání tak, aby trasa mezi nimi byla co nejkratší. První zastávka trasy senemění. Default: false,

    přiblížit na trasupokud je výběr aktivní, po vyhledání a zobrazení trasy do mapy je mapapřiblížena a posunuta tak, aby celá trasa byla viditelná. Default: true,

    použít všechny zastávky × použít poslední dvě zastávkyindikuje zda se mají pro trasu použít pouze poslední dva platné body zadanédo mapy, či všechny platné body. Default: použít poslední dvě zastávky,

    použít omezení trasypokud je aktivní, je pro vyhledání použito jak omezení OneWay, tak WidthRestriction a Weight Restriction. Vyhledání trasy s takovým omezením ne-musí mít řešení. Pokud je volba neaktivní, je použito pouze omezení OneWay— řešení nejspíše bude nalezeno, ale je zde možnost, že nebude pro zadaný typautomobilu sjízdné. Uživatel je informován o použitých omezení na stráncepo vyhledání trasy. Default: true,

    vypisovat směry trasypokud je volba aktivní, systém vypíše seznam hran a navigaci po nich ve styluauto-moto GPS navigace. Pomocí tohoto seznamu je možné se lépe orientovatpři jízdě po vyhledané trase. Více informací v části Záložka Směry. Default:true.

    Pod volbami nastavení je uveden seznam všech bodů, které je možné pro vyhledánítrasy použít. Při obvyklé situaci (přesměrování na mapu se zadanými hodnotami zestrany index.html) je první bodem trasy místo výjezdu, v mapě označeno ikonouhasičského vozu, a druhým bodem místo lesního požáru, v mapě vyznačeno pomocíikony ohně, obr. 4.4).

    Se seznamem bodů lze pracovat těmito způsoby (taktéž viz obr. 4.5, 4.4):

  • Kapitola 4. Návod k užívání webového rozhraní 42

    zaškrtávací prvek bodupokud je aktivní, bod je možné použít pro vyhledávání — pokud spadá dovybrané podmínky z nastavení vyhledávání. Pokud tam nespadá, bod nenípro vyhledávání použit, je ovšem stále (pokud uživatel nevymaže grafikumapy) zobrazen v mapě,

    ikona Zoompo kliknutí uživatele na tuto ikonu je mapa vystředěna a přiblížena na danýprvek. Pokud uživatel klikne na ikonu Zoom s přidrženou klávesou Ctrl, mapaje na prvek pouze přesunuta, její měřítko je zachováno. Obdobně to platí i proikonu za položkou „přiblížit na trasu“ ,

    ikona Deletepo kliknutí na tuto ikonu je bod vymazán ze seznamu bodů použitých provyhledávání trasy — není již použit pro vyhledávání. Této funkce je možnévyužít po špatném zadání bodu, kvůli němuž nemohlo být nalezeno řešenítrasy. Ikona smazaného bodu je odstraněna z mapy. Bod je možné obnovitv seznamu vymazaných bodů na záložce Nastavení.

    Tlačítko „Vyhledej trasu“ slouží k vyhledání trasy. Pokud je trasa vyhledána, jez mapy předešlá trasy odstraněna, a v mapě se zobrazí také body, přes které je novátrasa vedena. Za tlačítkem jsou vypsána omezení pro vyhledanou trasu.

    Výběr ikony pro bod je sekce, pro výběr ikonu, která se jednoduchým kliknutímdo mapy zobrazí jako nový bod. Na výběr je z těchto možností (viz obr. 4.4):

    Obyčejný bodbod je vložen s jednoduchým symbolem černého plus (+),

    Požářištěikona označující místo lesního požáru,

    Výjezdní místoikona hasičského vozu, znázorňující výjezdní místo hasičské techniky.

    Záložka Směry

    Záložka slouží k zobrazení směrových pokynů pro správné projetí trasy vozem. Zob-razeno na obr. 4.6, str. 47.

    Pokyny jsou seřazeny po směru trasy, tedy od prvního bodu k poslednímu. Každýzáznam číslovaného seznamu představuje jeden geometrický úsek trasy, napříkladjednu ulici, část silnice či lesní cesty. Ovšem vstupní data použita pro tuto prácinejsou na takovýto výpis připravena a proto jsou názvy silnic a cest ve výpisuprakticky téměř nepoužitelné. Jako názvy úseků se pro silniční síť zobrazují atributy

  • Kapitola 4. Návod k užívání webového rozhraní 43

    CIS_USEKU, popřípadě R_INDSIL7. Pro lesní cesty poté atributy NAME, popřípaděTRIDA.

    Směrová navigace je ve výpisu uváděna v angličtině. Jedná se o povely jako: continue— pokračujte, turn left — odbočte doleva a další.

    U každého záznamu, prvku trasy, je uvedena jeho délka v metrech a čas potřebnýk jeho překonání v minutách (méně jak jedna minuta je označena značkou

  • Kapitola 4. Návod k užívání webového rozhraní 44

    kříže ve tvaru X. S touto geometrií je v aplikaci zacházeno jako s dočasnýmbodem. Ovládací prvek je možné použít také s klávesou Ctrl, kdy je mapanad prvek pouze přesunuta. Akce znázornění bodu vymaže z mapy veškeroudříve znázorněnou dočasnou kresbu (modře zvýrazněný úsek trasy, či jinýbod označen červeným X),

    ikona Obnovenípo kliknutí na tuto ikonu je bod odebrán ze seznamu smazaných bodů a jeopětovně obnoven do seznamu bodů připravených pro použití při vyhledánítrasy. Ikona zobrazovaná v mapě je shodná s tou, která byla použita původně.Bod je okamžitě zobrazen do mapy.

    Záložka Nápověda

    Pod touto záložkou se skrývá základní nápověda a popis stránky s mapou. Jsouzde uvedeny použité souřadnicové systémy a je možné přejít na kompletní stránkus informacemi info.html.

    4.2.4 Informace o mapě

    Pod mapou jsou zobrazeny tři základní informace o mapě. Mají za úkol pomociuživateli při orientaci v mapě.

    Zobrazení Extent

    V tomto poli se vypisují aktuální souřadnice levého dolního a pravého hor-ního rohu zobrazované mapy. Pod výpisem souřadnic je uveden kód tzv. wkid.Mapa se zobrazuje pouze ve dvou různých zobrazeních, souřadnicovém systémuS-JTSK_Krovak_East_Norths čísle wkid 102067 a WGS84 s číslem wkid 4326.

    Podrobnější informace o zobrazení jsou rozepsány v následujícím odstavci, a prozobrazení těchto souřadnic platí obdobně.

    Souřadnice ukazatele

    Toto pole zobrazuje aktuální pozici ukazatele myši při pohybu po mapě. Souřadnicejsou pro zobrazení S-JTSK_Krovak_East_North (wkid 102067) zobrazovány najedno desetinné místo v metrech a pro zobrazení WGS84 (wkid 4326) na čtyři dese-tinná místa v zeměpisných stupních. Obě zobrazení tedy uvádějí polohu ukazatelena mapě s přesností přibližně 0.1m.

    Označení souřadnicových os je přebráno z označení os v GIS software: tradiční sou-řadnice JTSK získáme záměnou označení os (X ↔ Y) a znásobením hodnot kon-

  • Kapitola 4. Návod k užívání webového rozhraní 45

    stantou −1. Pro systém WGS84 označuje hodnota X zeměpisnou délku a hodnota Yzeměpisnou šířku.

    Mapové podklady

    V tomto poli je uveden výpis organizací, které mi poskytly data pro vypracovánítéto diplomové práce. Po kliknutí na názvy organizací je uživatel přesměrován nawebovou stránku info.html, která o jednotlivých organizacích blíže informuje.

  • Kapitola 4. Návod k užívání webového rozhraní 46

    Obrázek 4.3: Výsledky dotazu GEONAMES

    Mapové značky

    Obyčejný bod Požářiště Výjezdní místo Dočasný bod

    Požární stanice

    Znázornění trasy

    Vyhledaná trasa Zvýrazněnýúsek trasy

    Ovládací prvky

    Informace Obnovení bodu Odstranění bodu Přiblížení prvku

    Obrázek 4.4: Ikony a mapové značky aplikace

  • Kapitola 4. Návod k užívání webového rozhraní 47

    Obrázek 4.5: Záložka Trasa; tlačítka pro ovládaní grafiky

    Obrázek 4.6: Záložka Směry, znázornění zvýrazněné části trasy

  • 5 Programová dokumentace

    5.1 JavaScriptové knihovny

    Veškerý JavaScriptový kód stránek je založen na knihovně Dojo, (Dojo, 2009). Tatoknihovna se pyšní nepřeberným množstvím metod a vychází vstříc pohodlí pro-gramátora, který není nucen ošetřovat všechny možné i nemožné výstřelky různýchdruhů internetových prohlížečů. Tuto strastiplnou práci přebrala vývojová komunitaDojo.

    Toolkit Dojo nabízí mnoho různých rozšíření pro veškeré možné JavaScriptové uti-lity.

    Hlavním důvodem, proč jsem použil právě tuto knihovnu, je, že i ArcGIS API forJavaScript je na knihovně Dojo postaveno a už od základu používá její metody.Použití knihovny mimo funkce mapy nemělo žádný vedlejší efekt.

    Knihovna Dojo je open source, (Russell, 2008). Připojení knihovny do webovýchstránek lze provést jednoduše pomocí HTML značky se zdrojem uvede-ným jako externí kopie ze serveru komunity Dojo. Pokud je ovšem, jako v mémpřípadě, nutné načíst i funkčnost knihoven společnosti ESRI, není nutné knihovnuDojo načítat zvlášť (pokud uživatel nepotřebuje využít jinou verzi knihovny než jestandardně použita s ESRI JavaScript API).

    V mé práci je použito ESRI JavaScript API verze 1.5, s čímž je spojena verze Dojo1.3.2. Načtení obou knihoven je provedeno pomocí příkazu, kód 5.1:

    Kód 5.1: Načtení knihoven JavaScriptu

    1

    5.1.1 ESRI JavaScript API, principy a použité objekty

    Shrnuji zde pouze základní principy práce.Veškerá programová dokumentace je pře-hledně zpracována na stránkách ESRI, (ESRI, 2009f).

    48

  • Kapitola 5. Programová dokumentace 49

    Třídy

    V podstatě všechny objekty použité v aplikaci jsou z pohledu programátora objekty.Třídy jako takové v JavaScriptu neexistují. Vše jsou objekty, (Stefanov, 2008). Název„třída“ používám proto, že jej tak používá společnost ESRI na svých stránkách.

    Všechny názvy tříd společnosti ESRI začínají znaky esri a následuje jejich název.Tradičně se jednotlivé názvy oddělují pomocí tečky (.). Dále jsou jednotlivé třídyuspořádány do hierarchie, která je na stránkách ESRI vždy uvedena. Toto uspořá-dání však pro moji práci nemělo žádný praktický význam.

    Důležité je, že každá třída může obsahovat či vyvolávat:

    konstruktor — předání parametrů při vytváření instance objektu,

    vlastnosti — properties : jedná se o vlastnosti ke kterým lze přistupovat, čístje, a nebo i měnit,

    metody — funkce, pomocí nichž lze data získávat nebo nastavovat objekturůzné stavy (kód 5.2),

    události — events : jsou to jakási „hlášení“ daného objektu při přechodu mezirůznými stavy. Události lze zachytávat — připojovat na ně různé funkce,které se poté, při vypuštění události provedou.

    Přehled všech konstruktorů, vlastností, metod a událostí je přehledně uveden v re-ferenční příručce.

    Návratové hodnoty

    Většina metod nebo vlastností objektu vrací při svém volání návratovou hodnotu.Touto hodnotou může být buď proměnná (int, float, boolean, . . . ), nebo takéobjekt. Co je danou vlastností či metodou vráceno je vždy uvedeno v referenčnípříručce — v podrobném výpisu nápovědy jsou návratové hodnoty uváděny ve špi-čatých závorkách. S takto vrácenými objekty je pak samozřejmě možné zacházetstejně jako s jakýmikoliv jinými objekty.

    Základní použité třídy

    Na začátku vytváření HTML stránek doporučuji, navštívit internetové stránkyESRI, (ESRI, 2009c), kde je možné najít velké množství příkladů pro všechny zá-kladní typy úloh. Uvedené vzory však příliš neodpovídají zásadám zpřístupněníHTML stránek největšímu okruhu uživatelů, ani nevyužívají potenciálu knihovnyDojo.Veškeré kódy jsou funkční (obtížně fungoval jeden příklad, kdy po zkopírováníkódu a nastavení vlastních zdrojů ukázka kódu nepracovala správně, při použitísoftwaru Firebug bylo možné velice lehce dohledat příčinu chyby).

  • Kapitola 5. Programová dokumentace 50

    Kód 5.2: Ukázka práce s objekty

    1 routeTask = new esri.tasks.RouteTask(2 "http://repr32:8399/arcgis/rest/services/ImpSil/NAServer/Route");3 /*vytvoreni objektu esri.tasks.RouteTask*/45 routeParams = new esri.tasks.RouteParameters();6 /*vytvoreni objektu esri.tasks.RouteParameters*/78 routeParams.stops = new esri.tasks.FeatureSet();9 /*vytvoreni objektu esri.tasks.FeatureSet*/

    1011 ...1213 routeParams.ignoreInvalidLocations = true;14 routeParams.preserveFirstStop = true;15 /*ukazka prirazeni hodnoty vlastnosti instance objektu*/1617 routeParams.outSpatialReference = new esri.SpatialReference({18 "wkid" : w_kid19 });20 /*ukazka prirazeni noveho objektu vlastnosti instance objektu*/

    Základní objekty, které jsem použil jsou následující:

    esri.Mapobjekt pro práci s mapou. Třída zpřístupňuje velké množství vlastností a me-tod. Taktéž velké množství událostí, pomocí nichž je možné vypisovat aktu-ální polohu kurzoru na mapě či souřadnice výřezu mapy,

    esri.layers.GraphicsLayerjedná se o objekt který je možné do mapy přidat jako vrstvu s grafickýmiprvky (s body, liniemi, plochami). Objekt jsem použil pro přidání tří různýchdruhů vrstev: zastavkyL pro zobrazení zastávek na trase, trasyL pro zobra-zení vyhledané trasy, ukazkyBoduL pro zobrazení dočasné kresby — znázor-nění smazaných bodů a zvýraznění úseku trasy. Takovýto přístup umožňujevymazat jednotlivé typy prvků, aniž by byly ovlivněné ostatní značky namapě,

    esri.tasks.QueryTaskje objekt pomocí něhož lze vytvořit dotaz na ArcGIS Server. Do konstruk-toru objektu se zadává URL odpovídající mapové vrstvy, na kterou dotazpokládáme. Pomocí metody execute lze dotaz poslat na server. Parametremmetody je objekt typu esri.tasks.Query. Výsledky dotazu lze zpracovatpomocí funkce připojené na událost onComplete,

  • Kapitola 5. Programová dokumentace 51

    esri.tasks.Queryobjekt slouží pro zadání parametrů pro dotaz objektuesri.tasks.QueryTask. Lze použít atributy jako např. returnGeometrypro vrácení i geometrie nalezeného prvku, či outFields pro vrácení pouzeněkterých atributů geodatabáze,

    esri.tasks.RouteTaskje objekt s obdobou QueryTask. Do konstruktoru je zadáno URL mapovévrstvy, která má být použita pro vyhledání trasy. Tato mapová vrstvamusí být vrstvou z rozšíření Network Analyst. Dotaz na server pro ře-šení dotazu se odešle pomocí metody solve, s parametrem instancí ob-jektu esri.tasks.RouteParameters. Pro zobrazení výsledků je možné pou-žít událost onSolveComplete; pro zachycení chyby při řešení dotazu událostonError,

    esri.tasks.RouteParametersslouží pro zadání parametrů pro vyhledání trasy. Je možné nastavit téměřvšechny volby, které lze nastavit v prostředí programu ArcMap. Interaktivně,pomocí prvků HTML formulářů, je možné nastavit parametry podle přáníuživatele. Některé možnosti ovšem nastavit nelze (vstupní parametry trasy),viz část IV.1. Při navrácení výsledku trasy ze serveru jsou výsledky uloženyv objektu esri.tasks.RouteResult,

    esri.tasks.RouteResultobsahuje veškeré výsledky vrácené dotazem na řešení trasy. Jedná se o bodyzastávek (i s geometrií), geometrie vyhledané trasy a některé vlastnosti trasy(délka po trase, čas potřebný k překonání trasy). Všechny tyto vlastnosti lzepomocí kódu JavaScriptu zpřístupnit uživateli na webové stránce.

    5.1.2 Knihovna Dojo

    Pro tuto práci jsem využil jen malé množství nabízených metod z knihovny Dojo.Knihovna se skládá z těchto základních komponent, viz obr. 5.1:

    1) Base — je jádro celé knihovny. Sdružuje základní metody, které jsou potévyužívány v ostaních částech. Tato komponenta je velice kompaktní a opti-malizovaná (Russell, 2008). Obsahuje ovládací prvky Ajax, systém balíčků,metody pro manipulaci s HTML DOM objekty, CSS3 selektory a nástrojepro vyvolávání událostí,

    2) Core — je součást založená na Base a nabízí metody pro vytváření widgets,animace, „drag-and-drop“ funkce a práci s cookies,

    3) Dijit — zastřešuje knihovnu metod pro widgets,

  • Kapitola 5. Programová dokumentace 52

    4) DojoX — je poměrně experimentální knihovna pro vše, co už se nevměstnalopod Core nebo Dijit. Metody a funkce z této části knihovny mohou být stálevyvíjeny,

    5) Util — sbírka Dojo metod obsahující nástroje na vytváření vlastních verzíDojo.

    Obrázek 5.1: Přehled součástí Dojo (Russell, 2008)

    V této práci jsem použil základní metody pro ovládání DOM HTML, metody propřipojení událostí, metody pro manipulaci s poli (Array) a metody pro nastavenía čtení cookies.

    Následující přehled metod si neklade za cíl vytvořit jejich kompletní dokumentaci.Slouží jako přehled metod použitých, a parametry a návratové hodnoty uvádí taképouze v rozsahu použitém při programování. Kompletní dokumentace a přehledyjsou dostupné on-line, nebo v odborných knihách, (Dojo, 2009; Russell, 2008).

    Použité metody pro manipulaci DOM

    Z knihovny Dojo jsem použil tyto metody:

    dojo.place(/*Node*/ co, /*Node*/ kam, /*String*/ jak)umístí element (objekt) DOM na určené místo ve struktuře dokumentu (vý-hodné získat např. pomocí dojo.byId). Atribut jak lze použít např. jako:"only" — původní obsah nahradí, "replace" — nahradí i zadaný kam,"last" — připojí co na konec všech sourozenců ve struktuře,

    dojo.create(/*String*/ co, /*JSON*/ vlastnosti) /*objekt DOM*/vytvoří objekt struktury dokumentu, který pak lze umístit pomocídojo.place. Jako vlastnosti lze předat objekt s upravenými příkazy for-mátování CSS,

    dojo.query(/*CSS String*/ indetifikator, /*Node ?*/ predchudce)/*Array*/

    základní metoda k výběru prvků z hierarchie DOM. Jsou vybrány všechnyuzly vyhovující indentifikátoru CSS a splňující podmínku nepovinného argu-mentu předchůdce. Podporovanou verzi CSS a podporované indentifikátorylze najít na stránkách projektu Dojo.Velkou výhodou je možnost připojit k takto vybraným prvkům funkci, kteráse vykoná při události vybraných prvků. Kód skriptu se všem prvkům připojí

  • Kapitola 5. Programová dokumentace 53

    velice jednoduše pomocí bezejmenné funkce, v níž lze využít: 1) klíčové slovothis pro element, pro nějž se akce vykonává; 2) první argument funkce, dokterého je předána akce vyvolaná prvkem HTML. Kód 5.3,

    Kód 5.3: Ukázka připojení ovladače události k dojo.query

    1 dojo.query("[type=’button’]").onclick(function(event){2 /*vyberu vsechna tlacitka*/3 this.value = "Uz kliknul";4 /*po kliknuti na tlačítko mu zmenim popisek*/5 dojo.stopEvent(event); /*zrusim vychozi akci kliknuti*/6 });

    dojo.byId(/*String*/ id)základní metoda pro vyhledání prvku DOM pomocí jedinečného názvu idelementu HTML. Jako argument metody se zadá čistý řetězec atributu id.kód 5.4,

    Kód 5.4: Ukázka použití metody dojo.byId

    1 kód HTML:2

    3 ...4

    56 kód JS:7 dojo.byId("footer").innerHTML = "toto je v paticce";

    dojo.style(/*Node*/ co, /*JSON*/ jak)metoda slouží ke změně stylu daného prvku v průběhu běhu aplikace,

    .removeClass(/*String*/ trida)umožňuje odebrat zadanou třídu objektům DOM, lze použít např. ve spoje-ním s dojo.query(): dojo.query(".zalozky").removeClass("visible"),

    dojo.addClass(/*Node*/ komu, /*String*/ trida)umožňuje přidat třídu zadanému prvku; je možné použít i rozdílným způso-bem — jako metodu removeClass (a opačně),

    Metody obsluhující události JavaScriptu

    dojo.stopEvent(/*Event*/ udalost)metoda slouží ke zrušení vykonání výchozí akce dané události. Napříkladpokud skriptem odhalíme špatně vyplněný HTML formulář, můžeme pomocítéto metody zamezit jeho odeslání,

  • Kapitola 5. Programová dokumentace 54

    dojo.connect(/*Objekt*/ co, /*String*/ akce, /*Funkce*/ predpis)metoda slouží k propojení objektu a jeho události k funkci, kterou chcemetuto událost ošetřit. Knihovna Dojo umožňuje ošetřovat nejenom tradičníudálosti (onclick, onchange, . . . ), ale umí také pomocí této funkce připojitobsluhu události například při přidání prvku do pole (použito ve skriptumapa.js), kód 5.5,

    Kód 5.5: Ukázka připojení ovladače události pomocí dojo.connect

    1 dojo.connect(stops,"push",function(){2 doPushHandler(); /*prikazy, ktere se vykonaji*/3 });

    dojo.addOnLoad(/*Funkce*/ predpis)slouží ke spuštění funkce, kterou chceme provést po celkovém načtení stránky.Kód JavaScriptu je prohlížečem vykonán okamžitě poté, co je skript načten.Uvedeme-li tedy skript do záhlaví HTML stránky, je pravděpodobné, že po-mocí něho budeme ovládat prvky, které ještě pro prohlížeč neexistují (proza-tím je nenačetl). Použitím metody dojo.addOnLoad se vyhneme popsanémuproblému, protože obsah predpis se provede až po úplném načtení HTMLstránky

    Metody pro operace s cookies

    dojo.cookie.isSupported() /*Boolean*/metoda vrátí hodnotu true nebo false podle toho, jestli daný prohlížečpodporuje ukládání a načítání cookies. Hodnota false je vrácena pokud jsoucookies ve webovém prohlížeči vypnuta (nastavením uživatele), nebo nejsoupodporována vůbec,

    dojo.cookie(/*String*/ nazev, /*String ?*/ hodnota)metoda slouží k ukládání a načítání položek cookies z paměti prohlížeče.Pokud metodu voláme pouze s prvním parametrem, její návratovou hodnotouje načtená hodnota cookie daného jména. Volání s oběma parametry znamenáuložení hodnoty cookies do paměti prohlížeče

    Metody pro operace s objektem Array

    dojo.forEach(/*Array*/ co, /*Funkce*/ jak(item,i))tato metoda iteruje přes všechny prvky pole co a s každým vykoná zadanousadu příkazů jak. Sada příkazů se nejlépe implementuje jako bezejmennáfunkce, která může přebrat dva argumenty: 1) item — odkazující na právězpracovávaný prvek, 2) i — obsahující index zpracovávaného prvku v poli.Kód 5.6,

  • Kapitola 5. Programová dokumentace 55

    Kód 5.6: Ukázka použití dojo.forEach

    1 var mohuPouzit = [];2 ...3 dojo.forEach(mohuPouzit,function(item,i){4 routeParams.stops.features.push(item);5 /*alert("pridavam ..." + i);*/6 });

    dojo.some(/*Array*/ co, /*Funkce*/ jak(item)) /*Boolean*/metoda provede iteraci přes všechny prvky pole a vrátí hodnotutrue, pokud byl nalezen alespoň jeden prvek odpovídají podmínce,či false, nebyl-li nalezen žádný prvek. Funkce v druhém argu-mentu musí obsahovat návratovou hodnotu typu Boolean: napříkladfunction(item){return item.checked;},

    dojo.filter(/*Array*/ co, /*Funkce*/ jak(item)) /*Array*/metoda opět projde všechny prvky pole co a do výsledného pole zařadí pouzety prvky, které odpovídají podmínce ve funkci jak,

    dojo.indexOf(/*Array*/ co, /*Objekt*/ prvek) /*Int*/metoda vrátí pozici daného prvku v poli. Objektem se v tomto případě myslícokoliv (číslo, string, pole, . . . ). Pokud prvek není v poli nalezen, je vrácenahodnota −1.

    Metody zaměřené na objekty

    dojo.clone(/*Objekt*/ co) /*Objekt*/metoda vytvoří kopii objektu předaného jako parametr. Podobně jako napří-klad v Javě či Pythonu nelze použít příkaz kopie = predloha, tímto způso-bem není vytvořen nový objekt se stejnými hodnotami, ale pouze je stávajícíinstanci objektu přiřazeno nové jméno,

    dojo.mixin(/*Objekt*/ komu, /*Objekt*/ co) /*Objekt*/metoda rozšíří danou instanci objektu komu o vlastnosti a metody in-stance objektu co. Metody dojo.mixin jsem využil pro rozšíření objektuesri.Graphic o instanci vlastního objektu Pouzit.

    Další použité metody

    dojo.xhrGet(/*JSON*/ parametry)metoda zprostředkovává Ajax dotaz. Mezi parametry bych vyzdvihl parametrsync, jenž jsem v mém případě použil s hodnotou true. Tím jsem zamezilchybě, která může vzniknout v případě, když se snažíme pracovat ještě nezcela načteným objektem,

  • Kapitola 5. Programová dokumentace 56

    dojo.require(/*String*/ co)metoda slouží k načtení rozšiřujících částí knihovny Dojo. Z důvodů značnéspolupráce knihoven ESRI a Dojo slouží tento příkaz i k načítání součástíknihovny ESRI,

    dojo.Color(/*Array/JSON ...*/ barva)tímto výrazem je vytvořen objekt barvy. Pro mé účely jsem použil zadáníbarvy pomocí prvku Array; nastavení jsem provedl i s různou průhlednostíbarvy. Objekty knihovny ESRI přebírají objekt dojo.Color pro nastavenívzhledu grafických prvků v mapě.

    5.2 Skript index.js

    Skript je rozdělen do několika málo funkcí. Základní funkcí je funkce init(), ta jespuštěna po načtení celé stránky.

    5.2.1 Funkce spravnyVyjezd()

    Funkce slouží ke kontrole správného zadání formuláře pro výjezdní místo. Pokud jeve formuláři nalezena nějaká chyba, je funkcí vrácena klíčová hodnota undefined.

    Pokud jsou zadány všechny parametry správně, je funkcí vrácen objekt se všemihodnotami formuláře.

    Vytvořením této funkce jsem zabránil opakování kódu obsluhují kontrolu formulářevýjezdního místa.

    5.2.2 Funkce init()

    Základními funkčními úseky jsou:

    Načtení výjezdních míst do prvku Je provedeno pomocí objektu dojo.xhrGet. Načítáný soubor je vytvořenz použité geodatabáze skriptem v jazyce Python (viz část 5.4.2). Pokud sestažení souboru nepovede, je uživateli zobrazen odkaz na stránku s mapou.

    Načtení volby z cookies, nastavení dané volby řádky 168 – 201Pomocí metod knihovny Dojo je z cookies načtena již vybraná volba. Docookies je ukládáno pouze číslo EJVC. Cookie s touto hodnotou má názevvybranoJe. Ošetřil jsem případy jako: cookies nejsou podporována, není na-lezena odpovídající cookie, není nalezeno načtené číslo EJVC, načtené číslonení nalezeno v seznamu, atd. (viz část 4.1.1). O všech těchto stavech jeuživatel informován.

  • Kapitola 5. Programová dokumentace 57

    Zachycení události při změně prvku Tato akce je nutná z toho důvodu, aby poslední vybraná volba byla správněuložena do hodnoty cookie. Jedná se o cookie vybranoJe.

    Zachycení události onsubmit formuláře WGS84 řádky 217 – 262Kód je spuštěn, pokud se uživatel pokusí odeslat formulář #form_WGS84.Před odesláním se provede kontrola, zda jsou zadány všechny potřebné údaje:výjezdní místo (pomocí funkce spravnyVyjezd()), zeměpisná šířka a délka.Pokud nejsou některé hodnoty správně vyplněny, je přerušeno zpracovánívýchozí události — události submit formuláře.Při správném vyplnění formuláře jsou zeměpisná délka a šířka přepočteny nastupně (v desetinném čísle) a tyto hodnoty, obdobně jako veškeré ostatní, jsouskriptem doplněny do skrytých polí formuláře. Formulář je poté automaticky(výchozí akce) odes