Prostorové nadstavby nekomerčních databází - vstup a správa geoobjektů

Prostředí a metody zpracování

Existuje celá řada databázových systémů, produktů a nadstaveb, které se využívají pro potřeby geografických informačních systémů.

1. DATABÁZE

Databáze je velkou sbírkou propojených dat uložených v počítačovém prostředí. V těchto prostředích jsou data perzistentní, což znamená, že přežijí neočekávané softwarové nebo hardwarové problémy (s výjimkou závažných případů selhání disku).

K tradičnímu využití databází patří personální řízení, akcie, cestovní rezervace a bankovnictví.

V případě relačních databázových systémů se databáze skládá z několika tabulek a jejich vzájemných vztahů, které jsou nazývány dle autora relačního modelu E. F. Codda relace [2]. Každá tabulka se skládá z jednotlivých řádků, které se označují jako záznam (record). Struktura záznamu je dána definicí tabulky. Pokud se například bude jednat o tabulku s adresami, pak budou jednotlivá pole (fields) záznamu obsahovat jméno, příjmení, ulici atd. Pro každé pole je přesně zadáno, jak má vypadat jeho obsah (například různé formáty čísel nebo řetězec o maximálním počtu znaků). Namísto o záznamech obsahujících jednotlivá pole se často hovoří pouze o řádcích (rows) či sloupcích (columns). Významově znamenají všechny tyto výrazy totéž.

Databáze může být viděna jako jeden nebo více souborů uložených na nějakém vnějším paměťovém zařízení, jako je například disk. Ačkoliv by bylo možné psát aplikace, které mají přímý přístup k těmto souborům, stavba aplikací vyvolává řadu problémů, které se týkají bezpečnosti, souběžnosti a složitosti manipulace s daty [4]. DBMS (DataBase Management System) je kolekce programů, které řídí strukturu databáze a kontroluje přístup k datům uloženým v databázi. Obecně řečeno, DBMS usnadňuje proces:

Zjednodušené prostředí databázového systému

Na obrázku č.1 výše je znázorněno zjednodušené prostředí databázového systému. Ukazuje, jak DBMS působí jako prostředník mezi uživateli, aplikačními programy a zařízeními, kde jsou data uložena. DBMS software se skládá ze dvou částí. Horní část zpracovává dotazy (queries) uživatele. Výsledkem dotazu je tabulka, která je však uložena pouze v operační paměti počítače (RAM) [2]. Spodní část umožňuje přístup k vlastním údajům a metadatům potřebným k pochopení definice a struktury databáze.

DBMS závisí na základním pojetí datové nezávislosti. Uživatelé komunikují s reprezentací dat nezávisle na konkrétním fyzickém skladování a DBMS má na starosti překládání uživatelských manipulací s ohledem na efektivní provoz fyzických datových struktur [4].

Tohoto mechanismu je možné dosáhnout pomocí různých úrovní abstrakce. Je obvyklé rozlišovat tři úrovně v databázovém prostředí: 1. Fyzická úroveň se zabývá strukturami skladování, 2. Logická úroveň definuje reprezentaci dat navržených pro uživatele a 3. Vnější úroveň odpovídá za částečný pohled do databáze pomocí konkrétní aplikace.

Rozdíl mezi fyzickými a logickými reprezentacemi je stěžejní oblastí databáze. Jasně odděluje úkoly věnované systému zjednodušené reprezentace a funkčním manipulacím nabízeným uživateli. Dokáže se tedy soustředit především na odpovídající modelování a provádění aplikace.

1.1 Modelování aplikací

Na logické úrovni je prvním úkolem definovat databázové schéma, které popisuje strukturu spravovaných informací řízených aplikacemi stejně jako omezení, která je třeba respektovat [4]. Jakmile je schéma definováno, mohou být data vkládána, aktualizována, vymazávána a dotazována pomocí dotazovacího jazyka.

Zejména struktury, omezení a provoz zajišťuje DBMS závislý na logickém datovém modelu podporovaném DBMS. V současné době je nejrozšířenější relační datový model. Níže je uveden příklad vývoje aplikace s relačními databázemi.

REPREZENTACE DAT V RELAČNÍ DATABÁZI

V relačním prostředí je reprezentace dat poměrně jednoduchá. Opírá se o jediný typ struktury, tabulky nebo relace [4]. Například reprezentace názvu, hlavního města a počtu obyvatel kolekce zemí obsahuje jeden řádek na zemi a jeden sloupec nebo atribut na vlastnost zastoupenou v každé zemi (konkrétně její název, hlavní město a počet obyvatel). Navrhnutí relačního schématu obvykle zabere dva kroky.

Postup a realizace datového modelování

MANIPULACE S DATY

V prostředí DBMS, se manipulace s daty děje prostřednictvím vyjádření dotazů a jiných operací (aktualizace, vložení, atd.) v jazyce pro manipulaci s daty (DML). Jedním z důvodů úspěchu relační DBMS je existence dotazovacího jazyka SQL, jednotně používaného ve všech relačních systémech [4]. SQL má základní vlastnosti, které stojí za zmínku. 1) SQL je deklarativní, což znamená, že uživatel vyjádří, co očekává jako výsledek. Jazyk je jednoduchý, a je přístupný i pro neodborné uživatele. Tento systém také dává svobodu (a odpovědnost) zvolit vhodné provedení.

2) SQL se opírá o řádné matematické základy. Soubor údajů manipulace vyjádřený prostřednictvím jazyka je přesně vymezen dvěma ekvivalenty, formálními jazyky, a sice relačním kalkulem a relační algebrou. První z nich je v podstatě první logický příkaz. Druhým je malý soubor operátorů, které popisují, jak lze manipulovat vztahy k vyhodnocení dotazu.

Nicméně, existuje protějšek k jednoduchosti SQL. Expresivní síla SQL není dostatečná, neboť neodpovídá kompletním programovacím jazykům jako C [4]. Například nelze vyjádřit rekurze (opakování činnosti) a ani aritmetické výpočty. I když je to cena, která má být zaplacena za jednoduchost a efektivnost, přináší silná omezení, pokud jde o výpočty potřebné pro manipulaci s prostorovými objekty.

1.2 Správa fyzických dat

Jakýkoli DBMS nakládá na fyzické úrovni s těmito úkoly. Všechny tyto funkce jsou skryty pro koncového uživatele.

Mnohé z těchto funkcí (s výjimkou kontroly souběžnosti a obnovy) jsou určeny k efektivnímu vyhodnocování dotazů [4]. Výše uvedené úkoly, musí být řešeny v prostorových databázích. Nicméně, s prostorovými daty mnoho z těchto úkolů vyžaduje specifické řešení. Zejména relační datový model ukazuje, že je příliš chudý, aby zastupoval a manipuloval s geometrickými daty. Tím vzniká několik zajímavých problémů týkajících se rozšíření stávajících logických datových modelů a vývoje nových technik zpracování dotazu.

2. GEODATABÁZE (PROSTOROVÁ DATABÁZE)

Geodatabáze je databáze navržená pro ukládání, dotazování a manipulaci s geografickou informací a prostorovými daty. Je také známá jako prostorová databáze.

V rámci prostorové databáze je s prostorovými daty zacházeno jako s jakýmkoli jiným typem dat. Vektorová data mohou být uložena jako bod, linie nebo polygon datové typy a mohou mít související souřadnicový systém. Záznam geodatabáze může používat datový typ geometrie pro reprezentaci umístění objektu ve fyzickém světě a další standardní databázové datové typy pro uložení atributů objektu. Některé geodatabáze mohou obsahovat podporu také pro ukládání rastrových dat.

Mnoho geodatabází má vlastní funkce, které umožňují manipulovat a dotazovat se na prostorová data pomocí SQL, například najít všechny obyvatele oblasti v rámci expozice zóny pro potenciální ohrožení životního prostředí. Nicméně k prostorovým datům v některých geodatabázích lze přistupovat pouze pomocí speciálního klientského softwaru.

V rámci geografického informačního systému (GIS) je prostorová databáze jednou ze součástí, které lze použít pro ukládání a manipulaci s daty. Kompletní systém pak zahrnuje také klientský software pro zobrazení a editaci dat uložených v databázi [11].

2.1 PostgreSQL

PostgreSQL je objektově-relační databázový systém s otevřeným zdrojovým kódem, vyvinutý na University of California v Berkeley Computer Science Department. Má za sebou více než patnáct let aktivního vývoje a má vynikající pověst pro svou spolehlivost a bezpečnost [19].

Běží nativně na všech rozšířených operačních systémech včetně Linuxu, UNIX (AIX, BSD, HP-UX, SGI-IRIX, Mac OS X, Solaris, Tru64) a Windows. Stoprocentně splňuje podmínky ACID (soubor vlastností zaručujících spolehlivé zpracování databázových transakcí), plně podporuje cizí klíče, operace JOIN, pohledy, spouštěče a uložené procedury. Obsahuje většinu SQL92 a SQL99 datových typů, např. INTEGER, NUMERIC, BOOLEAN, CHAR, VARCHAR, DATE, INTERVAL a TIMESTAMP. Rovněž podporuje ukládání binárních velkých objektů, včetně obrázků, zvuků nebo videa. Má nativní programovací rozhraní pro C / C++, Java, .Net, Perl, Python, Ruby, Tcl, ODBC a další. Výkonnostně nezaostává za srovnatelnými komerčními systémy a častokrát je i předčí.

PostgreSQL podporuje složené, jedinečné, částečné a funkční indexy, které může použít některá z jeho B-tree, R-tree, hash, nebo GiST skladovacích metod.

GiST (Generalized Search Tree) indexování je moderní systém, který sdružuje široké spektrum různých třídících a vyhledávacích algoritmů včetně B-tree, B +-tree, R-tree, partial sum tree, ranked B +-tree a mnoho dalších. To také poskytuje rozhraní, které umožňuje jak tvorbu vlastních datových typů, stejně jako rozšiřitelných dotazovacích metod, s jejíž pomocí lze prohledávat. Tak, GiST nabízí flexibilitu ke specifikování toho, co je uloženo, jak je to uloženo, a schopnost definovat nové způsoby, jak hledat přes to --- způsoby, které jsou daleko větší než nabízí standardní B-tree, R-tree a další obecné hledací algoritmy.

Logo databázového systému PostgreSQL

PostgreSQL je šířen pod licencí The PostgreSQL License (TPL), která je nejliberálnější ze všech Open Source licencí. Tato licence umožňuje neomezené bezplatné používání, modifikaci a distribuci PostgreSQL, a to ať pro komerční nebo nekomerční využití. PostgreSQL můžete šířit se zdrojovými kódy nebo bez nich, zdarma nebo komerčně.

Předností systému PostgreSQL je rozšiřitelnost. Systém může být bezproblémově rozšiřován o nové datové typy, funkce, operátory, agregační funkce, procedurální jazyky. Díky tomu mohly vzniknout následující rozšíření: PostGIS - podpora pro geografické informační systémy, Slony-I - master to multiple slaves replikace.

Za vývojem PostgreSQL stojí skupina nezávislých vývojářů a uživatelů navzájem komunikujících prostřednictvím internetu. Tento projekt není řízen žádnou obchodní organizací [27].

pgAdminIII

pgAdminIII je populární a nejlépe vybavená administrační a vývojářská Open Source platforma pro PostgreSQL. Aplikaci lze používat pod Linuxem, FreeBSD, Solaris, Mac OS X a Windows systémy ke správě PostgreSQL 7.3 a novějšího.

pgAdmin je navržený tak, aby uměl vyhovět na potřeby všech uživatelů, od psaní jednoduchých dotazů SQL až po vývoj komplexních databází. Grafické rozhraní podporuje všechny funkce PostgreSQL a činní administraci snadnou. Aplikace rovněž obsahuje editor SQL se zvýrazňováním syntaxe, editor kódu serverové strany, agenta pro plánování úkolů, podporu pro replikační systém Slony-I a další. Připojení k serveru může probíhat přes TCP/IP nebo Unixové sokety (na *nixových platformách) a může být kvůli bezpečnosti šifrované SSL. Pro komunikaci s databázovým serverem nejsou potřeba žádné přídavné ovladače.

pgAdmin je vyvíjen komunitou expertů na PostgreSQL z celého světa a je dostupný ve více jak tuctu jazyků. Jedná se o svobodný software vydaný pod licencí BSD [20].

Logo administračního programu databázového systému PostgreSQL

2.2 MySQL

MySQL je nejpopulárnější open source SQL databázový systém, vytvořený švédskou firmou MySQL AB, nyní vlastněný společností Sun Microsystems, dceřinou společností Oracle Corporation. Jeho hlavními autory jsou Michael „Monty“ Widenius a David Axmark [15]. Je považován za úspěšného průkopníka dvojího licencování – je k dispozici jak pod bezplatnou licencí GPL, tak pod komerční placenou licencí.

Příkazový řádek MySQL

MySQL je multiplatformní databáze. Komunikace s ní probíhá, jak už název napovídá, pomocí jazyka SQL. Podobně jako u ostatních SQL databází se jedná o dialekt tohoto jazyka s některými rozšířeními. Pro svou snadnou implementovatelnost (lze jej instalovat na Linux, MS Windows, ale i další operační systémy), výkon a především díky tomu, že se jedná o volně šiřitelný software, má vysoký podíl na v současné době používaných databázích. Velmi oblíbená a často nasazovaná je kombinace MySQL, PHP a Apache jako základní software webového serveru („technologie LAMP“) [15]. MySQL bylo od počátku optimalizováno především na rychlost, a to i za cenu některých zjednodušení: má jen jednoduché způsoby zálohování a až donedávna nepodporovalo pohledy, triggery a uložené procedury. Tyto vlastnosti jsou doplňovány teprve v posledních letech, kdy začaly nejčastějším uživatelům produktu, programátorům webových stránek, již poněkud scházet.

Logo databázového systému MySQL

MySQL Administrator

MySQL Administrator je všestranný nástroj, který pomáhá při vyřizování nejrůznějších operací při správě serveru MySQL [2]. Dokáže například provádět následující operace:

Ovládání programu není nijak složité, přesto předpokládá alespoň základní znalosti správy MySQL.

Program MySQL Administrator používá řada vývojářů v jazyce PHP pouze k vytvoření a správě databáze či tabulek. Databáze program označuje slovem Schemas.

MySQL Query Browser

MySQL Query Browser pomáhá při používání příkazů jazyka SQL a u verze MySQL 5.0 a vyšší také při vývoji a testování uložených procedur (stored procedures) [2]. Výsledky příkazů jazyka SQL se zobrazují v tabulkách. U jednoduchých dotazů (např. SELECT * FROM tabulka) lze měnit jednotlivé záznamy přímo v tabulce, popřípadě do tabulky přidávat nové záznamy.

MySQL Query Browser je do značné míry výsledkem zpětné vazby získané od mnoha uživatelů po dobu několika let [2].

2.3 SQLite

SQLite je relační databázový systém obsažený v relativně malé knihovně napsané v C. Je vyvíjen D. Richardem Hippem a šířen pod licencí public domain. Na rozdíl od databází založených na principu klient-server, kde je databázový server spuštěn jako samostatný proces, je SQLite pouze malá knihovna, která se přilinkuje k aplikaci a pomocí jednoduchého rozhraní ji lze začít využívat. Každá databáze je uložena v samostatném souboru .dbm (Database Manager), kde se data ukládají za použití jednoduchého primárního klíče do stejně velkých bloků a používá hašovacích technik pro rychlý přístup k datům při vyhledávání podle klíče [25].

V SQLite je implementován téměř celý standard SQL92. Databázi SQLite lze použít například v programovacích jazycích C, C++, Delphi, Java, Lua, PHP, Python, Perl, Ruby, Tcl. Předkompilované binární kódy jsou k dispozici pro Linux, Mac OS X a Windows.

Logo databázového systému SQLite

3. PROSTOROVÁ NADSTAVBA DATABÁZE

Rozšíření standardních databází o možnosti nativního ukládání geometrických vlastností objektů a „aktivní“ práci s nimi.

3.1 PostGIS

PostGIS je open source software, který přidává podporu pro geografické objekty objektově - relačnímu databázovému systému PostgreSQL. PostGIS implementuje specifikaci "Simple Features for SQL" (standard, který specifikuje uložení geografických dat v digitální podobě) konsorcia Open Geospatial Consortium (OGC - mezinárodní standardizační organizace založené na dobrovolné shodě). První verze byla vydána v roce 2001 společností Refractions Research pod licencí GNU General Public Licence [18]. Dostupný z http://postgis.refractions.net/download/

Logo prostorové nadstavby PostGIS

3.2 MyGIS

MySQL realizuje prostorové rozšíření specifikace Open Geospatial Consortium (OGC). Podporuje prostorové rozšíření umožňující vznik, skladování a analýzu geografických vlastností. Do verze MySQL 5.0.16 jsou tyto funkce dostupné jen pro tabulky MyISAM. Verze MySQL 5.0.16 podporuje už také InnoDB, NDB, BDB a ARCHIVE pro prostorové funkce.

MySQL podporuje formáty WKT a WKB. Well-known text (WKT) formát geometrie je určen pro výměnu dat geometrie ve formě ASCII. WKB se používá k výměně dat geometrie jako binární proudy zastoupené BLOB hodnotami, které obsahují geometrické WKB informace. Podrobná dokumentace je dostupná na http://dev.mysql.com/doc/refman/5.0/en/spatial-extensions.html

3.3 SpatiaLite

Prostorové rozšíření SpatiaLite umožňuje ukládat v databázi SQLite geoprostorová data - podobně jako např. PostGIS pro databázový systém PostgreSQL [12]. Je vyvíjen a udržován Alessandrem Furierim. SpatiaLite podědilo po svém rodiči veškeré dobré vlastnosti:

SpatiaLite v současnosti podporuje formáty WKT a WKB. Implementovány jsou také některé SQL prostorové funkce jako AsText(), GeomFromText(), Area(), PointN() a podobně. Dokumentace a instalační soubory jsou dostupné na http://www.gaia-gis.it/spatialite/

Logo prostorové nadstavby SpatiaLite

3.4 JanGeoDB

JanGeoDB je určena k uložení vektorové reprezentace geodat. Jedná se o nativní geodatabází systému Janitor. Janitor pracuje s různými formáty dat. Každý z nich má svá omezení nebo není zcela otevřený. Bylo proto přikročeno k vytvoření vlastní geodatabáze Janitoru – jangeodatabáze (zkráceně JanGeoDB) [5]. Relační model JanGeoDB byl vytvořen na základě zkušeností.

Základní požadavky na JanGeoDB: Ukládat jednotlivé objekty jako tvary - tj. body, linie a polygony. Tvary sdružovat do vrstev. Tvar nemusí být v žádné vrstvě, ale může být také ve více vrstvách. Vrstva má atributovou tabulku s tématickými informacemi o tvarech, které obsahuje. Geometrická informace o tvaruje je v určité projekci. Tvary v jedné vrstvě musí mít stejnou projekci. Projekce je definovaná pro nějaké území.

Ukázka relačního datového modelu JanGeoDB

VOLBA DBMS A SPECIFIKACE DATOVÝCH TYPŮ

Pro volbu DBMS byly stanoveny tyto požadavky:

Zvolen byl systém MySQL. A to s tím, že MySQL bude pilotní implementací, která bude později převedena i do jiných DBMS [5]. Uživatel Janitoru si pak bude moci vybrat DBMS, podle svých vlastních preferencí.

Vývoj JanGeoDB byl pozastaven a nahrazen MyGIS. V současnosti je součástí projektu Survey systému Janitor.

4. DALŠÍ SOFTWAROVÁ ŘEŠENÍ

Pro testování přístupu k databázím a pro využití dat v geodatabázi byly použity další nástroje a programy.

4.1 Janitor

Janitor je prostorově orientovaný systém, umožňující pořizování a zpracování dat s územní vazbou, orientovaný na operační systém Windows. Systém je vyvíjen na Laboratoři GIS v CENIA (Česká informační agentura životního prostředí). Program je napsaný v jazyce C++ a je určený k získávání, organizaci, správě a analýze dat. Je tvořen samostatně pracujícími a vzájemně propojitelnými aplikacemi (JanMap, JanDat, DataBuilder, ConnAdmin, FieldGIS, JanIRS, SQLTools).

Aplikace jsou postaveny tak, aby umožnily sběr dat v terénu včetně jejich prostorového určení, vedení datového skladu, zakládání a import, jak prostorových, tak ostatních dat a jejich editaci, tvorbu a modifikaci formulářů a sestav, výstupy. Základem systému je otevřená technologie umožňující tvorbu formulářů k zadávání a správě dat, včetně podpory ukládání prostorových dat (GIS). Janitor pracuje s daty uloženými v prostředí podporovaných databázových serverů (PostgreSQL, MySQL) a využívá dotazovací jazyk SQL92, včetně modifikací daného databázového stroje. Janitor umožňuje zobrazit datové soubory s prostorovou orientací (mapová projekce, zeměpisné souřadnice) v GIS aplikaci JanMap a publikovat pomocí formulářů a dokumentů vytvořených pomocí nástroje DataBuilder [14]. Poslední zatím dostupná verze je verze Janitor 2.5.1. Dokumentace a instalační soubory jsou dostupné na http://www.janitor.cenia.cz/

JanMap byl používán pro zobrazování a import vrstev. Tento software dokáže zobrazovat vrstvy z PostGIS i MyGIS, a také umí do obou databází importovat (platilo do verze PostgreSQL 8.2 – stávající verze nepodporují import pro změnu struktury knihovny v PostgreSQL). Pomocí SQLTools je možné se na obě databáze dotazovat. Aby se vrstvy mnou vytvořené mohly do JanMapu načíst, bylo třeba vložit do tabulky geometry_columns v PostGIS a MyGIS záznamy (INSERT) o vytvořených tabulkách (postup pro PostGIS viz. kap. 3.4.2). Ukázka kódu v MyGIS:


MkINgeometry_columns: INSERT INTO geometry_columns(

F_TABLE_NAME, F_GEOMETRY_COLUMN, COORD_DIMENSION, SRID, TYPE)

VALUES ('t1', 'geometry', 3, 1, 'POINT');


--------------------------------------------------------------------------------------------------------------------------------------------------------

MkINgeometry_columns je označení kódu, podle kterého jej můžeme najít na CD přiloženému k bakalářské práci. Všechny SQL kódy v této práci jsou označeny stejným způsobem: M – název databáze (M – MyGIS, P – PostGIS, S – SpatiaLite)k(kód)IN – zkratka příkazu (INSERT)geometry_columns

Pro načtení vrstev se vybere z nabídky SOUBOR položka PŘIPOJENÍ KE GEODATABÁZÍM, nastaví se OGR připojení na konkrétní databázi, poté už si stačí jen vybrat, které vrstvy chceme načíst.

Logo systému Janitor

4.2 Quantum GIS (QGIS)

Quantum GIS (QGIS) je uživatelsky přívětivý Open Source geografický informační systém (GIS) pod licencí GNU General Public Licence [21]. QGIS je oficiálním projektem Open Source Geospatial Foundation (OSGeo). Běží na Linux, Unix, Mac OS X a Windows a podporuje řadu vektorových, rastrových a databázových formátů a funkcí.

Základní možnosti programu rozšiřují zásuvné moduly. Pomocí nich se dá například importovat shapefile do PostgreSQL, vytvořit mapfile pro UMN MapServer, připojit si WFS či využít QGIS jako grafické rozhraní pro funkce softwaru GRASS [22]. Lze nahrávat vrstvy z PostGIS a SpatiaLite. Poslední dostupná verze QGIS je 1.4.0 „Enceladus“. Instalační soubory dostupné z http://qgis.org/en/download.html

Logo systému Quantum GIS

Tento software byl používán pro zobrazování vrstev vytvořených v PostGIS a SpatiaLite, a také pro importování shapefilů do databáze PostgreSQL. Pro načtení vytvořených vrstev do QGIS, bylo potřeba do tabulky geometry_columns v PostGIS vložit záznamy (INSERT) o vytvořených tabulkách. Stejnou věc bylo nutné provést i v SpatiaLite.

Ukázky kódů v PostGIS a SpatiaLite:


PkINgeometry_columns: INSERT INTO geometry_columns(

f_table_catalog, f_table_schema, f_table_name, f_geometry_column, coord_dimension, srid, "type")

VALUES ('', 'public', 'T2', 'geometry', 2, -1, 'LINESTRING');



SkINgeometry_columns: INSERT INTO "geometry_columns"

VALUES ('T1', 'geometry', 'POINT', 2, 4156, 0);


Dále už stačilo pouze spustit program, vybrat Přidat vrstvu z PostGIS nebo SpatiaLite, nastavit připojení k databázi, připojit, a poté už jen vybrat z nabídky vrstev tu, kterou chceme zobrazit.

Na obrázku č.13 níže je nástroj pro import shapefilů do databáze PostgreSQL, označen na liště nástrojů jako modrý slon. Po spuštění tohoto nástroje se musí nastavit připojení ke konkrétní databázi a přidat shapefile z pevného disku, který chceme do databáze importovat.

Nástroj na import shapefilů do PostGIS

4.3 FWTools Shell

FWTools je sada open source programů pro geografické informační systémy vytvořená Frankem Warmerdamem (iniciály FW) [8]. Tato sada nástrojů je vyrobena pro platformy Microsoft Windows a Linux a obsahuje několik balíčků (OpenEV, GDAL/OGR, MapServer, PROJ.4, OGDI, Python).

FWTools Shell je nástroj pro řízení dat. Jde o příkazový řádek pro zadávání FWTools příkazů.

Ukázka příkazového řádku FWTools Shell s kódem OGR nástroje ogrinfo

4.4 OpenEV

OpenEV je výkonný open source desktopový prohlížeč. Umožňuje uživatelům zkoumat údaje v některém z obrazových a vektorových datových formátů podporovaných Geospatial Data Abstraction Library (GDAL/OGR).

OpenEV je dobrým příkladem toho, jak jsou GDAL/OGR schopnosti přístupné prostřednictvím jiných programovacích jazyků. OpenEV je založen na užívaní Pythonu, který dělá OpenEV rozšiřitelným a silným, protože má větší flexibilitu tohoto jazyka běžícího za ním [3]. Nejsilnějším rysem OpenEV může být jeho schopnost používat Python schopností v rámci OpenEV, což umožňuje přístup k GDAL/OGR funkcím a mnoho dalších Python modulů, které jsou potřeba.

Software OpenEV s GDAL nástrojem gdal_translate

4.5 GDAL

GDAL (Geospatial Data Abstraction Library) je knihovna určená pro čtení a zápis rastrových GIS formátů. Knihovna je vyvíjena pod hlavičkou Open Source Geospatial Foundation a vydávána pod licencí X/MIT [9]. Knihovna používá jednoduchý abstraktní datový model pro všechny podporované datové formáty. Kromě toho nabízí také řadu užitečných nástrojů pro příkazovou řádku určených pro konverzi a zpracování dat.

Logo knihovny GDAL

GDAL byla původně vyvíjena Frankem Warmerdamem a to do verze 1.3.2, posléze byla tato role oficiálně převedena na GDAL/OGR Project Management Committee, která je součástí Open Source Geospatial Foundation [10]. GDAL je součástí balíčku FWTools.

GDAL (často nazývaný goodle) má tři důležité funkce: 1) podporuje více než 40 různých rastrových formátů. 2) je k dispozici k použití pro další aplikace. Jakékoliv aplikace využívající GDAL knihovny, mají přístup všech podporovaných formátů, takže vlastní programování pro každý požadovaný formát je zbytečné. 3) předkompilované nástroje pomohou využít funkce GDAL programové knihovny, tudíž není třeba napsat svůj vlastní program [3].

GDAL podporuje desítky rastrových formátů, seznam je uveden na webových stránkách GDAL http://www.gdal.org/formats_list.html

PROGRAMOVACÍ KNIHOVNY

Důležitý rys GDAL je jeho dostupnost jako soubor programovacích knihoven. Vývojáři používající různé jazyky, mohou využít výhody GDAL, která jim dává více času soustředit se na jiné úkoly. Vlastní programování pro podporu formátů již k dispozici díky GDAL není nutné: znovu použitelnost je hlavní síla GDAL.

Schopnost přímého spojení s GDAL knihovnami pomohlo přidat nové funkce do řady GISových a vizualizačních programů, komerčních i open source [3]. GDAL internetové stránky uvádí několik projektů, které využívají GDAL, včetně FME, MapServer, GRASS, Quantum GIS, Cadcorp SIS terénu a Virtual Terezin Project.

GDAL NÁSTROJE

4.6 OGR

OGR Simple Features Library je C++ open-source knihovna (a příkazový řádek) poskytující čtení (a někdy i zápis), přístup do různých formátů vektorových souborů včetně ESRI shapefiles, S-57, SDTS, PostGIS, Oracle Spatial, Mapinfo mid/mif a TAB formátů. OGR je součástí knihovny GDAL [16]. OGR je součástí balíčku FWTools.

OGR podporuje více než 16 vektorových formátů, seznam je dostupný na webových stránkách OGR http://www.gdal.org/ogr/ogr_formats.html. OGR obsahuje nástroje podobné GDAL rastrovým nástrojům [3].

OGR je součástí GDAL/OGR projektu.

OGR NÁSTROJE

Stejně jako GDAL, OGR obsahuje sadu knihoven, které mohou být použity v aplikacích. OGR také přichází s několika užitečnými nástroji:

OGR, jako GDAL, pomáhá v přístupu, konverzi a manipulaci s daty, konkrétně vektorových dat. OGR lze použít také se skriptovacími jazyky, což umožňuje programovou práci s daty [3]. GDAL/OGR balíky obvykle přicházejí s OGR moduly pro Python. Kromě Pythonu také existuje podpora Java a C # pro GDAL/OGR.

4.7 shp2pgsql

PostGIS přichází s nástroji pro příkazový řádek s názvem pgsql2shp a shp2pgsql. Ty mohou být použity pro konverzi z PostGIS tabulky do formátu shapefile a zpět.

Nástroj shp2pgsql převádí tvary do textové podoby SQL příkazů. Je nutné předat je do textového souboru pro pozdější načítání nebo je psql příkazem používat okamžitě. Původní nastavení ukládá geometrická data do pole the_geom.

# shp2pgsql silnice_chkobk.shp public.silnice > cesty.sql

# psql -d postgisdatabase -f cesty.sql

Verze PostGIS 1.5 obsahuje shp2pgsql – GUI, který se jmenuje Shape File to PostGIS Importer, kterým se lze jednoduše připojit k databázi PostgreSQL a nahrát do ní vlastní shapefile.

Nástroj pro import shapefilů do PostGIS

5. ULOŽENÍ DAT V GEODATABÁZI

Simple Features jsou OpenGIS standard (verze 1.2.0), který specifikuje digitální ukládání geografických dat (bod, linie, polygon, multi-bod, multi-linie, atd.), jak s prostorovými, tak i s neprostorovými atributy [23]. Simple Features jsou založeny na 2D geometrii s lineární interpolací mezi vrcholy. Obecně platí, že 2D geometrie je jednoduchá, neobsahuje-li překřížení prvku sebe samým. OpenGIS Simple Features specifikace definuje různé prostorové subjekty, které mohou být použity k vytvoření nové geometrie z existující geometrie. Plné znění standardu je dostupné na http://www.opengeospatial.org/standards/sfa.

Definuje dva formáty pro popis geografických dat (WKT a WKB).

5.1 Well-known text

Well-known text (WKT) je textový značkovací jazyk určený pro popis vektorové geometrie geografických objektů, prostorových referenčních systémů, popřípadě transformačních parametrů mezi jednotlivými souřadnicovými systémy.

1] geometrické objekty

Geometrické objekty, které lze pomocí WKT popsat jsou:

Multigeometrické typy dovolují použít v jednom objektu více geometrických typů stejné dimenze. Pro uložení geometrie různých dimenzí slouží kolekce geometrie.

Souřadnice mohou být 2D (x, y), 3D (x, y, z), 4D (x, y, z, m), kde m je hodnota lineárního referenčního systému nebo 2D s hodnotou m (x, y, m). Klíčové slovo EMPTY definuje tzv. "prázdnou" geometrii. Prvek, který neobsahuje žádné lomové body (souřadnice).

Zápis ve formě WKT je často používán v OGC specifikacích, PostGIS například obsahuje funkce pro konverzi geometrie z/do formy WKT.

Příklad geometrie zapsané ve formě WKT:

POINT(6 10)

LINESTRING(3 4,10 50,20 25)

POLYGON((1 1,5 1,5 5,1 5,1 1),(2 2, 3 2, 3 3, 2 3,2 2))

MULTIPOINT(3.5 5.6,4.8 10.5)

MULTILINESTRING((3 4,10 50,20 25),(-5 -8,-10 -8,-15 -4))

MULTIPOLYGON(((1 1,5 1,5 5,1 5,1 1),(2 2, 3 2, 3 3, 2 3,2 2)),((3 3,6 2,6 4,3 3)))

GEOMETRYCOLLECTION(POINT(4 6),LINESTRING(4 6,7 10))

2] prostorové referenční systémy

Prostorový referenční systém obsahuje v zápisu WKT informace o geodetickém datu, geoidu, souřadnicovém systému a kartografickém zobrazení.

WKT je používán řadou GIS aplikací a knihoven, např. ESRI používá WKT ve formátu Shapefile (soubor *.prj).

Příklad definice systému S-JTSK ve formě WKT:


PROJCS["krovak",

GEOGCS["bessel",

DATUM["unknown",

SPHEROID["Bessel_1841",6377397.155,299.1528128],

TOWGS84[570.8,85.7,462.8,4.998,1.587,5.261,3.56]],

PRIMEM["Greenwich",0],

UNIT["degree",0.0174532925199433]],

PROJECTION["Krovak"],

PARAMETER["latitude_of_center",0],

PARAMETER["longitude_of_center",0],

PARAMETER["azimuth",0],

PARAMETER["pseudo_standard_parallel_1",0],

PARAMETER["scale_factor",1],

PARAMETER["false_easting",0],

PARAMETER["false_northing",0],

UNIT["meter",1]]


3] transformace

Formát WKT může popisovat metodu transformace a transformační parametry pro konverzi mezi dvěma prostorovými souřadnicovými systémy.

Databáze podporující WKT: MySQL, PostgreSQL s PostGIS, SQLite s SpatialLite, Oracle, MS SQL Server.

5.2 Well-known binary

Well-known binary (WKB) binární forma používaná pro převod a uložení informací v databázovém systému jako je např. PostGIS. Formát je kontrolován konsorciem Open Geospatial Consortium (OGC) a popsán ve specifikacích Simple Feature Access a Coordinate Transformation Service. Všechny souřadnice se zde ukládají jako hodnoty Double precision (64bitové číslo s plovoucí desetinnou čárkou)

Příklad geometrie zapsané ve formě WKB:

0101000000000000000000F03F000000000000F03F

Hodnota odpovídá hodnotě POINT(1 1) ve formátu WKT.

Pozn. Rastrová data se ukládají jako Binary large object (BLOB), je označení pro datový typ blíže nespecifikovaných binárních dat v databázi. Obvykle se jedná o obrázky, zvukové záznamy nebo jakákoli jiná data, která jinak bývají uložena v samostatných souborech [7]. BLOB je tedy obecný datový typ, který explicitně vyjadřuje, že databáze nemá informace o tom, jak jeho obsah interpretovat. Na rozdíl od jiných datových typů, kdy databáze může číselné a časové údaje poskytovat ve vhodném formátu, případně textové údaje konvertovat do požadované kódové stránky, obsah BLOB položky obdrží klientská aplikace přesně tak, jak byl binárně uložen a o interpretaci se musí postarat sama.

6. JAZYK SQL

Jazyk SQL je standardním neprocedurálním relačním dotazovacím jazykem, podporovaným většinou dostupných databázových systémů. SQL je zkratka anglických slov Structured Query Language (strukturovaný dotazovací jazyk).

Příkazy jazyka SQL obecně umožňují úplnou kontrolu nad systémem řízení báze dat. Podle svého účelu se dělí do následujících skupin:

Pozn. Úlohy v této bakalářské práci se týkají pouze prvních dvou skupin příkazů jazyka SQL.

6.1 Spatial SQL (Prostorové SQL)

Prostorové databáze jsou databáze kombinující konvenční a prostorová data (tedy data vztahující se k poloze objektů, jejich velikosti atd.) [28]. V aplikacích využívajících prostorové informace, jako jsou různé geografické informační systémy (GIS) či CAD/CAM systémy, tedy vznikla potřeba vhodného dotazovacího jazyka, který by umožňoval pokládat:

Použití běžných relačních dotazovacích jazyků pro zpracování dotazů na prostorová data je velmi obtížné, neboť tyto jazyky nemají pro prostorová data žádnou podporu (predikáty, operace) a neměly ani žádný vhodný datový typ (až do vzniku konceptu ADT) a tudíž data musela být ukládána do číselných a řetězcových proměnných, a proto musel uživatel přesně znát strukturu uložení prostorových dat. V některých komerčních systémech se ovšem tento způsob udržel do dneška jen s tím rozdílem, že dnes již obsahují specializované funkce a predikáty pro prostorové operace.

Bylo tedy třeba navrhnout dotazovací jazyk, který by poskytoval jednoduché, intuitivní a snadno použitelné rozhraní pro dotazy i editaci obou druhů dat. Vzhledem k výše uvedenému se jako rozumné jevilo rozšířit funkcionalitu SQL o práci s prostorovými daty.

Tento jazyk byl navržen v r. 1994 J. Egenhoferem, aby odstranil nedostatky konvenčních databázových jazyků. Stejně jako v klasickém SQL se pracuje s příkazy ve formátu SELECT - FROM - WHERE, výsledky dotazů jsou relace.

Spatial SQL neobsahuje funkcionalitu pro editování dat.

PROSTOROVÁ DOMÉNA

K doménám SQL byla přidána nová doména "spatial" (prostorový) pro zajištění vysoké úrovně abstrakce prostorových dat [28]. K této doméně patří řada prostorových operací a predikátů, které budou zmíněny později. Zmíněná doména se dělí ještě na 4 poddomény "spatial_0", "spatial_1", " spatial_2", "spatial_3" pro objekty příslušných dimenzí (tedy spatial_0 pro 0-rozměrné objekty - body, atd.).

Atribut z domény spatial se nazývá spatial atribut (prostorový atribut) a relace s tímto atributem spatial relation (prostorová relace).

PROSTOROVÉ OPERACE

Prostorové operace můžeme chápat jako funkce na prostorových objektech. Můžeme je rozdělit na:

Prostorové operátory se zapisují v prefixové notaci - jako funkce (př. distance(potok.geometry, silnice.geometry) ). Operátory se mohou vyskytnout v SELECT klauzuli, či v libovolné WHERE klauzuli jako část neprostorového predikátu. Tedy mohou se v dotazech používat na stejných místech jako agregační funkce.

PROSTOROVÉ PREDIKÁTY

Prostorové predikáty (spatial relationships) jsou relace (v matematickém smyslu) mezi dvěma prostorovými atributy - jejich výsledkem je tedy Boolean hodnota a mohou být přímo použity jako predikáty v klauzuli WHERE. Tyto predikáty se zapisují stejně jako ostatní v SQL - infixově; jsou definovány přímo nad generalizovanou doménou spatial.

DEFINICE TABULEK S PROSTOROVÝMI DATY

Obdobně jako v klasickém SQL.

Příklad 1. - definice tabulky mesta s řetězcovým atributem jmeno a prostorovým obsazenyProstor (zde město chápeme jako 2D objekt).


CREATE TABLE mesta(

jmeno CHAR(20)

obsazenyProstor spatial_2);


Příklad 2. - Může být užitečné definovat město jako mnohoúhelník (obsazenyProstor) na podrobných mapách, nebo jako bod (poloha) na méně podrobných.


CREATE TABLE city(

jmeno char(20)

obsazenyProstor spatial_2

poloha spatial_0);


VÝBĚR UKÁZÁNÍM – PREDIKÁT PICK

Predikát PICK umožňuje uživateli formulovat dotazy s referencí na prostorové objekty viditelné na obrazovce. Tento predikát může kvalifikovat každý prostorový atribut ve WHERE klausuli. Sémantika výběru závisí na prostorové dimenzi cíle - při odkazování na objekty vykreslené v 2D plánu. Cílem je buď 0 či 1-rozměrný objekt nejblíže ukázání a nebo 2D objekt, který místo ukázání obsahuje.

Nejasnosti jsou řešeny dle toho, jaký typ objektu uživatel v dotazu používá. Jsou-li dva objekty požadovaného typu od ukázání stejně daleko (řídký případ), je uživateli nabídnut seznam možností, ze kterého může zvolit.

Příklad 1. - mapa států s hranicemi a velkými městy (tyto znázorněny body), uživatel se ptá na jméno města na které kliknul.


SELECT jmeno

FROM mesta

WHERE poloha = PICK;


Příklad 2. - ukáže-li uživatel na stejné místo a zadá následující dotaz, dostane název příslušného státu.


SELECT jmeno

FROM staty

WHERE poloha = PICK;


© Libor KIMPL | Bakalářská práce | Vedoucí práce: RNDr. Vilém Pechanec, Ph.D. | Katedra Geoinformatiky UP Olomouc | 2010