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ázek 1: 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ázek 2: 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ázek 3: Příklad určení počtu obcí v ČR.

Tip

Pokročilejší uživatele 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ázek 5: Výsledek prostorového dotazu.

Přístup z PgAdmin

SQL dotazy můžeme provádět v grafické uživatelském prostředí PgAdmin.

Poznámka

Pokud používáte QGIS, tak Vám PgAdmin nepřinese nic nového, spíše naopak. PgAdmin není GIS aplikace. 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é.

Přidáme nové spojení pgNewConnection.

V následujícím dialogu vyplníme parametry připojení k databázi.

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

Připojení se přidá do seznamu.

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

Otevřeme SQL dialog, který nám umožní provádět SQL dotazy pgSQLWindow.

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

Obrázek 8: Příklad určení počtu obcí v ČR.