Top Banner
Analýza možností SŘBD PostgreSQL / PostGIS pro vytvoření datového skladu v prostředí GIS Jaromír Kamler Vedoucí: Antonín Orlík
26

Analýza možností SŘBD PostgreSQL / PostGIS pro vytvoření datového skladu v prostředí GIS

Jan 15, 2016

Download

Documents

Sven

Analýza možností SŘBD PostgreSQL / PostGIS pro vytvoření datového skladu v prostředí GIS. Jaromír Kamler. Vedoucí: Antonín Orlík. ÚVOD. Trend ukládat geo data do rela čních databází Důvody: Centralizace dat (řízení přístupu, aktuálnost) Sjednocení grafických a popisných atributů - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Analýza možností SŘBD  PostgreSQL / PostGIS pro  vytvoření datového skladu  v prostředí GIS

Analýza možností SŘBD PostgreSQL / PostGIS pro

vytvoření datového skladu v prostředí GIS

Analýza možností SŘBD PostgreSQL / PostGIS pro

vytvoření datového skladu v prostředí GIS

Jaromír Kamler

Vedoucí: Antonín Orlík

Page 2: Analýza možností SŘBD  PostgreSQL / PostGIS pro  vytvoření datového skladu  v prostředí GIS

ÚVODÚVOD

> Trend ukládat geodata do relačních databází> Důvody:

• Centralizace dat (řízení přístupu, aktuálnost)• Sjednocení grafických a popisných atributů • Definice souřadnicového systému• Možnost využití funkcí definovaných v databázi pro složité

prostorové operace s daty> Možné prostředky:

Page 3: Analýza možností SŘBD  PostgreSQL / PostGIS pro  vytvoření datového skladu  v prostředí GIS

Cíl práceCíl práce

> Testovat a zhodnotit možnosti SŘBDPostgreSQL/PostGIS pro práci s geodaty

> Úkoly:• Seznámení s PostgreSQL/PostGIS • Testování importu / exportu geodat do PostgreSQL,

komunikace s různými programovými prostředky• Možnosti správy dat, uživatelů a skupin, nastavování práv• Možnosti využití funkcí PostGIS• Indexace, porovnání časové náročnosti dotazů s použitím

indexace a bez ní

Page 4: Analýza možností SŘBD  PostgreSQL / PostGIS pro  vytvoření datového skladu  v prostředí GIS

PostgreSQL / PostGIS 1/2 PostgreSQL / PostGIS 1/2

> RDBMS PostgreSQL:• Open-source produkt• Dodržování standardů SQL92 a SQL99• Možnost rozšiřování např. o nové:

– Datové typy– Funkce (C, Perl, Python, PL/pgSQL)– Operátory– Tvorba triggerů

> Možnost instalace na GNU/Linux i MS Windows

Page 5: Analýza možností SŘBD  PostgreSQL / PostGIS pro  vytvoření datového skladu  v prostředí GIS

PostgreSQL / PostGIS 2/2 PostgreSQL / PostGIS 2/2

> PostGIS:• Rozšíření databázového systému PostgreSQL• Dodržování standardu OGC• Přidává nové funkce a datové typy pro ukládání prostorových dat• Přidává nové tabulky pro definování prostorových dat

Page 6: Analýza možností SŘBD  PostgreSQL / PostGIS pro  vytvoření datového skladu  v prostředí GIS

Definice souřadnicového systému S-JTSK

Definice souřadnicového systému S-JTSK

Page 7: Analýza možností SŘBD  PostgreSQL / PostGIS pro  vytvoření datového skladu  v prostředí GIS

Oprava definice S-JTSKOprava definice S-JTSK

> Oprava definice S-JTSK v knihovně proj4

> Aplikace patche na soubor PJ_krovak.c ve zdrojových kódech proj4

> Kompilace zdrojových kódů nebo tvorba balíčku

Page 8: Analýza možností SŘBD  PostgreSQL / PostGIS pro  vytvoření datového skladu  v prostředí GIS

Transformace z S-JTSK do WGS-84 s opravou knihovny proj4

Transformace z S-JTSK do WGS-84 s opravou knihovny proj4

Page 9: Analýza možností SŘBD  PostgreSQL / PostGIS pro  vytvoření datového skladu  v prostředí GIS

Import / export dat do PostgreSQLImport / export dat do PostgreSQL

> ogr2ogr• Součást knihovny OGR

– Schopnost práce s 25 datovými formátybash-3.00$ ogr2ogr -f PostgreSQL PG:'dbname=kam038 user=kam038 password=***' silnice.shp

> shp2pgsql / pgsql2shpbash-3.00$ shp2pgsql -s 102065 ulice.shp ulicePoruba kam038 | psql -d kam038

> SQLINSERT INTO MySpatialTable (nazev, the_geom) VALUES('polygon', GeometryFromText('POLYGON((0 0 0,4 0 0,4 4 0,0 4 0,0 00),(1 1 0,2 1 0,2 2 0,1 2 0,1 1 0))'));

Page 10: Analýza možností SŘBD  PostgreSQL / PostGIS pro  vytvoření datového skladu  v prostředí GIS
Page 11: Analýza možností SŘBD  PostgreSQL / PostGIS pro  vytvoření datového skladu  v prostředí GIS

Funkce pro prostorové dotazyFunkce pro prostorové dotazy

> PostGIS rozšiřuje možnosti práce s daty o prostorové dotazy.

> Funkce typu:• Boolean

Touches(),Intersects(),Contains(), ...• Constructive

Diference(),Union(),Buffer(), ...

Page 12: Analýza možností SŘBD  PostgreSQL / PostGIS pro  vytvoření datového skladu  v prostředí GIS

Města ve vzdálenosti 15 km od PrahyCREATE TABLE near_city_p AS SELECT * FROM sidlacr_p WHERE distance(the_geom, praha.the_geom) < 15000;

Page 13: Analýza možností SŘBD  PostgreSQL / PostGIS pro  vytvoření datového skladu  v prostředí GIS

Zjednodušení říční sítěkam038=# CREATE TABLE simplified_rivers AS SELECT

simplify(the_geom,0.5) FROM rivers;

Page 14: Analýza možností SŘBD  PostgreSQL / PostGIS pro  vytvoření datového skladu  v prostředí GIS

Indexace tabulekIndexace tabulek

> B-tree - základní typ indexu– Nejvíce urychluje operace <, <=, =, >=, >, LIKE, …

> Hash - nejpomalejší na vytvoření. – Rychlý při porovnávání řetězců (hashů), pouze pro operátor =

> GiST (zobecněný vyhledávací strom) –– Jedná se o rozšiřitelnou strukturu, která sdružuje mezi jinými

vlastnosti B-trees a R-trees

> R-tree – index pro geometrická data. – Pro operátory: @, ~= , &&, …

Page 15: Analýza možností SŘBD  PostgreSQL / PostGIS pro  vytvoření datového skladu  v prostředí GIS

IndexyIndexy

> VytvářeníCREATE [UNIQUE] INDEX jmeno ON tabulka [USING typ_indexu] (sloupec)

> RušeníDROP INDEX jmeno

> Nutnost použití VACUUM ANALYZE

> Při vkládání velkého množství dat může vytížením reindexací dojít k přerušení transakce

Page 16: Analýza možností SŘBD  PostgreSQL / PostGIS pro  vytvoření datového skladu  v prostředí GIS

Dotaz na geometrická dataDotaz na geometrická data

Page 17: Analýza možností SŘBD  PostgreSQL / PostGIS pro  vytvoření datového skladu  v prostředí GIS

Kombinovaný dotazKombinovaný dotaz

Page 18: Analýza možností SŘBD  PostgreSQL / PostGIS pro  vytvoření datového skladu  v prostředí GIS

Programové prostředky komunikující s PostgreSQL 1/2

Programové prostředky komunikující s PostgreSQL 1/2

> GRASS• Nutnost importu dat do nativní podoby GRASS

GRASS 6.0.0 (cvicna):~ > v.in.ogr -o dsn='PG:host=postgis.vsb.cz user=kam038 password=*** dbname=kam038' output=nhpn_grass layer=nhpn

> ArcGIS • Pomocí extense „data interoperability“ v ArcCatalog• Problém s PostGIS v. 1.x

– Důvodem je změna interního ukládání dat v PostgreSQL z WKT na WKB– Odstranění problému pomocí instalace FME rozšíření ArcCatalogu

Page 19: Analýza možností SŘBD  PostgreSQL / PostGIS pro  vytvoření datového skladu  v prostředí GIS

Programové prostředky komunikující s PostgreSQL 2/2

Programové prostředky komunikující s PostgreSQL 2/2

> Quantum GIS• Načítání vrstev z ESRI Shapefile a PostGIS, rastry

> UMN Mapserver• Načítání vrstev z Oracle, MySQL, PostGIS, ESRI

Shapefile, …> UDIG

• Načítání vrstev z PostGIS, DB2, WFS, WMS, ESRI Shapefile a rastrové soubory

Page 20: Analýza možností SŘBD  PostgreSQL / PostGIS pro  vytvoření datového skladu  v prostředí GIS
Page 21: Analýza možností SŘBD  PostgreSQL / PostGIS pro  vytvoření datového skladu  v prostředí GIS

> Definice přístupových práv:• Celé databázi (CREATE)• Tabulkám (SELECT, INSERT, UPDATE, DELETE, RULE, REFERENCES, TRIGGER)

• Jednotlivým sloupcům v tabulce• Funkcím (EXECUTE)• Jazykům

Přístupová právaPřístupová práva

Page 22: Analýza možností SŘBD  PostgreSQL / PostGIS pro  vytvoření datového skladu  v prostředí GIS

Tvorba funkcí v PL/pgSQL 1/2Tvorba funkcí v PL/pgSQL 1/2

> Nutnost definice jazyka v databázi:bash-3.00$ createlang plpgsql mojedb

> Rychlost interních funkcí způsobená předchozím vytvořením prováděcího plánu

> Využívání SQL a funkcí definovaných uživatelem

Page 23: Analýza možností SŘBD  PostgreSQL / PostGIS pro  vytvoření datového skladu  v prostředí GIS

Tvorba funkcí v PL/pgSQL 2/2Tvorba funkcí v PL/pgSQL 2/2

CREATE OR REPLACE FUNCTION incid() RETURNS void AS $$

DECLARE

a RECORD; b RECORD;

c boolean;

BEGIN

FOR a IN SELECT id FROM public.line LOOP

FOR b IN SELECT id FROM public.line WHERE id <> a.id LOOP

SELECT INTO c touches((SELECT the_geom FROM line WHERE id=a.id), (SELECT the_geom FROM line WHERE id=b.id));

IF c = true THEN

RAISE NOTICE 'linie % navazuje na %', a.id, b.id;

END IF;

END LOOP;

END LOOP;

END;

$$ LANGUAGE PLPGSQL;

Page 24: Analýza možností SŘBD  PostgreSQL / PostGIS pro  vytvoření datového skladu  v prostředí GIS

Tvorba spouštěčů (trigger)Tvorba spouštěčů (trigger)

> Nástroj zajišťující automatické provedení funkce před nebo po vložení, zrušení nebo změně záznamu v tabulce

> Trigger může volat libovolnou funkci vracející datový typ trigger

> Definice triggeru:CREATE TRIGGER nazev { BEFORE | AFTER } { udalost [ OR ... ] } ON tabulka [ FOR [ EACH ] { ROW | STATEMENT } ] EXECUTE PROCEDURE nazev_funkce ( argumenty )

Page 25: Analýza možností SŘBD  PostgreSQL / PostGIS pro  vytvoření datového skladu  v prostředí GIS

ZÁVĚREČNÉ ZHODNOCENÍZÁVĚREČNÉ ZHODNOCENÍ

- relativně malá podpora komerčních systémů

+/- podpora ukládání rastrů – unstable PGCHIP

+ vysoká rozšiřitelnost

+ standardy OGC

+ transparentnost

+ zadarmo

Page 26: Analýza možností SŘBD  PostgreSQL / PostGIS pro  vytvoření datového skladu  v prostředí GIS

Děkuji za pozornostDěkuji za pozornost