Databáze v geoinformatice VII.
Mgr. Michal Jakl
ZS 2025
Obsah lekce
Praktické cvičení:
Procvičování PostGISu a propojení s QGISem
0. Datové typy II. – geometry()
Zdroj: https://towardsdatascience.com/spatial-data-science-with-postgresql-geometries-c00387755700
CREATE TABLE test (id serial PRIMARY KEY, geom geometry(POINT,4326) );
0. Načtení do QGISu II.
1. Příprava a úprava databáze
1. PostGIS – ST_Intersects
Vyberte všechny stroje, které se nacházejí na území výběhu X
1. PostGIS – ST_Intersects
SELECT "ID",geom FROM "stroje" as s
WHERE ST_Intersects(s.geom, (SELECT geom FROM "vybehy_area" WHERE ID=3)) = true;
Vyberte všechny stroje, které se nacházejí na území výběhu X
1. PostGIS – ST_Touches
Vyberte všechny výběhy, které mají společnou hranici s výběhem X a načtěte je do QGISu jako novou vrstvu
1. PostGIS – ST_Touches
Vyberte všechny výběhy, které mají společnou hranici s výběhem X a načtěte je do QGISu jako novou vrstvu
SELECT "ID", geom FROM "vybehy_area" as v
WHERE ST_Touches(v.geom, (SELECT geom FROM "vybehy_area" WHERE ID=1)) = true;
1. PostGIS – Buffer
Zjistěte které stroje se nacházejí v okruhu X km od spojnice výběhů Y a Z
1. PostGIS – Buffer
Zjistěte které stroje se nacházejí v okruhu X km od spojnice výběhů Y a Z
SELECT "ID", geom FROM "stroje"
WHERE
ST_Intersects(
ST_SetSRID(
ST_Buffer(
ST_Transform(ST_MakeLine(
(SELECT geom FROM "vybehy" WHERE "ID" = 1),
(SELECT geom FROM "vybehy" WHERE "ID" =4)),5514),
100,'endcap=round join=round'),
5514),ST_Transform(geom,5514)
);
1. PostGIS – ST_Intersects II.
Zjistěte délku spojnice výběhů X – Y a vyberte do mapy výběhy, přes něž tato spojnice přechází.
PAMATUJ -> CIBULE
1. PostGIS – ST_Intersects II.
Zjistěte délku spojnice výběhů X – Y a vyberte do mapy výběhy, přes něž tato spojnice přechází.
SELECT Nazev, geom as spojnice FROM "vybehy_area" WHERE
ST_Intersects(
ST_MakeLine(
(SELECT geom FROM "vybehy" WHERE "ID”=1),
(SELECT geom FROM "vybehy" WHERE "ID" =2)
) ,ST_Transform(geom,4326)
);
2. Prostorové indexy – indexy obecně
2. Prostorové indexy – indexy obecně
CREATE TEMPORARY TABLE demo (key int, val int);
INSERT INTO demo SELECT *,cast(random()*1000 AS int)FROM generate_series(1,10000000);
SELECT count(*) FROM demo WHERE val=123;
CREATE INDEX valind ON demo (val);
SELECT count(*) FROM demo WHERE val=123;
2. Prostorové indexy – BSP-tree
2. Prostorové indexy – Quadtree
2. Prostorové indexy – R-tree
2. Prostorové indexy – GIST index
Zdroj: https://www.vutbr.cz/www_base/zav_prace_soubor_verejne.php?file_id=132396
2. Prostorové indexy - VACUUM
Zdroj: https://www.heronovo.cz/optimalizace-databaze-postgresql-logy-uklid/
2. Prostorové indexy - ANALYZE
Zdroj: http://geo102.fsv.cvut.cz/user/cepek/git2/git2.pdf
2. Prostorové indexy
Zjistěte vzdálenosti mezi centroidy všech výběhů bez využití prostorového indexu a s prostorovým indexem
SELECT b1."ID", b2."ID",
ST_Distance(ST_Centroid(b1.geom),
ST_Centroid(b2.geom))/1000 AS distance
FROM "vybehy_area" AS b1, "vybehy_area" AS b2;
Bez použití indexu: 3,7 vteřiny
S použitím indexu: 3,4 vteřiny
3. Pomoc s tvorbou semestrální práce
3. Pomoc s tvorbou semestrální práce
MALUJTE SI TO! ☺
4. Hodnocení semestrální práce
Jsou všechny SQL skripty napsané korektně, efektivně a funkčně?
Skripty obsahují i WHERE, ORDER BY, DISTINCT, GROUP BY, JOIN a LIMIT
SQL skripty jsou psané přehledně a jsou příjemně strukturované
4. Hodnocení semestrální práce
Jsou definovány vhodné datové typy pro jednotlivé atributy?
Splňuje návrh řešení 1. NF?
Splňuje návrh řešení 2. NF?
Splňuje návrh řešení 3. NF?
Databáze má přiměřenou složitost a komplexitu, tj. neobsahuje jen jedinou tabulku o pár atributech.
Jsou vhodně definovány indexy?
4. Hodnocení semestrální práce
Je uživatelský návod srozumitelný a kompletní?
Obsahuje odevzdané řešení uživatelský návod?
Obsahuje odevzdané řešení průvodní (technickou) zprávu?
Je průvodní (technická) zpráva srozumitelná a kompletní?
Obsahuje odevzdané řešení zkušební data v dostatečném rozsahu?
Odevzdané texty jsou vhodně doplněny obrázky
4. Hodnocení semestrální práce
Obsahují skripty nějakou „ST_“ funkci z PostGISu?
Implementuje databáze prostorové rozšíření Post GIS a datový typ geometry pro některý z atributů?
Prostorová složka dat v databázi má patřičný smysl a opodstatnění (tzn. není tam vměstnána nesmyslně a násilím)
Jsou pro data definovány SRID?
Obsahují skripty nějakou kombinovanou „ST_“ funkci z PostGISu?
5. pgexercises.com
Úkol do příště: Kdo se dostane nejdál?
6. SpatiaLite
https://www.gaia-gis.it/fossil/libspatialite/index
Děkuji za pozornost a těším se příště!��Prostor pro zpětnou vazbu
mail@mjakl.cz
Tel. 608 544 839
Web: mjakl.cz