Prostorové dotazy

Připojujeme se do databáze z QGIS

Přístup do databáze umožnuje zásuvný modul QGISu DB Manager (Správce databází).

DB Manager spustíme z menu aplikace QGIS Databáze ‣ Správce databází ‣ Správce databází.

V dialogu vybereme databázi školení „gismentors“.

../_images/qgis-db-manager-priv.png

Obr. 3 Uživatel má v tomto případě právo v databázi vytvářet vlastní schémata a dočasné tabulky.

Můžeme procházet metadata jednotlivých vrstev uložených v geodatabázi.

../_images/qgis-db-manager-layer.png

Obr. 4 Uživatel má v tomto případě pro vrstvu obce ve schématu ruian veškerá práva a může ji modifikovat.

Provádíme SQL dotazy

Otevřeme dialog SQL okna sqlwindow, které nám umožní provádět jednoduché SQL dotazy přímo v prostředí aplikace QGIS.

../_images/qgis-db-manager-sql-window.png

Obr. 5 Příklad určení počtu obcí v ČR.

Tip

Pokročilejší uživatelé ocení spíše konzolový nástroj psql. Více k tomuto tématu ve školení PostGIS pro pokročilé.

Vytváříme novou vrstvu jako výsledek prostorového dotazu

Na základě prostorového dotazu můžeme pomocí dialogu správce databází vytvářet nové datové vrstvy.

V nasledujícím příkladě vybereme (1) obce (ruian.obce_polygon), které obsahují alespoň jednu pořární stanici (osm.pozarni_stanice). Výsledek zobrazíme v QGISu jako novou vrstvu obce_pozarni_stanice (2).

Poznámka

SELECT o.* FROM ruian.obce AS o JOIN osm.pozarni_stanice AS p
 ON ST_Within(p.geom, o.geom);

Dotaz vracím obce, ve kterých je více než jedna požární stanice, jako duplicitní. Správně by tento dotaz mohl vypadat např. následovně:

SELECT o.* FROM ruian.obce AS o WHERE EXISTS
(
 SELECT 1 FROM osm.pozarni_stanice AS p WHERE ST_Within(p.geom, o.geom)
);
../_images/qgis-query-new-layer.png

Poznámka

Alternativně můžete novou vrsvu vytvořit v databázi rovnou jako novou tabulku anebo pohled a zobrazit v QGISu standardní cestou.

-- nejprve vytvoříme vlastní schéma
CREATE SCHEMA uzivatel;

CREATE VIEW uzivatel.obce_pozarni_stanice AS
SELECT o.* FROM ruian.obce_polygon AS o WHERE EXISTS
(
 SELECT 1 FROM osm.pozarni_stanice AS p WHERE ST_Within(p.geom, o.geom)
);
../_images/qgis-query-new-layer-disp.png

Obr. 6 Výsledek prostorového dotazu.

Přístup z PgAdmin

SQL dotazy můžeme provádět v grafické uživatelském prostředí PgAdmin. V následujícím textu předpokládáme verzi PgAdmin 4.

Poznámka

Pokud používáte QGIS, tak Vám PgAdmin nepřinese nic nového, spíše naopak. PgAdmin není GIS aplikace (od verze 3.3 PgAdmin4 nabízí alespoň jednoduchou problížečku geografických dat). Neumožní Vám zobrazit výsledky prostorových dotazů v mapovém okně podobně jako QGIS. Jde o grafické uživatelské rozhraní pro přístup k databázi PostgreSQL, nic víc. Navíc nepodporuje našeptávání a další užitečné funkce. Pro efektivní práci s databází se nejvíce hodí konzolový klient psql, více na školení PostGIS pro pokročilé.

../_images/pgadmin-new-conn.png

Obr. 7 Přidáme nové spojení.

../_images/pgadmin-new-conn-dialog.png
../_images/pgadmin-new-conn-dialog-1.png

Obr. 8 V následujícím dialogu zadáme název připojení a především parametry připojení k databázi.

Do seznamu se přidá nová položka.

../_images/pgadmin-new-conn-added.png

Z menu Tools ‣ Query Tool otevřeme nástroj, který nám umožní provádět SQL dotazy.

../_images/pgadmin-sql-window.png

Obr. 9 Příklad určení počtu obcí v ČR.