1 of 16

Databáze v geoinformatice

X.

Mgr. Michal Jakl

ZS 2025

2 of 16

Obsah lekce

  1. Samostatná práce

Praktické cvičení:

Praktické procvičení dosud získaných poznatků z PostGISu

3 of 16

Úvod

Dnes budete pracovat a prostorově analyzovat reálná data okresů a obcí na území ČR. Po celou hodinu budete pracovat POUZE s programem QGIS - s výjimkou vytvoření schématu “X_cr” - zde využijte pgAdmin.

4 of 16

Data a import

  1. Data pro toto cvičení získáte na následujících odkazech. Jsou ve formátu SQLite

  • Stáhněte tato data a importuje je do prostředí programu QGIS
  • Pomocí Správce databází programu QGIS naimportujte tato data do schématu “X_cr”

5 of 16

Prohlídka dat

  1. Data z databáze zobrazte v prostředí QGISu
  2. Analyzujte a prozkoumejte obsah jejich prostorové i popisné složky

6 of 16

Neprostorové SQL scripty I.

  1. Zjistěte počty okresů a obcí

  • Zjistěte počet obcí v okrese Most

  • Vypište tři okresy s nejvyšším počtem obcí včetně jejich počtu

7 of 16

Neprostorové SQL scripty II.

4) Vypište okresy s méně než 20 obcemi včetně počtu obcí v nich

5) Zjistěte 5 nejčastějších prvních písmen názvů obcí včetně počtu

8 of 16

Neprostorové SQL scripty III.

6) Zobrazte 5 obcí s nejdelším názvem včetně délky a okresu

7) Zobrazte počty obcí podle délky jejich názvu

9 of 16

Prostorové SQL scripty I.

  1. Zjistěte jaké město je nejseverněji a jaké nejjižněji položené

  • Zjistěte rozlohy největšího a nejmenšího okresu

  • Které dvě obce jsou k sobě nejblíže a jak blízko to je?

10 of 16

Prostorové SQL scripty II.

4) Vyhledejte 5 nejbližších obcí k Ústí nad Labem v km

5) Vyhledejte obce, které leží v okrese Děčín

6) Vyhledejte okres s největším počtem “sousedů”

11 of 16

Prostorové SQL scripty III.

7) Zjisti které dva okresy mají nejdelší společnou hranici

8) Vyberte 5 okresů s nejvyšší hustotou obcí na km2

12 of 16

A perlička na závěr :)

Zobrazte 3 nejizolovanější města - tedy ta, z nichž je do jakéhokoliv jiného města nejdále...

WITH vzdalenosti AS

(

SELECT

a.nazev AS nazev_mesta,

MIN(ST_Distance(a.geom, b.geom)) AS min_vzdalenost

FROM obce a

JOIN obce b ON a.ogc_fid != b.ogc_fid

GROUP BY a.nazev, a.geom

)

SELECT nazev_mesta, min_vzdalenost FROM vzdalenosti ORDER BY min_vzdalenost DESC LIMIT 3;

15 vteřin!

13 of 16

A perlička na závěr :)

Zobrazte 3 nejizolovanější města - tedy ta, z nichž je do jakéhokoliv jiného města nejdále... - OPTIMALIZACE POMOCÍ DWITHIN()

WITH vzdalenosti AS (

SELECT

a.nazev AS nazev_mesta,

MIN(ST_Distance(a.geom, b.geom)) AS min_vzdalenost

FROM obce a

JOIN obce b

ON a.ogc_fid != b.ogc_fid

AND ST_DWithin(a.geom, b.geom, 20000)

GROUP BY a.nazev, a.geom

)

SELECT nazev_mesta, min_vzdalenost FROM vzdalenosti ORDER BY min_vzdalenost DESC LIMIT 3;

1,9 vteřiny!

14 of 16

Kolik tedy proběhlo nyní operací?

Zjistíme průměrný počet obcí v okruhu 20 km

WITH vzdalenosti AS (

SELECT

a.ogc_fid AS obec_id,

COUNT(b.ogc_fid) AS pocet_obci_v_okruhu

FROM obce a

JOIN obce b

ON ST_DWithin(a.geom, b.geom, 20000) -- 20 km v metrech

AND a.ogc_fid != b.ogc_fid -- Nezahrnujeme obec samu o sobě

GROUP BY a.ogc_fid

)

SELECT AVG(pocet_obci_v_okruhu) AS prumerny_pocet_obci

FROM vzdalenosti;

  • Bez optimalizace: Bylo by potřeba 39,156,306 výpočtů (každá obec porovnána se všemi ostatními).
  • S optimalizací (20 km okruh): Bylo provedeno pouze 682,122 výpočtů.
  • Ušetřeno: Optimalizace ušetřila 38,474,184 výpočtů, což je více než 98 % původního objemu.

15 of 16

4) Závěr

SVÉ SQL SKRIPTY NAHRAJTE DO MOODLU KE CVIČENÍ Z DANÉ HODINY!

16 of 16

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