+ All Categories
Home > Documents > Návrh informačního systému URC JOSEFgeo.fsv.cvut.cz/proj/bp/2013/pavel-klimunda-bp-2013.pdfGIS,...

Návrh informačního systému URC JOSEFgeo.fsv.cvut.cz/proj/bp/2013/pavel-klimunda-bp-2013.pdfGIS,...

Date post: 13-Mar-2020
Category:
Upload: others
View: 11 times
Download: 0 times
Share this document with a friend
73
Transcript
Page 1: Návrh informačního systému URC JOSEFgeo.fsv.cvut.cz/proj/bp/2013/pavel-klimunda-bp-2013.pdfGIS, AJAX, PHP, ExtJS, GeoExt, OpenLayers, Nette, PostGIS, PostgreSQL PROHLÁ ENÍ Prohla²uji,

ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZEFAKULTA STAVEBNÍ

BAKALÁŘSKÁ PRÁCE

PRAHA 2013 Pavel KLIMUNDA

Page 2: Návrh informačního systému URC JOSEFgeo.fsv.cvut.cz/proj/bp/2013/pavel-klimunda-bp-2013.pdfGIS, AJAX, PHP, ExtJS, GeoExt, OpenLayers, Nette, PostGIS, PostgreSQL PROHLÁ ENÍ Prohla²uji,

ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZEFAKULTA STAVEBNÍ

OBOR GEOINFORMATIKA

BAKALÁŘSKÁ PRÁCENÁVRH INFORMAČNÍHO SYSTÉMU URC JOSEF

Vedoucí práce: Ing. Michal Seidl, Ph.D.Katedra speciální geodézie

červen 2013 Pavel KLIMUNDA

Page 3: Návrh informačního systému URC JOSEFgeo.fsv.cvut.cz/proj/bp/2013/pavel-klimunda-bp-2013.pdfGIS, AJAX, PHP, ExtJS, GeoExt, OpenLayers, Nette, PostGIS, PostgreSQL PROHLÁ ENÍ Prohla²uji,

ZDE VLOŽIT LIST ZADÁNÍ

Z důvodu správného číslování stránek

Page 4: Návrh informačního systému URC JOSEFgeo.fsv.cvut.cz/proj/bp/2013/pavel-klimunda-bp-2013.pdfGIS, AJAX, PHP, ExtJS, GeoExt, OpenLayers, Nette, PostGIS, PostgreSQL PROHLÁ ENÍ Prohla²uji,

ABSTRAKT

Cílem bakalářské práce „Návrh informačního systému URC JOSEF“ je navrhnout zá-

klad informačního geoportálu pro regionální podzemní výzkumné centrum ČVUT URC

JOSEF (http://uef-josef.eu). Systém bude postaven na moderních technologiích, bude

maximálně uživatelsky přívětivý a snadno udržovatelný a rozšiřitelný. Tato práce obecně

popíše jednotlivé části systému.

KLÍČOVÁ SLOVA

GIS, AJAX, PHP, ExtJS, GeoExt, OpenLayers, Nette, PostGIS, PostgreSQL

ABSTRACT

The goal of this work "Design of information system for URC JOSEF" is to design

base of the information geoportal system for underground research center CTU URC

JOSEF (http://uef-josef.eu). The system will be built on modern technologies, it will be

user-friendly and easily maintainable and extensible. The aim of this thesis is to describe

general parts of the system.

KEYWORDS

GIS, AJAX, PHP, ExtJS, GeoExt, OpenLayers, Nette, PostGIS, PostgreSQL

Page 5: Návrh informačního systému URC JOSEFgeo.fsv.cvut.cz/proj/bp/2013/pavel-klimunda-bp-2013.pdfGIS, AJAX, PHP, ExtJS, GeoExt, OpenLayers, Nette, PostGIS, PostgreSQL PROHLÁ ENÍ Prohla²uji,

PROHLÁŠENÍ

Prohlašuji, že bakalářskou práci na téma „Návrh informačního systému URC JO-

SEF“ jsem vypracoval samostatně. Použitou literaturu a podkladové materiály uvádím

v seznamu zdrojů.

V Praze dne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

(podpis autora)

Page 6: Návrh informačního systému URC JOSEFgeo.fsv.cvut.cz/proj/bp/2013/pavel-klimunda-bp-2013.pdfGIS, AJAX, PHP, ExtJS, GeoExt, OpenLayers, Nette, PostGIS, PostgreSQL PROHLÁ ENÍ Prohla²uji,

PODĚKOVÁNÍ

Chtěl bych poděkovat Ing. Michalu Seidlovi Ph.D., vedoucímu práce, za připomínky

a pomoc při zpracování této práce. Dále bych chtěl poděkovat rodině a přátelům za

jejich dlouhodobou podporu v průběhu celého studia.

Page 7: Návrh informačního systému URC JOSEFgeo.fsv.cvut.cz/proj/bp/2013/pavel-klimunda-bp-2013.pdfGIS, AJAX, PHP, ExtJS, GeoExt, OpenLayers, Nette, PostGIS, PostgreSQL PROHLÁ ENÍ Prohla²uji,

Obsah

Úvod 9

1 Požadavky na funkcionalitu 11

1.1 Uživatelé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

1.2 Majetek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

1.3 Senzory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

1.4 Výzkumné projekty . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

1.5 Bodová pole a geodata . . . . . . . . . . . . . . . . . . . . . . . . . . 13

1.6 Historie změn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

1.7 Aktualizace geodetický dat . . . . . . . . . . . . . . . . . . . . . . . . 14

1.8 Vize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

2 Návrh 16

2.1 Případy užití . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

2.1.1 Uživatelé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

2.1.2 Majetek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

2.1.3 Senzory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

2.1.4 Výzkumné projekty . . . . . . . . . . . . . . . . . . . . . . . . 21

2.1.5 Bodová pole a geodata . . . . . . . . . . . . . . . . . . . . . . 22

2.2 Procesy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

2.2.1 Uživatelé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

2.2.2 Majetek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

2.2.3 Senzory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

2.2.4 Výzkumné projekty . . . . . . . . . . . . . . . . . . . . . . . . 27

2.2.5 Bodová pole a geodata . . . . . . . . . . . . . . . . . . . . . . 27

2.3 Databáze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

2.3.1 Objekty, doplňkové atributy a spojení . . . . . . . . . . . . . . 30

2.3.2 Správa uživatelů, rolí a oprávnění . . . . . . . . . . . . . . . . 32

2.3.3 Geodata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

2.3.4 Historie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

Page 8: Návrh informačního systému URC JOSEFgeo.fsv.cvut.cz/proj/bp/2013/pavel-klimunda-bp-2013.pdfGIS, AJAX, PHP, ExtJS, GeoExt, OpenLayers, Nette, PostGIS, PostgreSQL PROHLÁ ENÍ Prohla²uji,

2.4 Třídy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

2.4.1 Objekty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

2.4.2 Uživatelé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

2.4.3 Mapy, vrstvy a geodata . . . . . . . . . . . . . . . . . . . . . . 36

2.4.4 Majetek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

2.4.5 Senzory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

2.4.6 Projekty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

2.5 Rozhraní . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

2.5.1 Stavební prvky rozhraní aplikace . . . . . . . . . . . . . . . . 39

2.5.2 Základní rozložení grafických prvků . . . . . . . . . . . . . . . 40

3 Popis technologií 41

3.1 Apache2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

3.2 PHP 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

3.3 PostgreSQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

3.4 PostGIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

3.4.1 Ukázka kódu . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

3.5 Nette . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

3.5.1 Aplikační logika . . . . . . . . . . . . . . . . . . . . . . . . . . 42

3.5.2 Adresářová struktura . . . . . . . . . . . . . . . . . . . . . . . 43

3.6 Ext JS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

3.7 GeoExt 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

3.8 OpenLayers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

3.8.1 Ukázka kódu . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

4 Implementace 45

4.1 Databázová vrstva . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

4.1.1 Číselník: Typy zdrojů . . . . . . . . . . . . . . . . . . . . . . . 45

4.1.2 Číselník: Definice zdrojů . . . . . . . . . . . . . . . . . . . . . 45

4.1.3 Číselník: Definice typů geoobjektů . . . . . . . . . . . . . . . . 46

4.1.4 Číselník: Definice možných spojení . . . . . . . . . . . . . . . 46

4.2 Převod DGN výkresu do databáze . . . . . . . . . . . . . . . . . . . . 46

Page 9: Návrh informačního systému URC JOSEFgeo.fsv.cvut.cz/proj/bp/2013/pavel-klimunda-bp-2013.pdfGIS, AJAX, PHP, ExtJS, GeoExt, OpenLayers, Nette, PostGIS, PostgreSQL PROHLÁ ENÍ Prohla²uji,

4.2.1 Export dat pomocí OGR . . . . . . . . . . . . . . . . . . . . . 46

4.2.2 Import dat do databáze . . . . . . . . . . . . . . . . . . . . . 48

4.3 Implementace mapového rozhraní . . . . . . . . . . . . . . . . . . . . 49

4.3.1 Serverová část . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

4.3.2 Klientská aplikace . . . . . . . . . . . . . . . . . . . . . . . . . 50

Závěr 52

Použité zdroje 54

Seznam symbolů, veličin a zkratek 55

Seznam příloh 57

A Instalace aplikací 58

A.1 Úvod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

A.2 Apache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

A.2.1 Instalace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

A.3 PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

A.3.1 Instalace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

A.4 PostgreSQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

A.4.1 Instalace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

A.4.2 Konfigurace . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

A.4.3 PostGIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

B Tvorba SQL databáze 60

C Printscreen ukázkové aplikace 71

D Obsah přiloženého CD 72

Page 10: Návrh informačního systému URC JOSEFgeo.fsv.cvut.cz/proj/bp/2013/pavel-klimunda-bp-2013.pdfGIS, AJAX, PHP, ExtJS, GeoExt, OpenLayers, Nette, PostGIS, PostgreSQL PROHLÁ ENÍ Prohla²uji,

ČVUT v Praze ÚVOD

Úvod

Podzemní laboratoř Josef byla jako externí pracoviště Stavební fakulty ČVUT ote-

vřena v roce 2007. Pracoviště se nachází v blízkosti Slapské přehrady poblíž obce

Čelina na Příbramsku. Laboratoř slouží jednak studentům ČVUT, kteří zde mají

jedinečnou možnost vyzkoušet si v praxi práci v podzemí a zároveň slouží jako vý-

zkumné zařízení, které spolupracuje s podnikatelskou sférou.[1]

Momentálně probíhá v dole Josef obnovování geodetických základů, na kterém

se podílí řada studentů. Geodetické práce prováděné studenty na dole Josef jsou

především velmi přesná nivelace, zaměřování inženýrských sítí, zaměření polohopisu

a laserové skenování. Výsledky těchto měření by měly být zpřístupněny širokému

spektru uživatelů, kteří je budou dále využívat. Hlavně z tohoto důvodu je potřeba

vybudovat geografický informační systém, který pojme a bude schopen zobrazit vel-

kou škálu dat, jako jsou například majetek, geodetické objekty a informace o projek-

tech, a zároveň umožní jejich editaci, nahlížení a dodatečné zpracování. Po krátkém

zkoumání bylo zjištěno, že na trhu neexistuje dostatečné open source online řešení,

které by splňovalo požadavky na takovýto systém, a tak bylo přistoupeno k vytvoření

návrhu vlastní aplikace pro důl Josef.

Jako stavební kameny informačního systému byly vybrány open source skripto-

vací programovací jazyk PHP1, respektive PHP framework Nette2 a databázovou

vrstvu zajišťuje objektově-relační databázový systém PostgreSQL3. Frontend budou

obstarávat jazyky HTML5 4, CSS3 5 a ExtJS 6, zobrazení geodetických dat pak JS

framework OpenLayers7.

Cílem práce je především zjistit, jaká funkcionalita bude pro chod informačního

systému nezbytná a dále provést návrh datové základny a ukázku implementace1http://php.net2http://nette.org/3http://www.postgresql.org/4http://www.w3.org/html/wg/drafts/html/master/5http://www.w3schools.com/css3/default.asp6http://www.sencha.com/products/extjs/7http://openlayers.org/

9

Page 11: Návrh informačního systému URC JOSEFgeo.fsv.cvut.cz/proj/bp/2013/pavel-klimunda-bp-2013.pdfGIS, AJAX, PHP, ExtJS, GeoExt, OpenLayers, Nette, PostGIS, PostgreSQL PROHLÁ ENÍ Prohla²uji,

ČVUT v Praze ÚVOD

rozhraní geoportálu. Doufám, že tato práce bude přínosná a v budoucnu podle ní

bude vytvořena kvalitní aplikace, která bude dobře přijata uživateli.

10

Page 12: Návrh informačního systému URC JOSEFgeo.fsv.cvut.cz/proj/bp/2013/pavel-klimunda-bp-2013.pdfGIS, AJAX, PHP, ExtJS, GeoExt, OpenLayers, Nette, PostGIS, PostgreSQL PROHLÁ ENÍ Prohla²uji,

ČVUT v Praze 1. POŽADAVKY NA FUNKCIONALITU

1 Požadavky na funkcionalitu

Tato kapitola bude zaměřena na sepsání základních požadavků na funkcionalitu

z pohledu zadavatele. Informační systém by měl ve své pokročilé podobě umožňovat

a podporovat pracovní procesy nejrůznějšího zaměření, které vznikají a probíhají

v rámci celého životního cyklu předmětného objektu – v našem případě střediska

URC JOSEF. Dále budou probrány jednotlivé procesy, které budou v práci podrobně

rozebrány, a vize, které by systém měl v budoucnu obsahovat a které v této práci

nejsou dále rozvinuty.

1.1 Uživatelé

Systém bude obsahovat dynamickou správu oprávnění, která se bude skládat z rolí,

které budou přidávány uživateli. Každá role bude mít přiřazen libovolný počet opráv-

nění. Oprávnění se bude skládat ze zdroje (typ objektu) a privilegií (typ akce). Sys-

tém bude schopen vytvářet nové role a oprávnění a uživatel bude moci přidávat

zdroje i privilegia.

∙ Každý uživatel bude mít roli, každá role bude mít práva na určité úkony v sys-

tému.

∙ Uživatel bude moci mít více rolí.

∙ Uživatel s patřičnými právy bude moci vytvářet nové uživatele.

∙ Povinné parametry uživatele

– login/email

– jméno

– příjmení

– heslo

∙ Nepovinné parametry uživatele

– telefon

11

Page 13: Návrh informačního systému URC JOSEFgeo.fsv.cvut.cz/proj/bp/2013/pavel-klimunda-bp-2013.pdfGIS, AJAX, PHP, ExtJS, GeoExt, OpenLayers, Nette, PostGIS, PostgreSQL PROHLÁ ENÍ Prohla²uji,

ČVUT v Praze 1. POŽADAVKY NA FUNKCIONALITU

– adresa

– místnost

– pracovní pozice

1.2 Majetek

Systém musí obsahovat databázi inventárních čísel majetku, rozřazených do katego-

rií, včetně podkategorií. Majetek musí být polohově určen – buď místností, do které

patří nebo v případě dolu souřadnicemi. Bude obsažen systém výpůjček včetně mož-

ností zaslání upomínky a také možnost rušení a přidávání nového majetku. Dále bude

obsahovat rozhraní pro hlášení poruch a závad.

∙ Databáze inventárních čísel majetku včetně tvorby a mazání.

∙ Majetek řazen do kategorií a podkategorií.

∙ Možnost tisku formulářů pro potřeby inventarizace.

∙ Hlášení závad a poruch.

∙ Systém výpůjček včetně řešení upomínek.

∙ Povinné parametry inventáře majetku

– inventární číslo

– název

– kategorie

∙ Nepovinné parametry inventáře majetku

– popis

12

Page 14: Návrh informačního systému URC JOSEFgeo.fsv.cvut.cz/proj/bp/2013/pavel-klimunda-bp-2013.pdfGIS, AJAX, PHP, ExtJS, GeoExt, OpenLayers, Nette, PostGIS, PostgreSQL PROHLÁ ENÍ Prohla²uji,

ČVUT v Praze 1. POŽADAVKY NA FUNKCIONALITU

1.3 Senzory

Systém bude umět sledovat stav zařízení objektu, načítat data z čidel pomocí za-

bezpečeného API a bude napojen na místní IP kamery.

∙ Databáze infrastruktury.

∙ API pro aktualizaci dat z čidel.

1.4 Výzkumné projekty

Řešitelé výzkumných projektů budou moci vytvořit profil projektu – ať veřejně

přístupný či neveřejný pouze pro komunikaci v týmu. Projekty budou mít své pod-

stránky, na kterých se bude zobrazovat jejich stav, popisné informace a další dopro-

vodné informace jako jsou videa, fotografie a jiné dokumenty.

∙ Databáze projektů.

∙ Přiřazování řešitelů projektů.

∙ Možnost skrytí/zobrazení projektu ostatním uživatelům, včetně možnosti mít

skryté části projektu.

∙ Povinné parametry projektu

– název

– řešitelé

1.5 Bodová pole a geodata

Základní součástí bude správa bodového pole včetně jeho změn v čase, správa polo-

hopisu, výškopisu a mapy areálu a dolu.

∙ Systém bude obsahovat interaktivní mapu areálu včetně mapy dolu

13

Page 15: Návrh informačního systému URC JOSEFgeo.fsv.cvut.cz/proj/bp/2013/pavel-klimunda-bp-2013.pdfGIS, AJAX, PHP, ExtJS, GeoExt, OpenLayers, Nette, PostGIS, PostgreSQL PROHLÁ ENÍ Prohla²uji,

ČVUT v Praze 1. POŽADAVKY NA FUNKCIONALITU

∙ Měřené objekty:

– BOD_P: stanoviska

– HRANICE: plot

– POZ_DR: značky – les, neplodná půda

– STAV_OBJ: budovy, buňky

– KOMUN: asfaltová komunikace, cesty, chodníky

– ING_S: šachty, hydranty, vod. šoupata, el. transformátor, el. rozdělovací

skříň, světla, vodní potrubí, hasicí přístroje, vzduchotechnika

– TEZBA: ústí štoly

– VODSTVO: jezírko

– OSTATNI: malé vystavené exponáty

1.6 Historie změn

Systém bude udržovat kompletní historii objektů na úrovni databáze, a to takovým

způsobem, který umožní vrátit se u objektu do jakéhokoliv místa v čase, popřípadě

zobrazit kompletní historii změn jednoho objektu.

1.7 Aktualizace geodetický dat

Systém umožní uživateli poloautomatickým způsobem aktualizovat geodetická data

tak, aby nedošlo ke ztrátě dat a zároveň aby bylo možné uchovat kompletní historii.

1.8 Vize

V budoucnu by měl být systém snadno rozšiřitelný. Měl by být napsán pokud možno

co nejmodulárněji a jeho datová základna by měla být co nejobecněji definovaná.

Mezi další vlastnosti, které by měl systém v budoucnu obsahovat, patří například

správa a řízení rizik. Dále pak systém pro řízení projektů. V budoucnu by měl systém

14

Page 16: Návrh informačního systému URC JOSEFgeo.fsv.cvut.cz/proj/bp/2013/pavel-klimunda-bp-2013.pdfGIS, AJAX, PHP, ExtJS, GeoExt, OpenLayers, Nette, PostGIS, PostgreSQL PROHLÁ ENÍ Prohla²uji,

ČVUT v Praze 1. POŽADAVKY NA FUNKCIONALITU

umožnit aktualizaci dat co nejjednodušším způsobem - například nahráním výkresu

v DXF nebo DGN.

Velkým lákadlem poslední doby je zobrazení 3D dat v prohlížeči. Bohužel v této

době nejsou open source technologie natolik vyspělé, aby bylo možné vytvořit systém

zobrazující 3D souřadnice. V současnosti je možné 3D souřadnice uchovávat v data-

bázi a jakmile se na trhu objeví použitelná open source 3D technologie, bude stačit

pouze upravit aplikační vrstvu. Další velkou neznámou je práce s daty z laserového

skenování. V budoucnu by bylo dobré zaměřit se na jejich reprezentaci v databázi

a zkoumat možnosti jejich využití v automatických dotazech.

Systém by měl také umět exporty map do různých formátů jako je například

pdf nebo shp. Mělo by být možné vybrat konkrétní vrstvy mapy, nastavit barvy

jednotlivých vrstev a umět pracovat s legendou. Měly by být předpřipraveny profily

pro určité typy důlních map jako je základní důlní mapa a provozní mapa.

15

Page 17: Návrh informačního systému URC JOSEFgeo.fsv.cvut.cz/proj/bp/2013/pavel-klimunda-bp-2013.pdfGIS, AJAX, PHP, ExtJS, GeoExt, OpenLayers, Nette, PostGIS, PostgreSQL PROHLÁ ENÍ Prohla²uji,

ČVUT v Praze 2. NÁVRH

2 Návrh

Kvalitní návrh je dnes u softwarových projektů jednou z nejdůležitějších částí. Pro

návrh systému je využito několik typů diagramů, které nám pomohou namodelovat

systém tak, aby se doladily požadavky se zadavatelem a zároveň se mohla účinně

delegovat práce na jednotlivých částech systému mezi vývojáři. V našem případě šlo

především o to dobře si rozmyslet datovou základnu.

2.1 Případy užití

V této části rozeberu případy užití neboli use case, které definují interakci mezi rolí,

potažmo uživatelem, a systémem. Use case diagramy se skládají z obrázku inter-

akce role a systému a slovního popisu jednotlivých kroků. Z use case diagramu poté

vychází diagram procesů, který nám přiblíží danou problematiku spíše z pohledu

systému než uživatele. Následuje ukázka základních use case diagramů využitých při

návrhu projektu.

2.1.1 Uživatelé

Vytvoření uživatele

Oprávnění uživatelé budou moci vytvářet nové uživatele.

Obr. 2.1: Use case: Vytvoření uživatele (Uživatelé)

16

Page 18: Návrh informačního systému URC JOSEFgeo.fsv.cvut.cz/proj/bp/2013/pavel-klimunda-bp-2013.pdfGIS, AJAX, PHP, ExtJS, GeoExt, OpenLayers, Nette, PostGIS, PostgreSQL PROHLÁ ENÍ Prohla²uji,

ČVUT v Praze 2. NÁVRH

1.1 Přihlášení

Vstupní podmínka: Registrovaný uživatel

1. U Zadá přihlašovací údaje

2. IS Kontrola přihlašovacích údajů

3. IS Povolení vstupu do IS

1.2 Vytvoření uživatele

1. U Zadá parametry nového uživatele

2. IS Zkontroluje validitu údajů

3. IS Přidá uživatele do systému

Přidání role

Oprávněný uživatel bude moci vytvářet podle potřeby nové role, kterým budou

pomocí parametrů nastavena systémová oprávnění. Následně bude moci být uživateli

přiřazeno x rolí, jejichž oprávnění se budou sčítat.

Obr. 2.2: Use case: Přidání role (Uživatelé)

1.3 Vytvoření role

1. U Zadá parametry nové role

2. IS Zkontroluje validitu údajů

3. IS Přidá roli do systému

17

Page 19: Návrh informačního systému URC JOSEFgeo.fsv.cvut.cz/proj/bp/2013/pavel-klimunda-bp-2013.pdfGIS, AJAX, PHP, ExtJS, GeoExt, OpenLayers, Nette, PostGIS, PostgreSQL PROHLÁ ENÍ Prohla²uji,

ČVUT v Praze 2. NÁVRH

1.4 Přidání role

Vstupní podmínka: Vytvoření role

1. U Vybere uživatele

2. U Vybere roli

3. IS Přiřadí roli uživateli

4. U, IS Opakování 2. a 3. dokud nemá uživatel všechny potřebné role

2.1.2 Majetek

Vytvoření objektu

Oprávněný uživatel bude moci do systému vkládat a následně editovat nové objekty,

u kterých bude možno evidovat jejich výpůjčky.

Obr. 2.3: Use case: Vytvoření objektu (Majetek)

2.1 Vytvoření kategorie

1. U Zadá parametry nové kategorie majetku

2. IS Zkontroluje validitu údajů

3. IS Přidá kategorii do systému

2.2 Vytvoření objektu

Vstupní podmínka: Vytvoření kategorie

1. U Zadá parametry nového objektu

2. U Vybere kategorii

3. IS Vytvoří nový objekt

18

Page 20: Návrh informačního systému URC JOSEFgeo.fsv.cvut.cz/proj/bp/2013/pavel-klimunda-bp-2013.pdfGIS, AJAX, PHP, ExtJS, GeoExt, OpenLayers, Nette, PostGIS, PostgreSQL PROHLÁ ENÍ Prohla²uji,

ČVUT v Praze 2. NÁVRH

Registrace výpůjčky

Každý objekt pak bude mít kompletní historii výpůjček.

Obr. 2.4: Use case: Registrace výpůjčky (Majetek)

2.3 Vyhledání objektu

Vstupní podmínka: Vytvoření objektu

1. U Zadá parametry hledaného objektu

2. IS Vrátí hledaný objekt, pokud takový existuje

2.4 Registrace výpůjčky

Vstupní podmínka: Vyhledání objektu

1. U Zadá informace o výpůjčce

2. IS Zaeviduje výpůjčku

2.1.3 Senzory

Aktualizace dat

Oprávnění uživatelé budou moci přidat senzor, který bude mít možnost pomocí chrá-

něného API aktualizovat sbíraná data v systému (např. teploty, vlhkost). Samotnou

aktualizaci tedy bude provádět přímo senzor, který bude obsahovat řídicí jednotku

schopnou vytvořit GET požadavek na HTTP server – např. pomocí malého BASH

skriptu v CRONu.

19

Page 21: Návrh informačního systému URC JOSEFgeo.fsv.cvut.cz/proj/bp/2013/pavel-klimunda-bp-2013.pdfGIS, AJAX, PHP, ExtJS, GeoExt, OpenLayers, Nette, PostGIS, PostgreSQL PROHLÁ ENÍ Prohla²uji,

ČVUT v Praze 2. NÁVRH

Obr. 2.5: Use case: Aktualizace dat (Infrastruktura)

3.1 Vytvoření čidla

1. U Zadá parametry čidla

2. IS Vytvoří čidlo

3. IS Vygeneruje privátní klíč pro šifrování přenosu

3.2 Ověření1. U Zašle požadavek s šifrovanou zprávou

2. IS Ověří požadavek

3.3 Aktualizace dat

Vstupní podmínka: Vytvoření čidla

1. U Zašle požadavek na aktualizaci dat

2. IS Uloží data

20

Page 22: Návrh informačního systému URC JOSEFgeo.fsv.cvut.cz/proj/bp/2013/pavel-klimunda-bp-2013.pdfGIS, AJAX, PHP, ExtJS, GeoExt, OpenLayers, Nette, PostGIS, PostgreSQL PROHLÁ ENÍ Prohla²uji,

ČVUT v Praze 2. NÁVRH

2.1.4 Výzkumné projekty

Přidání uživatele

Uživatel bude moci vytvořit nový projekt a následně mu přidat další uživatele jako

správce.

Obr. 2.6: Use case: Přidání uživatele (Projekty)

4.1 Vytvoření projektu

1. U Zadá parametry nového projektu

2. IS Uloží projekt

4.2 Ověření1. U Zadá dotaz na práva k projektu

2. IS Rozhodne jestli je uživatel oprávněn

4.3 Přidání uživatele1. U Vybere uživatele

2. IS Přidá uživatele do projetku

21

Page 23: Návrh informačního systému URC JOSEFgeo.fsv.cvut.cz/proj/bp/2013/pavel-klimunda-bp-2013.pdfGIS, AJAX, PHP, ExtJS, GeoExt, OpenLayers, Nette, PostGIS, PostgreSQL PROHLÁ ENÍ Prohla²uji,

ČVUT v Praze 2. NÁVRH

2.1.5 Bodová pole a geodata

Vyhledání bodu

Uživatel vytvoří nový bod, který bude následně moci vyhledat.

Obr. 2.7: Use case: Vyhledání bodu (Bodová pole a geodata)

5.1 Vytvoření bodu

1. U Zadá parametry nového bodu

2. IS Uloží bod

4.2 Vyhledání bodu

Vstupní podmínka: Vytvoření bodu

1. U Zadá dotaz na vyhledání bodu

2. IS Vrátí nalezený bod

2.2 Procesy

Pomocí vývojových diagramů postupně navrhujeme jednotlivé části aplikační logiky

po jednotlivých krocích. Vývojový diagram obsahuje několik základních stavebních

kamenů, které budeme využívat. Jedná se především o:

∙ Vstupní a koncový bod.

∙ Šipky ukazující tok algoritmu.

∙ Dílčí kroky zobrazené pomocí oválů.

∙ Rozcestníky určující možnosti, kterými se algoritmus může vydat.

22

Page 24: Návrh informačního systému URC JOSEFgeo.fsv.cvut.cz/proj/bp/2013/pavel-klimunda-bp-2013.pdfGIS, AJAX, PHP, ExtJS, GeoExt, OpenLayers, Nette, PostGIS, PostgreSQL PROHLÁ ENÍ Prohla²uji,

ČVUT v Praze 2. NÁVRH

2.2.1 Uživatelé

Vytvoření uživatele a přidání role

Následující diagram procesu zobrazuje průběh procesu vytvoření uživatele a přidání

rolí.

Obr. 2.8: Proces: Vytvoření uživatele a přidání role (Uživatelé)

23

Page 25: Návrh informačního systému URC JOSEFgeo.fsv.cvut.cz/proj/bp/2013/pavel-klimunda-bp-2013.pdfGIS, AJAX, PHP, ExtJS, GeoExt, OpenLayers, Nette, PostGIS, PostgreSQL PROHLÁ ENÍ Prohla²uji,

ČVUT v Praze 2. NÁVRH

Vytvoření role a přidání oprávnění

V tomto diagramu je zobrazen proces vytvoření role a přidání jednotlivých opráv-

nění, kdy role může mít libovolný počet oprávnění.

Obr. 2.9: Proces: Vytvoření role a přidání oprávnění (Uživatelé)

24

Page 26: Návrh informačního systému URC JOSEFgeo.fsv.cvut.cz/proj/bp/2013/pavel-klimunda-bp-2013.pdfGIS, AJAX, PHP, ExtJS, GeoExt, OpenLayers, Nette, PostGIS, PostgreSQL PROHLÁ ENÍ Prohla²uji,

ČVUT v Praze 2. NÁVRH

Přiřazení zdrojů/privilegií oprávněním

Proces zobrazující přiřazení zdrojů a privilegií jednotlivým oprávněním.

Obr. 2.10: Proces: Přiřazení zdrojů/privilegií oprávněním (Uživatelé)

2.2.2 Majetek

Registrace výpůjčky

Diagram zobrazující proces registrace výpůjčky. Výpůjčka musí být navázána na

existující objekt a pokud objekt neexistuje, bude možné jej vytvořit. Výpůjčce může

být přiřazen uživatel systému. Pokud však dotyčná osoba v systému není, uloží se

jednorázově její jméno a kontakt.

25

Page 27: Návrh informačního systému URC JOSEFgeo.fsv.cvut.cz/proj/bp/2013/pavel-klimunda-bp-2013.pdfGIS, AJAX, PHP, ExtJS, GeoExt, OpenLayers, Nette, PostGIS, PostgreSQL PROHLÁ ENÍ Prohla²uji,

ČVUT v Praze 2. NÁVRH

Obr. 2.11: Proces: Registrace výpůjčky (Majetek)

2.2.3 Senzory

Aktualizace dat

Samotná aktualizace dat z čidel bude jednoduchá a bude se skládat pouze z ověření

klíče a samotné aktualizace pomocí daného API.

Obr. 2.12: Proces: Aktualizace dat (Senzory)

26

Page 28: Návrh informačního systému URC JOSEFgeo.fsv.cvut.cz/proj/bp/2013/pavel-klimunda-bp-2013.pdfGIS, AJAX, PHP, ExtJS, GeoExt, OpenLayers, Nette, PostGIS, PostgreSQL PROHLÁ ENÍ Prohla²uji,

ČVUT v Praze 2. NÁVRH

2.2.4 Výzkumné projekty

Vytvoření a editace projektu

Uživatel vyhledá projekt v databázi. Pokud projekt v databázi není, může vytvořit

projekt nový. Vytvořenému projektu následně přiřadí řešící uživatele.

Obr. 2.13: Proces: Vytvoření a editace projektu (Výzkumné projekty)

2.2.5 Bodová pole a geodata

Editace bodů

Uživatel bude editovat a vytvářet jednotlivé body bodového pole.

27

Page 29: Návrh informačního systému URC JOSEFgeo.fsv.cvut.cz/proj/bp/2013/pavel-klimunda-bp-2013.pdfGIS, AJAX, PHP, ExtJS, GeoExt, OpenLayers, Nette, PostGIS, PostgreSQL PROHLÁ ENÍ Prohla²uji,

ČVUT v Praze 2. NÁVRH

Obr. 2.14: Proces: Editace bodů (Bodová pole a geodata)

Zobrazení mapy

Uživatel bude moci zobrazit mapu dolu či mapu areálu a přepínat v ní vrstvy.

Obr. 2.15: Proces: Zobrazení mapy (Bodová pole a geodata)

Správa map a vrstev

Oprávněný živatel bude moct vytvořit jakoukoliv novou mapu a přidat do ní li-

bovolný počet vrstev. Každá vrstva může obsahovat libovolný počet geoobjektů

různých typů.

28

Page 30: Návrh informačního systému URC JOSEFgeo.fsv.cvut.cz/proj/bp/2013/pavel-klimunda-bp-2013.pdfGIS, AJAX, PHP, ExtJS, GeoExt, OpenLayers, Nette, PostGIS, PostgreSQL PROHLÁ ENÍ Prohla²uji,

ČVUT v Praze 2. NÁVRH

Obr. 2.16: Proces: Správa map a vrstev (Bodová pole a geodata)

Aktualizace geodetických dat

Oprávněný uživatel načte soubor s geometriemi aktualizovaných dat, vyhledá nebo

vytvoří vrstvu, do které geodata patří a zobrazí si mapu s novými a starými daty.

Pokud se bude jednat o nový objekt, vytvoří nový objekt. Pokud se bude jednat

o aktualizaci již existujícího objektu, tak tyto dva objekty vybere a provede jejich

aktualizaci.

29

Page 31: Návrh informačního systému URC JOSEFgeo.fsv.cvut.cz/proj/bp/2013/pavel-klimunda-bp-2013.pdfGIS, AJAX, PHP, ExtJS, GeoExt, OpenLayers, Nette, PostGIS, PostgreSQL PROHLÁ ENÍ Prohla²uji,

ČVUT v Praze 2. NÁVRH

Obr. 2.17: Proces: Aktualizace geodetických dat (Bodová pole a geodata)

2.3 Databáze

Databáze je navrhována po jednotlivých blocích pomocí UML diagramu.

2.3.1 Objekty, doplňkové atributy a spojení

Všechny objekty ukládané do databáze budou vycházet ze společného objektu ulo-

ženého v tabulce objects, který obsahuje tyto základní parametry:

∙ name – název objektu

∙ description – popis objektu

30

Page 32: Návrh informačního systému URC JOSEFgeo.fsv.cvut.cz/proj/bp/2013/pavel-klimunda-bp-2013.pdfGIS, AJAX, PHP, ExtJS, GeoExt, OpenLayers, Nette, PostGIS, PostgreSQL PROHLÁ ENÍ Prohla²uji,

ČVUT v Praze 2. NÁVRH

∙ resources_id – id typu objektu

Atributy objektu jsou uloženy v tabulce attributes a mohou obsahovat jeden

z předem definovaných datových typů: bool, int, double, varchar nebo text. Uživate-

lem definovaná spojení jsou pak v tabulce objects_joins, která obsahuje informace

o tom, které dva datové typy se mají spojit. Takto navržený databázový model v bu-

doucnu umožní přidat jakýkoliv datový typ s téměř jakýmikoliv parametry a bude

jej možno logicky spojit s jiným objektem. Pro každý zdroj je pak definován seznam

základních parametrů v tabulce default_attributes.

Obr. 2.18: Databáze: Objekty

31

Page 33: Návrh informačního systému URC JOSEFgeo.fsv.cvut.cz/proj/bp/2013/pavel-klimunda-bp-2013.pdfGIS, AJAX, PHP, ExtJS, GeoExt, OpenLayers, Nette, PostGIS, PostgreSQL PROHLÁ ENÍ Prohla²uji,

ČVUT v Praze 2. NÁVRH

2.3.2 Správa uživatelů, rolí a oprávnění

Uživatelé jsou vedeni v tabulce users a mají základní parametry potřebné k jejich

identifikaci. Především:

∙ login – přihlašovací jméno/email

∙ firstname – jméno

∙ lastname – příjmení

∙ psswd – heslo

∙ phone – telefon

∙ position – pracovní pozice

Každý uživatel může mít přiřazeno několik rolí. Každá role obsahuje libovolný

počet oprávnění (tabulka permissions). Role může být navázána buď na konkrétní

objekt, pomocí cizího klíče objects_id, nebo při jeho nevyplnění být obecná na

všechny typy daného typu objektu. Stejně tak může být role navázána pouze na

jednoho uživatele pomocí atributu users_id ve spojové tabulce roles_permissions.

Základ oprávnění tvoří dvě tabulky:

∙ resources – tabulka zdrojů, tedy obecně názvů skupin objektů (např. geodata,

název presenteru)

∙ privileges – tabulka povolených akcí (vytvořit, smazat, editovat)

Pro možnost rozeznání, zdali se jedná o objekt databáze nebo objekt na úrovni

php, je nutná tabulka resources_types, která říká obecný typ daného zdroje.

32

Page 34: Návrh informačního systému URC JOSEFgeo.fsv.cvut.cz/proj/bp/2013/pavel-klimunda-bp-2013.pdfGIS, AJAX, PHP, ExtJS, GeoExt, OpenLayers, Nette, PostGIS, PostgreSQL PROHLÁ ENÍ Prohla²uji,

ČVUT v Praze 2. NÁVRH

Obr. 2.19: Databáze: Správa uživatelů a rolí

2.3.3 Geodata

Geodetická data jsou ukládána ve třech datových typech:

∙ points – body

∙ linestrings – linie

∙ polygons – polygony

Databáze je navržena tak, aby jednotlivé geodetické prvky měly společný identifiká-

tor, což nám zajišťují společné tabulky objects, kde jsou uloženy základní informace

o prvcích a resources s jejich typem. Samotné geometrie budou uloženy ve třech ve-

dlejších tabulkách. Každý geometrický prvek pak může být přiřazen do libovolného

33

Page 35: Návrh informačního systému URC JOSEFgeo.fsv.cvut.cz/proj/bp/2013/pavel-klimunda-bp-2013.pdfGIS, AJAX, PHP, ExtJS, GeoExt, OpenLayers, Nette, PostGIS, PostgreSQL PROHLÁ ENÍ Prohla²uji,

ČVUT v Praze 2. NÁVRH

počtu vrstev, které by měly znázorňovat typ objektu a jeho vztah k ostatním prv-

kům. Jednotlivé vrstvy jsou pak spojeny s tabulkou map. I zde platí, že jednotlivé

mapy můžou obsahovat více vrstev a vrstva může být obsažena v několika mapách

zároveň.

Obr. 2.20: Databáze: Geodata

2.3.4 Historie

Historie databáze bude řešena pomocí tabulek, které budou stejné jako tabulky

s normálními platnými daty, avšak budou u nich vypnuté cizí i primární klíče a bu-

dou mít suffix „_history“ . Do takto upravených tabulek se budou pomocí triggerů

při každé update/delete akci nad hlavními tabulkami ukládat změny oproti původ-

ním datům. Celý proces funguje tak, že trigger přesune upravovaná data z původní

tabulky do tabulky historie a nahradí původní data v hlavní tabulce novými. Tímto

způsobem máme kompletní přehled o všech změnách ve všech tabulkách kompletně

v režii databáze a nemusí se to tedy řešit na úrovni aplikace. Při zrušení objektu

dojde k přesunu původních dat do history tabulky a následnému vymazání dat

z hlavní tabulky. Kvůli této akci není možné mít na tabulce „_history“ žádný cizí

klíč, protože by v tomto případě neměl kam ukazovat.

34

Page 36: Návrh informačního systému URC JOSEFgeo.fsv.cvut.cz/proj/bp/2013/pavel-klimunda-bp-2013.pdfGIS, AJAX, PHP, ExtJS, GeoExt, OpenLayers, Nette, PostGIS, PostgreSQL PROHLÁ ENÍ Prohla²uji,

ČVUT v Praze 2. NÁVRH

2.4 Třídy

2.4.1 Objekty

Abstraktní třída Object obsahuje parametry a metody společné pro všechny objekty.

Nemá však vlastní instanci.

Obr. 2.21: Třídy: Object

2.4.2 Uživatelé

Třída User uchovává jednotlivé informace a metody potřebné pro správu uživatelů.

Každý uživatel je definován pomocí svého id a unikátního přihlašovacího jména

(login). Uživatelé jsou pak rozřazeni do různých rolí (třída Role), které obsahují

oprávnění (třída Permission).

35

Page 37: Návrh informačního systému URC JOSEFgeo.fsv.cvut.cz/proj/bp/2013/pavel-klimunda-bp-2013.pdfGIS, AJAX, PHP, ExtJS, GeoExt, OpenLayers, Nette, PostGIS, PostgreSQL PROHLÁ ENÍ Prohla²uji,

ČVUT v Praze 2. NÁVRH

Obr. 2.22: Třídy: Uživatelé

2.4.3 Mapy, vrstvy a geodata

Geodetická data jsou reprezentována třídou Geodata, která dědí od třídy Object

a její rozšiřující parametry jsou typ geometrie a samotná geometrie. Geodata jsou

sjednocena do vrstev. V každé vrstvě může být libovolný počet geodetických objektů

a zároveň může mít každý geodetický objekt několik vrstev. Stejné pravidlo platí pro

mapu, která je dána třídou Map a která sdružuje jednotlivé vrstvy.

36

Page 38: Návrh informačního systému URC JOSEFgeo.fsv.cvut.cz/proj/bp/2013/pavel-klimunda-bp-2013.pdfGIS, AJAX, PHP, ExtJS, GeoExt, OpenLayers, Nette, PostGIS, PostgreSQL PROHLÁ ENÍ Prohla²uji,

ČVUT v Praze 2. NÁVRH

Obr. 2.23: Třídy: Mapy, vrstvy, geodata

2.4.4 Majetek

Inventář majetku je řešen pomocí třídy Inventory, která rozšiřuje obecnou třídu

Objects a obsahuje odkaz na místnost (třída Room) či jakýkoliv geodetický objekt

(třída Geodata), a je zařazen právě do jedné kategorie (třída InventoryCategory).

Výpůjčky eviduje třída Borrowing, kde je možné přiřadit výpůjčce uživatele systému

nebo vyplnit jméno, telefon a adresu uživatele, který v systému není a není ani

potřeba, aby do něj měl přístup. Výpůjčky se nemažou - pouze se při vrácení nastaví

parametr returned na čas navrácení.

37

Page 39: Návrh informačního systému URC JOSEFgeo.fsv.cvut.cz/proj/bp/2013/pavel-klimunda-bp-2013.pdfGIS, AJAX, PHP, ExtJS, GeoExt, OpenLayers, Nette, PostGIS, PostgreSQL PROHLÁ ENÍ Prohla²uji,

ČVUT v Praze 2. NÁVRH

Obr. 2.24: Třídy: Majetek

2.4.5 Senzory

Každý senzor využívající API bude reprezentován třídou Infrastructure a bude na

sebe mít navázána libovolná měření (třída Measurement). Každé měření bude mít

jako atribut svou hodnotu a jednotky, ve kterých je prováděno.

Obr. 2.25: Třídy: Senzory

2.4.6 Projekty

Projekt je definován třídou Project a je vlastněn jedním nebo více uživateli. Může

mít krátký popis nebo libovolný počet podstránek uchovávaných ve třídě Page.

38

Page 40: Návrh informačního systému URC JOSEFgeo.fsv.cvut.cz/proj/bp/2013/pavel-klimunda-bp-2013.pdfGIS, AJAX, PHP, ExtJS, GeoExt, OpenLayers, Nette, PostGIS, PostgreSQL PROHLÁ ENÍ Prohla²uji,

ČVUT v Praze 2. NÁVRH

K projektu mohou být připojena jakákoliv binární data a může k němu být přiřazeno

libovolné množství čidel ze třídy Infrastructure.

Obr. 2.26: Třídy: Projekty

2.5 Rozhraní

Rozhraní IS je řešeno pomocí javascript frameworku ExtJS, který obsahuje pokročilé

nástroje pro tvorbu grafických prvků aplikace. Základ naší aplikace tvoří Viewport,

který již obsahuje jednotlivé kontejnery, které se dále budou plnit jednotlivými po-

hledy.

2.5.1 Stavební prvky rozhraní aplikace

Kontejner

Kontejner je základní stavební kámen rozhraní aplikace. Jedná se o prvek, do kterého

přidáváme všechny pohledy obsahující data aplikace jako například formuláře, ta-

bulky a grafy. Výhoda použití kontejnerů tkví v tom, že máme pevně dáno základní

rozhraní aplikace, které je neměnné a do kterého podle potřeby vkládáme pohledy

a odebíráme je z něj.

39

Page 41: Návrh informačního systému URC JOSEFgeo.fsv.cvut.cz/proj/bp/2013/pavel-klimunda-bp-2013.pdfGIS, AJAX, PHP, ExtJS, GeoExt, OpenLayers, Nette, PostGIS, PostgreSQL PROHLÁ ENÍ Prohla²uji,

ČVUT v Praze 2. NÁVRH

Viewport

Viewport je základní kontejner, jehož hlavní předností je automatická změna veli-

kosti aplikace podle okna, ve kterém je aplikace spuštěna. Běžný uživatel tak nepozná

rozdíl mezi desktopovou a webovou aplikací.

Layout

Layout, neboli rozložení, nám udává, kde který prvek bude obsažen. V ExtJS se

nastavují layouty a pozice v nich každému prvku.

Panel

Panel je nejpoužívanější komponenta, která již obsahuje přímo námi požadované

prvky jako jsou například grid (tabulka), chart (graf), form (formulář) nebo třeba

jen html obsah. Panel se využívá pro tvorbu základních pohledů, které se poté

pomocí controlleru jednoduše přepínají a tím zobrazují uživateli obsah.

2.5.2 Základní rozložení grafických prvků

Byl zvolen dvousloupcový design s horním panelem, který slouží především jako

hlavní menu – topContainer. Levý sloupec neboli leftContainer bude obsahovat jed-

notlivá podmenu. Hlavní obsah bude obsažen v okně mainContainer.

Viewport

topContainer

leftContainer mainContainer

Obr. 2.27: Wireframe

40

Page 42: Návrh informačního systému URC JOSEFgeo.fsv.cvut.cz/proj/bp/2013/pavel-klimunda-bp-2013.pdfGIS, AJAX, PHP, ExtJS, GeoExt, OpenLayers, Nette, PostGIS, PostgreSQL PROHLÁ ENÍ Prohla²uji,

ČVUT v Praze 3. POPIS TECHNOLOGIÍ

3 Popis technologií

Tato kapitola je věnována stručnému popisu technologií, které jsou potřeba ke zdár-

nému dokončení projektu. Mnohé z nich jsou v této práci použity jen okrajově,

ovšem pro finální aplikaci jsou nepostradatelné.

3.1 Apache2

Apache2 je open-source HTTP server pro operační systémy UNIXového typu. Jedná

se o bezpečný, výkonný a rozšiřitelný server pro HTTP služby. Jeho vývoj započal

v roce 1993 v americkém NCSA (National Center for Supercomputing Applications)

pod názvem NCSA HTTPd. Poté, co v roce 1994 z projektu odešel hlavní vývojář,

se vývoj výrazně zpomalil a vedlo to až k vytvoření skupiny Apache Group a k po-

kračování vývoje pod jménem Apache. Apache je vydáván pod svou vlastní licencí,

kterou spravuje ASF (Apache Software Foundation).[2]

3.2 PHP 5

PHP je skriptovací jazyk syntakticky vycházející z jazyků C, Java a Perl doplněný

o vlastní funkce. Jeho hlavním účelem je dovolit vývojářům rychle vytvářet dyna-

mické webové stránky. PHP 5 je plně objektový jazyk, který obsahuje mnoho rozší-

ření. PHP vzniklo v roce 1995 a dnes je spravováno skupinou The PHP Group.[3]

3.3 PostgreSQL

PostgreSQL je svobodná objektově-relační databáze vyvíjená již déle než 15 let.

PostgreSQL je možné provozovat na všech hlavních operačních systémech. Postgre-

SQL si zakládá na dodržování standardů – jeho SQL implementace vychází přede-

vším ze standardu ANSI-SQL:2008. Pro správu databází založených na PostgreSQL

se nejčastěji využívá nástroj pgAdmin3.[4]

41

Page 43: Návrh informačního systému URC JOSEFgeo.fsv.cvut.cz/proj/bp/2013/pavel-klimunda-bp-2013.pdfGIS, AJAX, PHP, ExtJS, GeoExt, OpenLayers, Nette, PostGIS, PostgreSQL PROHLÁ ENÍ Prohla²uji,

ČVUT v Praze 3. POPIS TECHNOLOGIÍ

3.4 PostGIS

PostGIS je knihovna přidávající podporu geografických objektů do PostgreSQL da-

tabáze. Řídí se OpenGis specifikací "Simple Features Specification for SQL", kon-

krétně je kompatibilní s profilem "Types and Functions". Obsahuje jak definici zá-

kladních geografických prvků, jakými jsou například linie – line, lomená čára – line-

string, polygon, tak funkce pro práci s nimi. PostGIS je svobodný software vydáván

pod GNU General Public License.[5]

3.4.1 Ukázka kódu

CREATE TABLE points (geom GEOMETRY(PointZ, <epsg>));

INSERT INTO points (geom) VALUES ST_GeomFromText(Point(x, y, z));

SELECT ST_AsText(geom) from points;

3.5 Nette

Nette je moderní český open source PHP framework. Je založen na modelu MVP

(Model – View – Presenter), je plně objektový a obsahuje pokročilý šablonovací

systém Latte a databázovou vrstvu. Jednou z jeho předností a zároveň i nevýhodou

je opravdu rychlý vývoj a velmi brzká implementace novinek z posledních verzí

jazyka PHP.[6]

3.5.1 Aplikační logika

Aplikace v nette je rozdělena do třech základních stavebních kamenů. Prvním z nich

je model, který představuje datovou vrstvu. O aplikační logiku se stará presenter,

který načítá data z modelu, zpracovává je a výsledky posílá do pohledu – view.

42

Page 44: Návrh informačního systému URC JOSEFgeo.fsv.cvut.cz/proj/bp/2013/pavel-klimunda-bp-2013.pdfGIS, AJAX, PHP, ExtJS, GeoExt, OpenLayers, Nette, PostGIS, PostgreSQL PROHLÁ ENÍ Prohla²uji,

ČVUT v Praze 3. POPIS TECHNOLOGIÍ

3.5.2 Adresářová struktura

∙ app (components, config, model, presenters, templates)

∙ libs (Nette)

∙ log

∙ temp (cache, sessions)

∙ tests

∙ www (css, images, js)

3.6 Ext JS

Sencha Ext JS je Javascriptový framework určený pro tvorbu bohatých webových

aplikací. Je postaven na MVC (Model – View – Controller) architektuře. Je vydáván

pod dvojitou licencí – pod GPL licencí pro použití v opensource, a pod placenou

licencí pro použití ve firmách. I přesto, že se jedná o Javascriptový framework, jeho

stavba je velmi podobná dříve zmíněnému Nette s jediným rozdílem, že Nette pre-

senter je zde nahrazen Controllerem. Ext JS je postaveno na myšlence komponent,

které se postupně zanořují do sebe. Uživatel je tak zcela odstíněn od nízkolevelo-

vého programování webových aplikací v HTML a CSS a jeho práce se tak daleko

více podobá konfiguraci jednotlivých komponent, které plní daty nejčastěji pomocí

datové struktury JSON (JavaScript Object Notation).[7]

3.7 GeoExt 2

GeoExt je Javascriptová knihovna, umožňující skloubit OpenLayers a Ext JS. Pů-

vodní GeoExt 1 byl postavený na knihovně Ext JS 3, která je však natolik odlišná

od nově vydané Ext JS 4, nad kterou je postaven tento projekt, že bylo nutné Ge-

oExt přepsat. Výsledkem je GeoExt 2, nyní ve verzi beta, který plně nahrazuje

funkcionalitu původního GeoExt.[8]

43

Page 45: Návrh informačního systému URC JOSEFgeo.fsv.cvut.cz/proj/bp/2013/pavel-klimunda-bp-2013.pdfGIS, AJAX, PHP, ExtJS, GeoExt, OpenLayers, Nette, PostGIS, PostgreSQL PROHLÁ ENÍ Prohla²uji,

ČVUT v Praze 3. POPIS TECHNOLOGIÍ

3.8 OpenLayers

OpenLayers jsou open source javascriptovou knihovnou pro zobrazování geodetic-

kých dat. Podporuje různé technologie od WMS přes WFS servery po načítání

vlastních vrstev pomocí GEOJSONu.[9]

3.8.1 Ukázka kódu

new OpenLayers.Layer.WMS(

"CUZK",

"http://geoportal.cuzk.cz/WMS_ORTOFOTO_PUB/WMService.aspx",

{layers: ’GR_ORTFOTORGB’},

{singleTile: true}

);

44

Page 46: Návrh informačního systému URC JOSEFgeo.fsv.cvut.cz/proj/bp/2013/pavel-klimunda-bp-2013.pdfGIS, AJAX, PHP, ExtJS, GeoExt, OpenLayers, Nette, PostGIS, PostgreSQL PROHLÁ ENÍ Prohla²uji,

ČVUT v Praze 4. IMPLEMENTACE

4 Implementace

V rámci této práce byla vytvořena databáze podle předešlého návrhu, byla naplněna

testovacími daty definujícími mapu, vrstvu a geodetický objekt znázorňující počvu

dolu. S pomocí Ext JS, GeoExt a OpenLayers byla vytvořena ukázková mapová apli-

kace, která načítá data s pomocí Nette aplikace. Aplikace má navrhované rozložení

prvků, kromě mapového okna však nemá zprovozněny žádné ovládací prvky.

4.1 Databázová vrstva

SQL dávka vytvářející databázi je přiložena elektronicky a také ji lze nalézt v příloze

A. Pro účely testování správnosti návrhu byly naplněny číselníky definující objekty

a spojení objektů v databázi.

4.1.1 Číselník: Typy zdrojů

Tabulka resources_types

id type

1 object

2 acl

4.1.2 Číselník: Definice zdrojů

Tabulka resources

id resource description resources_types_id

1 presenters Název presenteru... 2

2 geodata Obecná geodetická... 1

3 layers Vrstvy 1

4 maps Mapy 1

45

Page 47: Návrh informačního systému URC JOSEFgeo.fsv.cvut.cz/proj/bp/2013/pavel-klimunda-bp-2013.pdfGIS, AJAX, PHP, ExtJS, GeoExt, OpenLayers, Nette, PostGIS, PostgreSQL PROHLÁ ENÍ Prohla²uji,

ČVUT v Praze 4. IMPLEMENTACE

4.1.3 Číselník: Definice typů geoobjektů

Tabulka geotypes

id geotype

1 Point

2 Linestring

3 Polygon

4.1.4 Číselník: Definice možných spojení

Tabulka joins_types

id type a_resources_id b_resources_id

1 layers_geodata 3 2

2 maps_layers 4 2

4.2 Převod DGN výkresu do databáze

Zdrojová důlní mapa byla vytvořena v programu Bentley Microstation, ze kterého

však neexistuje jednoduchý způsob převodu. Pro převod byla zvolena knihovna

OGR, která je součástí GDAL (Geospatial Data Abstraction Library) knihovny

a představuje relativně snadný způsob průchodu různých typů vektorových dat –

v našem případě výkresu ve formátu DGN.[10]

4.2.1 Export dat pomocí OGR

Pro účely ukázky práce s vrstvou byla vybrána vrstva počvy dolu. Jedná se o vrstvu

složenou ze sousedících polygonů, zobrazujících spodní hranu chodby dolu. V pro-

gramu Microstation bylo zjištěno číslo této vrstvy a poté byl na mapu uloženou

v DGN spuštěn následující příkaz, který načte všechny prvky – elements a uloží je

do formátu SHP.

ogr2ogr dulni_mapa.shp -sql "SELECT * FROM elements \

WHERE level=16" dulni_mapa_v7.dgn

46

Page 48: Návrh informačního systému URC JOSEFgeo.fsv.cvut.cz/proj/bp/2013/pavel-klimunda-bp-2013.pdfGIS, AJAX, PHP, ExtJS, GeoExt, OpenLayers, Nette, PostGIS, PostgreSQL PROHLÁ ENÍ Prohla²uji,

ČVUT v Praze 4. IMPLEMENTACE

Dalším krokem je export obsahu SHP souboru do SQL dávky. Parametr „-t 3DZ“

definuje použití 3D souřadnic, parametr „-s 10267“ číslo EPSG, parametr „-w“ defi-

nuje výstup ve formátu WKT a parametr „-S“ definuje použití pouze jednoduchých

geometrií namísto multi geometrií.

shp2pgsql -t 3DZ -S -w -s 102067 dulni_mapa.shp \

> dulni_mapa_pocva_wkt.sql

Následující příklad nebyl použit, pouze demonstruje uložení SQL dávky s geo-

metriemi ve formátu WKB.

shp2pgsql -t 3DZ -S -s 102067 dulni_mapa.shp \

> dulni_mapa_pocva_wkb.sql

Syntaxe výsledného souboru

Výsledná SQL dávka obsahuje na jednotlivých řádcích INSERT příkazy obsahující

jednotlivé geodetické prvky dané vrstvy.

INSERT INTO "dulni_mapa"

("type","level","graphicgro","colorindex","weight", \

"style","entitynum","mslink","text",geom) VALUES \

(’6’,’16’,’0’,’0’,’0’,’0’,NULL,NULL,NULL, \

’SRID=102067;POLYGON((-753524.443 -1081449.153 286.238, \

-753521.678 -1081448.507 286.191, \

-753523.13 -1081461.562 286.244, \

-753524.104 -1081471.028 286.281, \

-753524.509 -1081483.784 286.48, \

-753526.771 -1081483.837 286.484, \

-753526.044 -1081470.877 286.313, \

-753525.19 -1081461.332 286.277, \

-753524.443 -1081449.153 286.238)) \

’);

47

Page 49: Návrh informačního systému URC JOSEFgeo.fsv.cvut.cz/proj/bp/2013/pavel-klimunda-bp-2013.pdfGIS, AJAX, PHP, ExtJS, GeoExt, OpenLayers, Nette, PostGIS, PostgreSQL PROHLÁ ENÍ Prohla²uji,

ČVUT v Praze 4. IMPLEMENTACE

4.2.2 Import dat do databáze

Pomocí textového editoru byla výsledná dávka upravena pro import do naší data-

báze. Byly vytvořeny záznamy pro novou vrstvu Počva a geoobjetky jednotlivých

polygonů, které jsou s ní svázané.

Vytvoření vrstvy Počva

INSERT INTO josef.objects \

(id, name, description, resources_id, created_users_id)

VALUES \

(’6’, ’Počva’, ’Počva dolu’, ’3’, ’1’);

Spojení Počvy s Mapou

INSERT INTO josef.objects_join \

(a_objects_id, b_objects_id, joins_types_id) \

VALUES (1, 6, 2);

Objekty vrstvy Počva

INSERT INTO josef.objects \

(id, name, description, resources_id, created_users_id)

VALUES (’7’, ’Počva-1’, ’Část počvy’, ’2’, ’1’);

Nastavení geotypu objektu

INSERT INTO josef.geotypes_objects (objects_id, geotypes_id) \

VALUES (’7’,’3’);

Přidání geometrie

INSERT INTO josef.polygons (objects_id, geom) \

VALUES (7, \

ST_GeomFromText(’ \

POLYGON((-753524.443 -1081449.153 286.238, \

48

Page 50: Návrh informačního systému URC JOSEFgeo.fsv.cvut.cz/proj/bp/2013/pavel-klimunda-bp-2013.pdfGIS, AJAX, PHP, ExtJS, GeoExt, OpenLayers, Nette, PostGIS, PostgreSQL PROHLÁ ENÍ Prohla²uji,

ČVUT v Praze 4. IMPLEMENTACE

-753521.678 -1081448.507 286.191, \

-753523.13 -1081461.562 286.244, \

-753524.104 -1081471.028 286.281, \

-753524.509 -1081483.784 286.48, \

-753526.771 -1081483.837 286.484, \

-753526.044 -1081470.877 286.313, \

-753525.19 -1081461.332 286.277, \

-753524.443 -1081449.153 286.238) \

)’, \

5514));

Spojení objektu Počvy s vrstvou

INSERT INTO josef.objects_join \

(a_objects_id, b_objects_id, joins_types_id) VALUES (6, 7, 1);

4.3 Implementace mapového rozhraní

Jako základ byl použit PHP framework Nette, který po svém spuštění načte ja-

vascriptové knihovny a předá jim patřičná data. Ukázková aplikace je zamýšlena

především jako tzv. "proof of concent"– tedy jako ukázka realizovatelnosti konceptu

a nejedná se tedy o plně funkční informační systém.

4.3.1 Serverová část

Na serverové straně se o předávání dat do Ext JS aplikace starají presentery Map

a Layer. Map presenter vrací seznam map uložených v databázi, Layer presenter pak

pomocí akce get-layer vrací GEOJSON obsahující všechny geometrie dané vrstvy.

49

Page 51: Návrh informačního systému URC JOSEFgeo.fsv.cvut.cz/proj/bp/2013/pavel-klimunda-bp-2013.pdfGIS, AJAX, PHP, ExtJS, GeoExt, OpenLayers, Nette, PostGIS, PostgreSQL PROHLÁ ENÍ Prohla²uji,

ČVUT v Praze 4. IMPLEMENTACE

Ukázka navráceného GEOJSON pro vrstvu

{

"type":"FeatureCollection",

"features":[

{

"geometry":{

"type":"GeometryCollection",

"geometries":[

{"type":"Polygon",

"coordinates":[[

[-753415.737,-1081709.37],

[-753411.117,-1081705.135],

[-753402.665,-1081719.355],

[-753399.912,-1081711.851],

[-753391.498,-1081721.029],

[-753398.904,-1081727.757],

[-753415.737,-1081709.37]]]

}

]

},

"type":"Feature",

"properties":{}

}

]

}

4.3.2 Klientská aplikace

Klientská aplikace je napsaná v Ext JS 4 a využívá MVC architekturu. Základní

rozložení aplikace je dvousloupcový layout s horním menu a je popsáno v kapitole

50

Page 52: Návrh informačního systému URC JOSEFgeo.fsv.cvut.cz/proj/bp/2013/pavel-klimunda-bp-2013.pdfGIS, AJAX, PHP, ExtJS, GeoExt, OpenLayers, Nette, PostGIS, PostgreSQL PROHLÁ ENÍ Prohla²uji,

ČVUT v Praze 4. IMPLEMENTACE

2.5.2. Layout je nadefinován pomocí pohledu Viewport.js, který zároveň načítá po-

hled hlavního menu – topContainer.js a v něm topMenu.js. Levé menu je řešeno

pomocí pohledu menuList a je obsaženo v pohledu leftContainer.js. Mapový panel

obstarává pohled mapPanel.js, který je umístěn do mainContaineru.

Mapové okno, řešené pomocí mapPanelu, dědí třídu GeoExt.panel.Map, která

nám umožnuje používat v okně mapu OpenLayers. Pomocí kontroleru MapPanel.js

je pak do mapového okna nahrána podkladová ortofotomapa ze serverů ČÚZK a dále

dvě testovací vrstvy „Počva“ a „Kůlna“ .

Ukázka načtení vrstvy do mapy

var vecLayer = new OpenLayers.Layer.Vector("Kůlna", {

projection: new OpenLayers.Projection("EPSG:102067"),

isBaseLayer: false,

styleMap: sm,

protocol: new OpenLayers.Protocol.HTTP({

url: "layer/get-layer/2",

format: new OpenLayers.Format.GeoJSON()

}),

strategies: [new OpenLayers.Strategy.Fixed()]

});

mapPanel.map.addLayers(vecLayer);

51

Page 53: Návrh informačního systému URC JOSEFgeo.fsv.cvut.cz/proj/bp/2013/pavel-klimunda-bp-2013.pdfGIS, AJAX, PHP, ExtJS, GeoExt, OpenLayers, Nette, PostGIS, PostgreSQL PROHLÁ ENÍ Prohla²uji,

ČVUT v Praze ZÁVĚR

Závěr

V rámci této práce se podařilo nadefinovat základní požadavky na funkci infor-

mačního geoportálu pro URC JOSEF. Vybrané požadavky byly hlouběji rozebrány

pomocí diagramů, které nám pomohly namodelovat procesy probíhající v systému

a ujasnit si datovou strukturu aplikace, která byla naimplementována na úrovni

databáze. Dále byla do databáze nahrána testovací data, která byla převedena z vý-

kresu ve formátu DGN. Následně byla vytvořena testovací mapová aplikace, která

tato data zobrazuje. Ukázková aplikace je dostupná na adrese http://inggeo.fsv.

cvut.cz:6080/dev/pavelk/josef/www/.

Jednu z největších výzev při návrhu aplikace představovalo vytvoření databáze

tak, aby nám dovolila přidávat různé typy objektů s téměř jakýmikoliv parametry

a řešit oprávnění přístupu k nim, aniž bychom museli měnit datovou základnu.

Nakonec byl tento problém úspěšně vyřešen pomocí obecného objektu, na který se

může navázat libovolný počet atributů s jedním z přednastavených datových typů.

Mezi objekty se mohou definovat spojení a mohou se tak libovolně zanořovat. Další

výzvou bude implementace tohoto objektu na aplikační úrovni.

Dalším závažným problémem bylo bezproblémové načítání geodetických dat. Zá-

kladem zdárného řešení je domluva s osobou tvořící mapový podklad, aby pro určitá

data použila správná geometrická primitiva (bod, lomenou čáru, polygon) a také aby

jednotlivé objekty měla ve správných a předem definovaných vrstvách. Takto nakres-

lený výkres je pak možné pomocí knihovny OGR, která je součástí knihovny GDAL

načíst do PostGIS databáze. V budoucnu by aktualizace dat měla být největší pri-

oritou při implementaci systému.

Na aplikační úrovni představovaly největší problém verze jednotlivých použitých

frameworků. Zvláště pak nová verze Ext JS, která je nyní ve verzi 4 a která podstat-

ným způsobem změnila svoji architekturu a tím způsobila řadu problémů s integrací

GeoExt, potažmo OpenLayers. Tento problém byl naštěstí vyřešen použitím beta

verze knihovny GeoExt, která však stále není vydána ve stabilní verzi.

52

Page 54: Návrh informačního systému URC JOSEFgeo.fsv.cvut.cz/proj/bp/2013/pavel-klimunda-bp-2013.pdfGIS, AJAX, PHP, ExtJS, GeoExt, OpenLayers, Nette, PostGIS, PostgreSQL PROHLÁ ENÍ Prohla²uji,

ČVUT v Praze ZÁVĚR

V této práci bych chtěl pokračovat implementací v rámci diplomové práce, kde

největší výzvy vidím právě ve zdárné implementaci klientské strany, kde se projeví

úskalí spojené s rozšiřitelným datovým modelem.

53

Page 55: Návrh informačního systému URC JOSEFgeo.fsv.cvut.cz/proj/bp/2013/pavel-klimunda-bp-2013.pdfGIS, AJAX, PHP, ExtJS, GeoExt, OpenLayers, Nette, PostGIS, PostgreSQL PROHLÁ ENÍ Prohla²uji,

ČVUT v Praze POUŽITÉ ZDROJE

Použité zdroje

[1] Podzemní laboratoř Josef [online]. Poslední aktualizace 30. 4. 2013. Dostupné

z URL: <http://www.uef-josef.eu/>.

[2] Apache2 [online]. Poslední aktualizace 15. 5. 2013. Dostupné z URL: <http:

//httpd.apache.org/>.

[3] PHP: General Information [online]. Poslední aktualizace 15. 5. 2013. Dostupné

z URL: <http://cz1.php.net/manual/en/faq.general.php/>.

[4] PostgreSQL: About [online]. Poslední aktualizace 15. 5. 2013. Dostupné z URL:

<http://www.postgresql.org/about/>.

[5] PostGIS [online]. Poslední aktualizace 15. 5. 2013. Dostupné z URL: <http:

//www.postgis.org/>.

[6] O frameworku | Nette Framework [online]. Poslední aktualizace 15. 5. 2013. Do-

stupné z URL: <http://nette.org/cs/o-frameworku>.

[7] Sencha Ext JS | Products | Sencha [online]. Poslední aktualizace 15. 5. 2013.

Dostupné z URL: <http://www.sencha.com/products/extjs>.

[8] GeoExt 2 - Status Page [online]. Poslední aktualizace 15. 5. 2013. Dostupné

z URL: <http://geoext.github.io/geoext2/>.

[9] OpenLayers [online]. Poslední aktualizace 15. 5. 2013. Dostupné z URL: <http:

//openlayers.org/>.

[10] OGR Simple Feature Library [online]. Poslední aktualizace 15. 5. 2013. Do-

stupné z URL: <http://www.gdal.org/ogr/>.

54

Page 56: Návrh informačního systému URC JOSEFgeo.fsv.cvut.cz/proj/bp/2013/pavel-klimunda-bp-2013.pdfGIS, AJAX, PHP, ExtJS, GeoExt, OpenLayers, Nette, PostGIS, PostgreSQL PROHLÁ ENÍ Prohla²uji,

ČVUT v Praze SEZNAM SYMBOLŮ, VELIČIN A ZKRATEK

Seznam symbolů, veličin a zkratek

ČVUT České vysoké učení technické

FSv Fakulta stavební

HTTP Hyper Text Transfer Protocol

URI Uniform Resource Identifier

GET HTTP požadavek využívající URI

IP Internet Protocol

API Application Programming Interface

U Uživatel

IS Informační systém

ACL Access control list

NCSA National Center for Supercomputing Applications

ASF Apache Software Foundation

PHP PHP: Hypertext Preprocessor

JSON JavaScript Object Notation

GDAL Geospatial Data Abstraction Library

CRM Customer relationship management

55

Page 57: Návrh informačního systému URC JOSEFgeo.fsv.cvut.cz/proj/bp/2013/pavel-klimunda-bp-2013.pdfGIS, AJAX, PHP, ExtJS, GeoExt, OpenLayers, Nette, PostGIS, PostgreSQL PROHLÁ ENÍ Prohla²uji,

Seznam obrázků

2.1 Use case: Vytvoření uživatele (Uživatelé) . . . . . . . . . . . . . . . . 16

2.2 Use case: Přidání role (Uživatelé) . . . . . . . . . . . . . . . . . . . . 17

2.3 Use case: Vytvoření objektu (Majetek) . . . . . . . . . . . . . . . . . 18

2.4 Use case: Registrace výpůjčky (Majetek) . . . . . . . . . . . . . . . . 19

2.5 Use case: Aktualizace dat (Infrastruktura) . . . . . . . . . . . . . . . 20

2.6 Use case: Přidání uživatele (Projekty) . . . . . . . . . . . . . . . . . . 21

2.7 Use case: Vyhledání bodu (Bodová pole a geodata) . . . . . . . . . . 22

2.8 Proces: Vytvoření uživatele a přidání role (Uživatelé) . . . . . . . . . 23

2.9 Proces: Vytvoření role a přidání oprávnění (Uživatelé) . . . . . . . . . 24

2.10 Proces: Přiřazení zdrojů/privilegií oprávněním (Uživatelé) . . . . . . 25

2.11 Proces: Registrace výpůjčky (Majetek) . . . . . . . . . . . . . . . . . 26

2.12 Proces: Aktualizace dat (Senzory) . . . . . . . . . . . . . . . . . . . . 26

2.13 Proces: Vytvoření a editace projektu (Výzkumné projekty) . . . . . . 27

2.14 Proces: Editace bodů (Bodová pole a geodata) . . . . . . . . . . . . . 28

2.15 Proces: Zobrazení mapy (Bodová pole a geodata) . . . . . . . . . . . 28

2.16 Proces: Správa map a vrstev (Bodová pole a geodata) . . . . . . . . . 29

2.17 Proces: Aktualizace geodetických dat (Bodová pole a geodata) . . . . 30

2.18 Databáze: Objekty . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

2.19 Databáze: Správa uživatelů a rolí . . . . . . . . . . . . . . . . . . . . 33

2.20 Databáze: Geodata . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

2.21 Třídy: Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

2.22 Třídy: Uživatelé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

2.23 Třídy: Mapy, vrstvy, geodata . . . . . . . . . . . . . . . . . . . . . . 37

2.24 Třídy: Majetek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

2.25 Třídy: Senzory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

2.26 Třídy: Projekty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

2.27 Wireframe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

C.1 Printscreen ukázkové aplikace . . . . . . . . . . . . . . . . . . . . . . 71

Page 58: Návrh informačního systému URC JOSEFgeo.fsv.cvut.cz/proj/bp/2013/pavel-klimunda-bp-2013.pdfGIS, AJAX, PHP, ExtJS, GeoExt, OpenLayers, Nette, PostGIS, PostgreSQL PROHLÁ ENÍ Prohla²uji,

ČVUT v Praze SEZNAM PŘÍLOH

Seznam příloh

A Instalace aplikací 58

A.1 Úvod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

A.2 Apache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

A.2.1 Instalace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

A.3 PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

A.3.1 Instalace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

A.4 PostgreSQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

A.4.1 Instalace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

A.4.2 Konfigurace . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

A.4.3 PostGIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

B Tvorba SQL databáze 60

C Printscreen ukázkové aplikace 71

D Obsah přiloženého CD 72

57

Page 59: Návrh informačního systému URC JOSEFgeo.fsv.cvut.cz/proj/bp/2013/pavel-klimunda-bp-2013.pdfGIS, AJAX, PHP, ExtJS, GeoExt, OpenLayers, Nette, PostGIS, PostgreSQL PROHLÁ ENÍ Prohla²uji,

ČVUT v Praze A. INSTALACE APLIKACÍ

A Instalace aplikací

A.1 Úvod

Kompletní vývoj aplikace probíhal v operačním systému GNU/Linux, konkrétně na

distribuci Ubuntu. V této příloze bude rozebrána instalace aplikací nutných pro její

běh a základní nastavení těchto aplikací.

A.2 Apache

A.2.1 Instalace

sudo apt-get install apache2

Konfigurace

Po instalaci je v Apache2 vypnutý mod-rewrite, který je potřeba kvůli Nette Fra-

meworku a proto je nutné jej povolit.

sudo cd /etc/apache2/mods-enabled/

sudo ln -s ../mods-available/rewrite.load rewrite.load

sudo /etc/init.d/apache2 reload

A.3 PHP

A.3.1 Instalace

sudo apt-get install php5 libapache2-mod-php5

A.4 PostgreSQL

A.4.1 Instalace

sudo apt-get install postgresql php5-pgsql postgresql-client \

postgresql-contrib

58

Page 60: Návrh informačního systému URC JOSEFgeo.fsv.cvut.cz/proj/bp/2013/pavel-klimunda-bp-2013.pdfGIS, AJAX, PHP, ExtJS, GeoExt, OpenLayers, Nette, PostGIS, PostgreSQL PROHLÁ ENÍ Prohla²uji,

ČVUT v Praze A. INSTALACE APLIKACÍ

A.4.2 Konfigurace

Nastavení hesla uživatele postgres a vytvoření nového uživatele a databáze.

sudo passwd postgres

sudo /etc/init.d/postgresql restart

su postgres

createuser <user_name>

createdb <db_name>

psql <user_name>

ALTER USER <user_name> WITH PASSWORD ’<password>’;

A.4.3 PostGIS

Z důvodu zastaralosti verze PostGIS v systému bylo nutné přidat zdroj ubuntugis-

unstable, který obsahuje nejnovější verze PostGIS.

Instalace

sudo apt-add-repository ppa:ubuntugis/ubuntugis-unstable

sudo apt-get install postgis postgresql-9.1-postgis

Konfigurace

V databázi je pak nutné spustit následující příkaz.

CREATE EXTENSION postgis;

59

Page 61: Návrh informačního systému URC JOSEFgeo.fsv.cvut.cz/proj/bp/2013/pavel-klimunda-bp-2013.pdfGIS, AJAX, PHP, ExtJS, GeoExt, OpenLayers, Nette, PostGIS, PostgreSQL PROHLÁ ENÍ Prohla²uji,

ČVUT v Praze B. TVORBA SQL DATABÁZE

B Tvorba SQL databáze

CREATE SCHEMA josef;

SET search_path TO josef,public;

DROP TABLE IF EXISTS josef.roles;

DROP TABLE IF EXISTS josef.users;

DROP TABLE IF EXISTS josef.users_roles;

DROP TABLE IF EXISTS josef.addresses_types;

DROP TABLE IF EXISTS josef.addresses;

DROP TABLE IF EXISTS josef.resources_types;

DROP TABLE IF EXISTS josef.resources;

DROP TABLE IF EXISTS josef.privileges;

DROP TABLE IF EXISTS josef.permissions;

DROP TABLE IF EXISTS josef.roles_permissions;

DROP TABLE IF EXISTS josef.objects;

DROP TABLE IF EXISTS josef.attributes;

DROP TABLE IF EXISTS josef.attributes_types;

DROP TABLE IF EXISTS josef.default_attributes;

DROP TABLE IF EXISTS josef.resources_default_attributes;

DROP TABLE IF EXISTS josef.objects_joins;

DROP TABLE IF EXISTS josef.joins_types;

DROP TABLE IF EXISTS josef.geotypes_objects

DROP TABLE IF EXISTS josef.points

DROP TABLE IF EXISTS josef.linestrings

DROP TABLE IF EXISTS josef.polygons

CREATE TABLE josef.users (

id BIGSERIAL PRIMARY KEY,

login VARCHAR(255) UNIQUE NOT NULL,

firstname VARCHAR(255),

lastname VARCHAR(255),

60

Page 62: Návrh informačního systému URC JOSEFgeo.fsv.cvut.cz/proj/bp/2013/pavel-klimunda-bp-2013.pdfGIS, AJAX, PHP, ExtJS, GeoExt, OpenLayers, Nette, PostGIS, PostgreSQL PROHLÁ ENÍ Prohla²uji,

ČVUT v Praze B. TVORBA SQL DATABÁZE

password VARCHAR(255) NOT NULL,

phone VARCHAR(15),

position VARCHAR(255),

created TIMESTAMP NOT NULL DEFAULT current_timestamp,

created_users_id BIGINT REFERENCES users(id) \

ON UPDATE CASCADE ON DELETE SET NULL,

modified TIMESTAMP,

modified_users_id BIGINT REFERENCES users(id) \

ON UPDATE CASCADE ON DELETE SET NULL

);

CREATE TABLE josef.roles (

id BIGSERIAL PRIMARY KEY,

role VARCHAR(255) UNIQUE NOT NULL,

description TEXT,

created TIMESTAMP NOT NULL DEFAULT current_timestamp,

created_users_id BIGINT REFERENCES users(id) \

ON UPDATE CASCADE ON DELETE SET NULL,

modified TIMESTAMP,

modified_users_id BIGINT REFERENCES users(id) \

ON UPDATE CASCADE ON DELETE SET NULL

);

CREATE TABLE josef.users_roles (

users_id BIGINT NOT NULL REFERENCES users(id) \

ON UPDATE CASCADE ON DELETE CASCADE,

roles_id BIGINT NOT NULL REFERENCES roles(id) \

ON UPDATE CASCADE ON DELETE RESTRICT,

created TIMESTAMP NOT NULL DEFAULT current_timestamp,

created_users_id BIGINT REFERENCES users(id) \

ON UPDATE CASCADE ON DELETE SET NULL,

61

Page 63: Návrh informačního systému URC JOSEFgeo.fsv.cvut.cz/proj/bp/2013/pavel-klimunda-bp-2013.pdfGIS, AJAX, PHP, ExtJS, GeoExt, OpenLayers, Nette, PostGIS, PostgreSQL PROHLÁ ENÍ Prohla²uji,

ČVUT v Praze B. TVORBA SQL DATABÁZE

modified TIMESTAMP,

modified_users_id BIGINT REFERENCES users(id) \

ON UPDATE CASCADE ON DELETE SET NULL,

PRIMARY KEY (users_id, roles_id)

);

CREATE TABLE josef.addresses_types (

id BIGSERIAL PRIMARY KEY,

type VARCHAR(255),

description TEXT,

created TIMESTAMP NOT NULL DEFAULT current_timestamp,

created_users_id BIGINT REFERENCES users(id) \

ON UPDATE CASCADE ON DELETE SET NULL,

modified TIMESTAMP,

modified_users_id BIGINT REFERENCES users(id) \

ON UPDATE CASCADE ON DELETE SET NULL

);

CREATE TABLE josef.addresses (

id BIGSERIAL PRIMARY KEY,

users_id BIGINT REFERENCES users(id) ON DELETE CASCADE,

addresses_types_id BIGINT REFERENCES addresses_types(id) \

ON UPDATE CASCADE ON DELETE RESTRICT,

street VARCHAR(255),

city VARCHAR(255),

postcode VARCHAR(255),

country VARCHAR(255),

created TIMESTAMP NOT NULL DEFAULT current_timestamp,

created_users_id BIGINT REFERENCES users(id) \

ON UPDATE CASCADE ON DELETE SET NULL,

modified TIMESTAMP,

62

Page 64: Návrh informačního systému URC JOSEFgeo.fsv.cvut.cz/proj/bp/2013/pavel-klimunda-bp-2013.pdfGIS, AJAX, PHP, ExtJS, GeoExt, OpenLayers, Nette, PostGIS, PostgreSQL PROHLÁ ENÍ Prohla²uji,

ČVUT v Praze B. TVORBA SQL DATABÁZE

modified_users_id BIGINT REFERENCES users(id) \

ON UPDATE CASCADE ON DELETE SET NULL

);

CREATE TABLE josef.resources_types (

id BIGSERIAL PRIMARY KEY,

type VARCHAR(255),

created TIMESTAMP NOT NULL DEFAULT current_timestamp,

created_users_id BIGINT REFERENCES users(id) \

ON UPDATE CASCADE ON DELETE SET NULL,

modified TIMESTAMP,

modified_users_id BIGINT REFERENCES users(id) \

ON UPDATE CASCADE ON DELETE SET NULL

);

CREATE TABLE josef.resources (

id BIGSERIAL PRIMARY KEY,

resource VARCHAR(255),

description TEXT,

resources_types_id BIGINT REFERENCES resources_types(id) \

ON UPDATE CASCADE ON DELETE RESTRICT,

created TIMESTAMP NOT NULL DEFAULT current_timestamp,

created_users_id BIGINT REFERENCES users(id) \

ON UPDATE CASCADE ON DELETE SET NULL,

modified TIMESTAMP,

modified_users_id BIGINT REFERENCES users(id) \

ON UPDATE CASCADE ON DELETE SET NULL

);

CREATE TABLE josef.privileges (

id BIGSERIAL PRIMARY KEY,

63

Page 65: Návrh informačního systému URC JOSEFgeo.fsv.cvut.cz/proj/bp/2013/pavel-klimunda-bp-2013.pdfGIS, AJAX, PHP, ExtJS, GeoExt, OpenLayers, Nette, PostGIS, PostgreSQL PROHLÁ ENÍ Prohla²uji,

ČVUT v Praze B. TVORBA SQL DATABÁZE

privilege VARCHAR(255),

description TEXT,

created TIMESTAMP NOT NULL DEFAULT current_timestamp,

created_users_id BIGINT REFERENCES users(id) \

ON UPDATE CASCADE ON DELETE SET NULL,

modified TIMESTAMP,

modified_users_id BIGINT REFERENCES users(id) \

ON UPDATE CASCADE ON DELETE SET NULL

);

CREATE TABLE josef.objects (

id BIGSERIAL PRIMARY KEY,

name VARCHAR(255) NOT NULL,

description TEXT,

resources_id BIGINT NOT NULL REFERENCES resources(id) \

ON UPDATE CASCADE ON DELETE RESTRICT,

created TIMESTAMP NOT NULL DEFAULT current_timestamp,

created_users_id BIGINT REFERENCES users(id)

\ON UPDATE CASCADE ON DELETE SET NULL,

modified TIMESTAMP,

modified_users_id BIGINT REFERENCES users(id) \

ON UPDATE CASCADE ON DELETE SET NULL

);

CREATE TABLE josef.permissions (

id BIGSERIAL PRIMARY KEY,

permision VARCHAR(255),

description TEXT,

resources_id BIGINT REFERENCES resources(id) \

ON UPDATE CASCADE ON DELETE RESTRICT,

privileges_id BIGINT REFERENCES privileges(id) \

64

Page 66: Návrh informačního systému URC JOSEFgeo.fsv.cvut.cz/proj/bp/2013/pavel-klimunda-bp-2013.pdfGIS, AJAX, PHP, ExtJS, GeoExt, OpenLayers, Nette, PostGIS, PostgreSQL PROHLÁ ENÍ Prohla²uji,

ČVUT v Praze B. TVORBA SQL DATABÁZE

ON UPDATE CASCADE ON DELETE RESTRICT,

created TIMESTAMP NOT NULL DEFAULT current_timestamp,

created_users_id BIGINT REFERENCES users(id) \

ON UPDATE CASCADE ON DELETE SET NULL,

modified TIMESTAMP,

modified_users_id BIGINT REFERENCES users(id) \

ON UPDATE CASCADE ON DELETE SET NULL

);

CREATE TABLE josef.roles_permissions (

roles_id BIGINT NOT NULL REFERENCES roles(id) \

ON UPDATE CASCADE ON DELETE RESTRICT,

permissions_id BIGINT NOT NULL REFERENCES permissions(id) \

ON UPDATE CASCADE ON DELETE RESTRICT,

objects_id BIGINT REFERENCES objects(id) \

ON UPDATE CASCADE ON DELETE RESTRICT,

users_id BIGINT REFERENCES users(id) \

ON UPDATE CASCADE ON DELETE RESTRICT,

created TIMESTAMP NOT NULL DEFAULT current_timestamp,

created_users_id BIGINT REFERENCES users(id) \

ON UPDATE CASCADE ON DELETE SET NULL,

modified TIMESTAMP,

modified_users_id BIGINT REFERENCES users(id) \

ON UPDATE CASCADE ON DELETE SET NULL,

PRIMARY KEY (roles_id, permissions_id)

);

CREATE TABLE josef.attributes_types (

id BIGSERIAL PRIMARY KEY,

type VARCHAR(255) UNIQUE NOT NULL,

created TIMESTAMP NOT NULL DEFAULT current_timestamp,

65

Page 67: Návrh informačního systému URC JOSEFgeo.fsv.cvut.cz/proj/bp/2013/pavel-klimunda-bp-2013.pdfGIS, AJAX, PHP, ExtJS, GeoExt, OpenLayers, Nette, PostGIS, PostgreSQL PROHLÁ ENÍ Prohla²uji,

ČVUT v Praze B. TVORBA SQL DATABÁZE

created_users_id BIGINT REFERENCES users(id) \

ON UPDATE CASCADE ON DELETE SET NULL,

modified TIMESTAMP,

modified_users_id BIGINT REFERENCES users(id) \

ON UPDATE CASCADE ON DELETE SET NULL

);

CREATE TABLE josef.attributes (

objects_id BIGINT PRIMARY KEY REFERENCES objects(id) \

ON UPDATE CASCADE ON DELETE CASCADE,

attributes_types_id BIGINT NOT NULL REFERENCES attributes_types(id) \

ON UPDATE CASCADE ON DELETE RESTRICT,

name VARCHAR(255) NOT NULL,

value_bool BOOLEAN,

value_int INT,

value_double DOUBLE PRECISION,

value_varchar VARCHAR(255),

value_text TEXT,

value_bytea BYTEA,

created TIMESTAMP NOT NULL DEFAULT current_timestamp,

created_users_id BIGINT REFERENCES users(id) \

ON UPDATE CASCADE ON DELETE SET NULL,

modified TIMESTAMP,

modified_users_id BIGINT REFERENCES users(id) \

ON UPDATE CASCADE ON DELETE SET NULL

);

CREATE TABLE josef.default_attributes (

id BIGSERIAL PRIMARY KEY,

attributes_types_id BIGINT NOT NULL REFERENCES attributes_types(id) \

ON UPDATE CASCADE ON DELETE RESTRICT,

66

Page 68: Návrh informačního systému URC JOSEFgeo.fsv.cvut.cz/proj/bp/2013/pavel-klimunda-bp-2013.pdfGIS, AJAX, PHP, ExtJS, GeoExt, OpenLayers, Nette, PostGIS, PostgreSQL PROHLÁ ENÍ Prohla²uji,

ČVUT v Praze B. TVORBA SQL DATABÁZE

name VARCHAR(255) NOT NULL,

created TIMESTAMP NOT NULL DEFAULT current_timestamp,

created_users_id BIGINT REFERENCES users(id) \

ON UPDATE CASCADE ON DELETE SET NULL,

modified TIMESTAMP,

modified_users_id BIGINT REFERENCES users(id) \

ON UPDATE CASCADE ON DELETE SET NULL

);

CREATE TABLE josef.joins_types (

id BIGSERIAL PRIMARY KEY,

type VARCHAR(255),

a_resources_id BIGINT NOT NULL REFERENCES resources(id) \

ON UPDATE CASCADE ON DELETE RESTRICT,

b_resources_id BIGINT NOT NULL REFERENCES resources(id) \

ON UPDATE CASCADE ON DELETE RESTRICT,

created TIMESTAMP NOT NULL DEFAULT current_timestamp,

created_users_id BIGINT REFERENCES users(id) \

ON UPDATE CASCADE ON DELETE SET NULL,

modified TIMESTAMP,

modified_users_id BIGINT REFERENCES users(id) \

ON UPDATE CASCADE ON DELETE SET NULL

);

CREATE TABLE josef.objects_join (

a_objects_id BIGINT REFERENCES objects(id) \

ON UPDATE CASCADE ON DELETE CASCADE,

b_objects_id BIGINT REFERENCES objects(id) \

ON UPDATE CASCADE ON DELETE CASCADE,

joins_types_id BIGINT REFERENCES joins_types(id) \

ON UPDATE CASCADE ON DELETE RESTRICT,

67

Page 69: Návrh informačního systému URC JOSEFgeo.fsv.cvut.cz/proj/bp/2013/pavel-klimunda-bp-2013.pdfGIS, AJAX, PHP, ExtJS, GeoExt, OpenLayers, Nette, PostGIS, PostgreSQL PROHLÁ ENÍ Prohla²uji,

ČVUT v Praze B. TVORBA SQL DATABÁZE

created TIMESTAMP NOT NULL DEFAULT current_timestamp,

created_users_id BIGINT REFERENCES users(id) \

ON UPDATE CASCADE ON DELETE SET NULL,

modified TIMESTAMP,

modified_users_id BIGINT REFERENCES users(id) \

ON UPDATE CASCADE ON DELETE SET NULL,

PRIMARY KEY (a_objects_id, b_objects_id, joins_types_id)

);

CREATE TABLE josef.geotypes (

id BIGSERIAL PRIMARY KEY,

geotype VARCHAR(255) NOT NULL UNIQUE,

created TIMESTAMP NOT NULL DEFAULT current_timestamp,

created_users_id BIGINT REFERENCES users(id) \

ON UPDATE CASCADE ON DELETE SET NULL,

modified TIMESTAMP,

modified_users_id BIGINT REFERENCES users(id) \

ON UPDATE CASCADE ON DELETE SET NULL

);

CREATE TABLE josef.geotypes_objects (

objects_id BIGINT REFERENCES josef.objects(id) \

ON UPDATE CASCADE ON DELETE CASCADE,

geotypes_id BIGINT REFERENCES josef.geotypes(id) \

ON UPDATE CASCADE ON DELETE RESTRICT,

created TIMESTAMP NOT NULL DEFAULT current_timestamp,

created_users_id BIGINT REFERENCES users(id) \

ON UPDATE CASCADE ON DELETE SET NULL,

modified TIMESTAMP,

modified_users_id BIGINT REFERENCES users(id) \

ON UPDATE CASCADE ON DELETE SET NULL

68

Page 70: Návrh informačního systému URC JOSEFgeo.fsv.cvut.cz/proj/bp/2013/pavel-klimunda-bp-2013.pdfGIS, AJAX, PHP, ExtJS, GeoExt, OpenLayers, Nette, PostGIS, PostgreSQL PROHLÁ ENÍ Prohla²uji,

ČVUT v Praze B. TVORBA SQL DATABÁZE

);

CREATE TABLE josef.points (

objects_id BIGINT PRIMARY KEY REFERENCES josef.objects(id) \

ON UPDATE CASCADE ON DELETE CASCADE,

geom GEOMETRY(PointZ, 5514),

created TIMESTAMP NOT NULL DEFAULT current_timestamp,

created_users_id BIGINT REFERENCES users(id) \

ON UPDATE CASCADE ON DELETE SET NULL,

modified TIMESTAMP,

modified_users_id BIGINT REFERENCES users(id) \

ON UPDATE CASCADE ON DELETE SET NULL

);

CREATE TABLE josef.linestrings (

objects_id BIGINT PRIMARY KEY REFERENCES josef.objects(id) \

ON UPDATE CASCADE ON DELETE CASCADE,

geom GEOMETRY(LinestringZ, 5514),

created TIMESTAMP NOT NULL DEFAULT current_timestamp,

created_users_id BIGINT REFERENCES users(id) \

ON UPDATE CASCADE ON DELETE SET NULL,

modified TIMESTAMP,

modified_users_id BIGINT REFERENCES users(id) \

ON UPDATE CASCADE ON DELETE SET NULL

);

CREATE TABLE josef.polygons (

objects_id BIGINT PRIMARY KEY REFERENCES josef.objects(id) \

ON UPDATE CASCADE ON DELETE CASCADE,

geom GEOMETRY(PolygonZ, 5514),

created TIMESTAMP NOT NULL DEFAULT current_timestamp,

69

Page 71: Návrh informačního systému URC JOSEFgeo.fsv.cvut.cz/proj/bp/2013/pavel-klimunda-bp-2013.pdfGIS, AJAX, PHP, ExtJS, GeoExt, OpenLayers, Nette, PostGIS, PostgreSQL PROHLÁ ENÍ Prohla²uji,

ČVUT v Praze B. TVORBA SQL DATABÁZE

created_users_id BIGINT REFERENCES users(id) \

ON UPDATE CASCADE ON DELETE SET NULL,

modified TIMESTAMP,

modified_users_id BIGINT REFERENCES users(id) \

ON UPDATE CASCADE ON DELETE SET NULL

);

70

Page 72: Návrh informačního systému URC JOSEFgeo.fsv.cvut.cz/proj/bp/2013/pavel-klimunda-bp-2013.pdfGIS, AJAX, PHP, ExtJS, GeoExt, OpenLayers, Nette, PostGIS, PostgreSQL PROHLÁ ENÍ Prohla²uji,

ČVUT v Praze C. PRINTSCREEN UKÁZKOVÉ APLIKACE

C Printscreen ukázkové aplikace

Obr. C.1: Printscreen ukázkové aplikace

71

Page 73: Návrh informačního systému URC JOSEFgeo.fsv.cvut.cz/proj/bp/2013/pavel-klimunda-bp-2013.pdfGIS, AJAX, PHP, ExtJS, GeoExt, OpenLayers, Nette, PostGIS, PostgreSQL PROHLÁ ENÍ Prohla²uji,

ČVUT v Praze D. OBSAH PŘILOŽENÉHO CD

D Obsah přiloženého CD

Součástí elektronických příloh na přiloženém CD jsou text této bakalářské práce ve

formátu pdf, webová aplikace, skript pro vytvoření databáze a soubory použité pro

export mapových dat.

∙ aplikace/

– app/...

– libs/...

– log/...

– temp/...

– tests/...

– www/...

– readme.txt

∙ databaze/

– database.sql

– readme.txt

∙ dulni_mapa/

– dulni_mapa.shp

– dulni_mapa.shx

– dulni_mapa_pocva_wkb.sql

– dulni_mapa_pocva_wkt.sql

– dulni_mapa_v7.dgn

– readme.txt

∙ bp_klimunda.pdf

∙ readme.txt

72


Recommended