JAK KOMUNIKOVAT S DATABÁZÍ PostGIS TUTORIAL

Podobné dokumenty
ČVUT Fakulta stavební NÁZEV ÚLOHY: Projekt. Úvod do zpracování prostorových dat OBOR GEOINFORMATIKA ČÍSLO ÚLOHY:

D O K U M E N T A C E

DOKUMENTACE. Úvod do zpracování prostorových dat (153UZPD) PROJEKT

FAKULTA STAVEBNÍ STUDIJNÍ PROGRAM: GEODÉZIE A KARTOGRAFIE TYP PROGRAMU: MAGISTERSKÝ STUDIJNÍ OBOR: GEOMATIKA ÚVOD DO ZPRACOVÁNÍ PROSTOROVÝCH DAT

Návrh a tvorba WWW stránek 1/14. PHP a databáze

Databázové systémy Cvičení 5.2

Semestrální projekt. Skupina E. Úvod do zpracování prostorových dat

Úvod do databázových systémů

Úvod do databázových systémů 3. cvičení

Úvod do zpracování prostorových dat. Anna Kratochvílová

KIV/ZIS cvičení 5. Tomáš Potužák

B0M33BDT Technologie pro velká data. Supercvičení SQL, Python, Linux

Databáze I. Přednáška 4

Informační systémy ve zdravotnictví. 10. cvičení

2. blok část B Základní syntaxe příkazů SELECT, INSERT, UPDATE, DELETE

U koly na procvic ení jazyka T-SQL

Databázové systémy I

Databázové systémy. Cvičení 6: SQL

Informační systémy 2008/2009. Radim Farana. Obsah. Dotazy přes více tabulek

ÚVOD DO ZPRACOVÁNÍ PROSTOROVÝCH DAT SEMESTRÁLNÍ PROJEKT DOKUMENTACE SKUPINA E MICHAL KARÁSEK

Základní přehled SQL příkazů

PostGIS. Luboš Hejduk, Petr Sedlář 2007

Kurz Databáze. Obsah. Dotazy. Zpracování dat. Doc. Ing. Radim Farana, CSc.

KIV/ZIS - SELECT, opakování

Databázové systémy. - SQL * definice dat * aktualizace * pohledy. Tomáš Skopal

PG 9.5 novinky ve vývoji aplikací

Semestrální práce z DAS2 a WWW

Univerzita Palackého v Olomouci Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 10.4.

Informační systémy 2008/2009. Radim Farana. Obsah. Jazyk SQL

Jaký je rozdíl v definicicíh VARCHAR2(20 BYTE) a VARCHAR2(20 CHAR):

Jazyk SQL databáze SQLite. připravil ing. petr polách

KIV/ZIS cvičení 6. Tomáš Potužák

GEOGRAFICKÉ INFORMAČNÍ SYSTÉMY CVIČENÍ 4

SQL SQL-SELECT. Informační a znalostní systémy. Informační a znalostní systémy SQL- SELECT

Osnova je orientační pro FIT, u FEKTu se dá předpokládat, že budou zohledněny předchozí znalosti studentů, kde většina s databází nikdy přímo

Obchodní akademie a Jazyková škola s právem státní jazykové zkoušky Jihlava

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

MySQL sežere vaše data

Databáze. Velmi stručný a zjednodušený úvod do problematiky databází pro programátory v Pythonu. Bedřich Košata

VYSOKÁ ŠKOLA BÁŇSKÁ TECHNICKÁ UNIVERZITA OSTRAVA HORNICKO GEOLOGICKÁ FAKULTA INSTITUT GEOINFORMATIKY. Prostorové databáze

Databáze SQL SELECT. David Hoksza

PostGIS Topology. Topologická správa vektorových dat v geodatabázi PostGIS. Martin Landa

Západočeská univerzita v Plzni Katedra informatiky a výpočetní techniky. 9. června krovacek@students.zcu.cz

Databázové systémy I

- sloupcové integritní omezení

InnoDB transakce, cizí klíče, neumí fulltext (a nebo už ano?) CSV v textovém souboru ve formátu hodnot oddělených čárkou

Úvod do zpracování prostorových dat. Semestrální projekt DOKUMENTACE

Tvorba aplikací v Oracle Application Express

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

Úvod do databází. Modelování v řízení. Ing. Petr Kalčev

GEOGRAFICKÉ INFORMAČNÍ SYSTÉMY CVIČENÍ 9

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

MS Access Dotazy SQL

Materiál ke cvičením - SQL

SQL v14. 4D Developer konference. 4D Developer conference 2015 Prague, CZ Celebrating 30 years

Databáze 2011/2012 SQL DDL (CREATE/ALTER/DROP TABLE), DML (INSERT/UPDATE/DELETE) RNDr.David Hoksza, Ph.D.

KIV/ZIS - SQL dotazy. stáhnout soubor ZIS- 04_TestovaciDatabaze accdb. SQL dotazy. budeme probírat pouze SELECT

Instalace. Produkt je odzkoušen pro MS SQL server 2008 a Windows XP a Windows 7. Pro jiné verze SQL server a Windows nebyl testován.

Inovace a zkvalitnění výuky prostřednictvím ICT Databázové systémy MySQL základní pojmy, motivace Ing. Kotásek Jaroslav

Úvod do databázových systémů

Vzorové příklady SQL. Tabulka: Kniha CREATE TABLE kniha (id INTEGER, název VARCHAR(50), PRIMARY KEY (id))

Návod k aplikaci SQL Tools v.2.3

Databázové systémy. Doc.Ing.Miloš Koch,CSc.

3. přednáška z předmětu GIS1 atributové a prostorové dotazy

SPŠS Č.Budějovice Obor Geodézie a Katastr nemovitostí 3.ročník ATRIBUTY ZÁKLADN POJMY VÝBĚR PRVKŮ DLE ATRIBUTŮ

FAKULTA STAVEBNÍ OBOR GEOINFORMATIKA KATEDRA MAPOVÁNÍ A KARTOGRAFIE DOKUMENTACE ÚVOD DO ZPRACOVÁNÍ PROSTOROVÝCH DAT SEMESTRÁLNÍ PROJEKT

Inovace a zkvalitnění výuky prostřednictvím ICT. Základní seznámení s MySQL Ing. Kotásek Jaroslav

PostgreSQL. Podpora dědičnosti Rozšiřitelnost vlastní datové typy. Univerzální nasazení ve vědecké sféře

12. blok Pokročilé konstrukce SQL dotazů - část II

Boučí. Kategorie. Kritéria. Přehledná mapa přispívající plochy. KONEČNÁ VERZE - výstupy kompletního projektu

INDEXY JSOU GRUNT. Pavel Stěhule

Kurz Databáze. Přechod na SQL server. Obsah. Vytvoření databáze. Lektor: Doc. Ing. Radim Farana, CSc.

Úvod do databázových systémů

DB1 cvičení 4 spojení tabulek a složitější dotazy

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

TEORIE ZPRACOVÁNÍ DAT Cvičení 8

6. SQL složitější dotazy, QBE

Tabulka fotbalové ligy

SQL. strukturovaný dotazovací jazyk. Structured Query Language (SQL)

MS SQL Server 2008 Management Studio Tutoriál

Internetová filmová databáze IFDB

Geografické informační systémy. Databázové systémy pro GIS

Úvod do databázových systémů

Vysoká škola báňská - Technická univerzita Ostrava Institut geoinformatiky Prostorové databáze Zápočtová úloha Užití prostorových operátorů v Oracle

Databázové systémy Cvičení 5

Dotazování v relačním modelu a SQL

Co bude výsledkem mého SELECTu? RNDr. David Gešvindr MVP: Data Platform MCSE: Data Platform MCSD: Windows Store MCT

Křižovatka. Kategorie. Kritéria. Přehledná mapa přispívající plochy. KONEČNÁ VERZE - výstupy kompletního projektu

Databázové systémy. Datová integrita + základy relační algebry. 4.přednáška

Databáze I. Přednáška 6

Řešené příklady STUDENT(RČ, JMÉNO, SPECIALIZACE) PŘEDMĚT(KÓD, NÁZEV, SYLLABUS, GARANT) ZÁPIS(RČ, KÓD, SEMESTR, ZNÁMKA)

RNDr. Michal Kopecký, Ph.D. Department of Software Engineering, Faculty of Mathematics and Physics, Charles University in Prague

Programování v jazyku C# II. 5.kapitola

Stored Procedures & Database Triggers, Tiskové sestavy v Oracle Reports

Nastavení propojení s eshopem

Informační systémy ve zdravotnictví. 6. cvičení

SII - Informatika. 1. Atribut relace, jehož hodnota jednoznačně určuje prvek v jiné relaci, se nazývá:

Object-relational mapping (JPA, Hibernate)

Virtual private database. Antonín Steinhauser

Databáze I. 1. přednáška. Helena Palovská

Transkript:

JAK KOMUNIKOVAT S DATABÁZÍ PostGIS TUTORIAL

Obsah: 1. Úvod 3 2. Vrstvy 4 3. Základní ovládací příkazy 5 4. Stručný popis použitých funkcí 7 5. Dotazy 8 5.1. Atributové dotazy 8 5.2. Prostorové dotazy 9 6. Závěr 19 2

1. Úvod V tomto tutoriálu bychom vás rádi seznámili s tvorbou atributových a prostorových dotazů. Pro tento účel byla vytvořena databáze pgis_osm, do které jsme nahráli tématické vrstvy ze serveru www.openstreetmap.org. Pracovat budete se schématy e10. a f10., které jsme vytvořili. Jak byly tyto vrstvy nahrány se dočtete v naší dokumentaci na stránkách http://josef.fsv.cvut.cz/~knobljan/uzpd/dokumentace.doc. Některé vytvořené dotazy jsou pro názornější ukázku zobrazeny v programu Quantum GIS. 3

2. Vrstvy V našich dotazech budete pracovat se schématy e10. a f10.. Vrstvy v schématu f10. jsou validizované, vrstvy v schématu e10. bohužel nejsou. zeleznice obce_body sportoviste sportoviste_body vodni_toky lesni_porosty military_plg Schema e10. vrstvy: linie body polygony body linie Schema f10. vrstvy: polygon polygon 4

3. Základní ovládací příkazy 3.1. Vstup do databáze Jste-li přihlášeni na serveru josef, do databáze se přihlásíte pomocí příkazu: psql pgis_osm 3.2. Výpis prvků v databázi Pro výpis vrstev obsažených např. ve schématu e10. použijte příkaz: \dt e10. Pro výpis tabulky např. zeleznice použijte příkaz: \d e10.zeleznice Vypíše se vám seznam atributů a jejich typ. Pro prostorové dotazy je důležité, že každá vrstva obsahuje sloupec(column) way, který je typu geometry. Tento sloupec obsahuje prostorové informace, díky kterým lze určit souřadnice bodů, délku, výměru atd. 3.3. Nalezení chyby v databázi Provedeme-li příkaz a PostGIS nám hlásí chybu, lze najít chybu pomocí příkazu: EXPLAIN SELECT 3.4. Ovládání programu Quantum GIS Program Quantum GIS spustíte příkazem: qgis Pro připojení k databázi PostGIS je nutné otevřít pole Create a New PostGIS connection: name: student database: pgis_osm username: OOOOOOO password: OOOOOOO a připojit se. Pro zobrazení požadovaného selectu je nutné vytvořit novou tabulku příkazem: CREATE TABLE jmeno_tabulky AS. následuje požadovaný SELECT 5

Např.: Dotaz: Najděte sportoviště, kde se hraje fotbal: Vytvoření tabulky s fotbalovými hřišti: CREATE TABLE e10.fot_hr AS SELECT * FROM e10.sportoviste WHERE sport LIKE %football% ; Dále je nutné přiřadit tabulce primární klíč příkazem: ALTER TABLE e10.fot_hr ADD PRIMARY KEY(osm_id; Nyní je možné tabulku zobrazit v Quantum GISu. Pozn.: Jedná se o přiblížení na skupinu hřišť, protože polygony hřišť jsou malé a při zobrazení celé republiky je výsledek dotazu nevýrazný. 6

4. Stručný popis použitých funkcí ORDER BY column řadí data dle zadaného sloupce, může mít parametr ASC vzestupně, DESC sestupně GROUP BY column třídí a seskupuje data dle zadaného sloupce LIMIT x omezí výběr na prvních x záznamů COUNT počítá počet záznamů SUM sčítá hodnoty v záznamech ST_Area(geometry) počítá výměru polygonové vrstvy, jejím parametrem je atribut geometrie dané tabulky ST_DWithin (geometry1, geometry2, num) zkoumá zda položky ve vrstvě 1 jsou do vzdálenosti (zadané číslem num) od položek ve vrstvě 2, pokud nevyhovují dane podmínce, jejich id má hodnotu NULL ST_Length(geometry) počítá délku geometrického atributu tabulky ST_AsText(geometry) přepíše hodnotu geometrického atributu tabulky do textu ST_Intersects(geometry1, geometry2) zkoumá zda se položky ve vrstvě 1 protínají s položkami ve vrstvě 2, pokud položky ve vrstvě 1 protnou položky ve vrstvě 2 vícekrát, jsou také vícekrát uvedeny ve výsledném selectu ST_X(geometry), ST_Y(geometry), ST_Z(geometry) vrací danou souřadnici geometrie ST_Distance(geometry1, geometry2) vrací délku mezi geometriemi dvou bodů (nelze použít pro výpočet vzdáleností všech záznamů v tabulce od určitého bodu 7

5. Dotazy 5.1 Atributové dotazy 5.1.1 Určete nejmenší sportoviště(osm_id) v ČR podle rozlohy: SELECT osm_id FROM e10.sportoviste ORDER BY way_area LIMIT 1; Odpověď:osm_id = 43896824 5.1.2 Kolik je celkem sportovišť v ČR: SELECT COUNT(*) FROM e10.sportoviste; Odpověď:count = 1497 5.1. 3 Kolik je v ČR hřišť na fotbal? SELECT COUNT(*) FROM e10.sportoviste WHERE sport LIKE '%football%'; Odpověď: count = 111 5.1.4 Kolik je obcí začínajících na A nebo Z? SELECT count(*) FROM e10.obce_body WHERE name LIKE 'A%' OR name LIKE 'Z%'; Odpověď: count = 341 obci 5.1.5 Kolik je v ČR Lhot a Lhotek (např. Červená Lhota, Lhotka u Radnic...)? SELECT count(osm_id) FROM e10.obce_body WHERE name LIKE '%Lhota%' OR name LIKE '%Lhotka%'; Odpověď: count = 133 Lhot a Lhotek 5.1.6 Kolik je měst s více než 100 000 obyvateli? SELECT count(*) FROM e10.obce_body WHERE place = 'city'; Odpověď : count = 10 8

5.2 Prostorové dotazy 5.2.1 Kolik sportovišt v ČR (bodová vrstva) je dál než 8 km od nejbližší železnice? SELECT COUNT(DISTINCT sportoviste_body.osm_id) FROM e10.sportoviste_body AS sportoviste_body LEFT JOIN e10.zeleznice AS zeleznice ON ST_DWithin(sportoviste_body.way, zeleznice.way, 8e3) WHERE zeleznice.gid IS NULL; Odpověď: count = 16 Zobrazení v QGISu: 5.2.2 Kolik vodních toků v ČR protíná železnice? SELECT COUNT(DISTINCT vodni_toky.osm_id) FROM e10.vodni_toky AS vodni_toky JOIN e10.zeleznice AS zeleznice ON ST_Intersects(zeleznice.way, vodni_toky.way); Odpověď : count = 813 9

Zobrazení v QGISu: 5.2.3 Kolik vodních toků v ČR protéká lesem? SELECT COUNT(DISTINCT vodni_toky.osm_id) FROM e10.vodni_toky AS vodni_toky JOIN f10.lesni_porosty AS porosty ON ST_Intersects(porosty.way, vodni_toky.way); Odpověď: count = 2047 5.2.4 Které vojenské prostory jsou větší než 10 km 2 SELECT COUNT(osm_id), name FROM f10.military_plg WHERE ST_Area(f10.military_plg.way)> 1e7; Odpověď: name ------------------------- Vojenský újezd Hradiště Vojenský újezd Brdy Vojenský újezd Boletice Vojenský újezd Březina Vojenský újezd Libavá (5 rows) 10

Zobrazení v QGISu: 5.2.5 Kolik obcí v ČR je v lese? SELECT COUNT(*) FROM e10.obce_body AS obce JOIN f10.lesni_porosty AS lesy ON ST_Within(obce.way, lesy.way); Odpověď: count = 180 Zobrazení v Qgisu: 11

5.2.6 Kolik je lezeckých centrer, která jsou do 2 km od železnice a 1 km od vodního toku? CREATE VIEW e10.lezeni AS SELECT osm_id, name, leisure, sport, way FROM e10.sportoviste_body WHERE sport='climbing'; SELECT COUNT(DISTINCT lez.osm_id) FROM e10.lezeni AS lez JOIN e10.zeleznice AS zel ON ST_DWithin(lez.way, zel.way, 2e3) JOIN e10.vodni_toky AS toky ON ST_DWithin(lez.way, toky.way, 1e3); Odpověď: count=7 5.2.7 Určete délku Labe (sečtěte délku úseku označených jako Labe). SELECT (SUM(ST_Length(way))/1000)::int AS labe_km FROM e10.vodni_toky WHERE name = Labe GROUP BY name; Odpověď: labe_km = 575 Zobrazení v QGISu: 12

5.2.8. Vyberte všechna sportoviště - body, které se nacházejí ve vzdálenosti do 10 km od nejdelšího úseku řeky Labe a určete jejich souřadnice. SELECT name, ST_AsText(way) FROM e10.sportoviste_body WHERE ST_Distance((SELECT way FROM e10.vodni_toky WHERE name = 'Labe' ORDER BY ST_Length(way) DESC LIMIT 1), way) < 10000; Odpověď: name st_astext -----------------+------------------------------------------ Slavín POINT(1586516.74439325 6518503.00524588) POINT(1586758.66391064 6520367.95378401) POINT(1586852.62869282 6520236.95582516) Roudnický bazén POINT(1587397.20364178 6521302.15848799) POINT(1608811.73408568 6517934.35485988) BB Bar POINT(1615552.04019762 6490900.63872238) POINT(1616392.76951989 6491244.43557373) POINT(1616502.95355188 6491460.41936927) count = 8 Zobrazení v QGISu: 13

5.2.9 Najděte nejzápadnější obci v ČR. SELECT nazev, ST_X(obce_body.way) AS xx FROM e10.obce_body AS points ORDER BY xx ASC LIMIT 1; Odpověď: name xx -------- +------------------ Trojmezí 1352110.55792121 Zobrazení v QGISu: 5.2.10 Vypište vzdálenost (v km) mezi zájmovými místy Ostrava a Liberec. SELECT (ST_Distance((SELECT way FROM e10.obce_body WHERE name = 'Ostrava'), (SELECT way FROM e10.obce_body WHERE name = 'Liberec'))/1e3)::int FROM e10.obce_body WHERE name = 'Ostrava'; Odpověď: int4 ------ 394 14

5.2.11 Vyhledejte lezecké oblasti, které jsou do 20 km od některého z 5 největších vojenských prostorů. CREATE VIEW e10.velky_vojensky AS SELECT osm_id,st_area(f10.military_plg.way) AS plocha, way FROM f10.military_plg ORDER BY plocha DESC LIMIT 5; CREATE VIEW e10.lezeni AS SELECT osm_id, name, leisure, sport, way FROM e10.sportoviste_body WHERE sport='climbing'; SELECT lez.name FROM e10.lezeni AS lez JOIN e10.velky_vojensky AS voj ON ST_DWithin(lez.way, voj.way, 20e3); Zobrazení v QGISu: Odpověď: name -------------------- domoradice rock #7 15

5.2.12 Jak daleko je lezecká stěna Mammut od nejmenšího tenisového hřiště? SELECT (ST_Distance((SELECT way FROM e10.sportoviste_body WHERE name = 'Mammut'), (SELECT way FROM e10.sportoviste ORDER BY ST_Area(way) LIMIT 1 ))/1e3)::int ; Odpověď: int4 ------ 118 (1 row) 5.2.13 Jak velkou plochu dohromady zabírá 10 největších lesních ploch (v km 2 )? SELECT sum(plocha) FROM (SELECT ST_Area(f10.lesni_porosty.way)/1e6 AS plocha FROM f10.lesni_porosty ORDER BY plocha DESC LIMIT 10) AS plochy; Odpověď: 4391 km2 Zobrazení v QGISu: 16

5.2.14 Kolik vodních toků v ČR protíná sportoviště? SELECT COUNT(DISTINCT vodni_toky.osm_id) FROM e10.vodni_toky AS vodni_toky JOIN e10.sportoviste AS sportoviste ON ST_Intersects(sportoviste.way, vodni_toky.way); Odpověď: count = 12 Zobrazení v Qgisu: Pozn.: Detail protnutí sportoviště řekou Jesenčanka 17

6. Závěr Doufáme, že přehled námi použitých dotazů byl pro vás přehledný a užitečný. V případě nějakých nesrovnalostí nebo dotazů nás kontaktujte na e-mailu: pjin2009f[at]seznam.cz Skupina E: V Praze dne 12.5.2010 Karolína Štochlová Simona Karochová Ondřej Pospíšil Jana Knoblochová 18