• http://postgis.net/documentation/ manuál: • https://postgis.net/docs/manual-3.5/ • https://postgis.net/docs/manual-3.5/reference.html - seznam funkcí tutorial včetně příkladů: • http://postgis.net/workshops/postgis-intro/ Otevřete si QGIS, ať můžeme sledovat, co vzniká v databázi. Základní výběr na základě podmínek: =================================== SELECT * FROM Kraje SELECT * FROM "Kraje" SELECT * FROM okresy SELECT "nazev", "poc_obyv_s" FROM okresy SELECT "nazev", "poc_obyv_s" FROM okresy WHERE nazev='Karviná' SELECT avg(poc_obyv_s) FROM okresy SELECT nazev_vusc, avg(poc_obyv_s) FROM okresy GROUP BY nazev_vusc SELECT "nazev", "poc_obyv_s" FROM okresy WHERE poc_obyv_s>200000 AND nazev_vusc like '%Moravsk%' SELECT "nazev", "poc_obyv_s" FROM okresy WHERE poc_obyv_s>200000 AND nazev_vusc like '%Moravsk%' ORDER BY poc_obyv_s DESC Tvorba tabulky bez a s geometrií: ================================= CREATE TABLE okvyber AS SELECT "nazev", "poc_obyv_s" FROM okresy WHERE poc_obyv_s>200000 AND nazev_vusc like '%Moravsk%' ORDER BY poc_obyv_s CREATE TABLE okvyber2 AS SELECT "geom", "nazev", "poc_obyv_s" FROM okresy WHERE poc_obyv_s>200000 AND nazev_vusc like '%Moravsk%' ORDER BY poc_obyv_s CREATE TABLE okvyber3 AS SELECT "id", "geom", "nazev", "poc_obyv_s" FROM okresy WHERE poc_obyv_s>200000 AND nazev_vusc like '%Moravsk%' ORDER BY poc_obyv_s; ALTER TABLE okvyber3 ADD PRIMARY KEY (id); Vytvoření nové tabulky jako propojení dvou tabulek: V tabulce bodových obcí ObecDefinicniBod chybí počet obyvatel. Tak si ho připojím z tabuky Obec_SLDB. CREATE TABLE obce_obyv AS SELECT * FROM obce JOIN obce_s ON obce.kod = obce_s.kod CREATE TABLE obce_obyv AS SELECT obce.*, obce_s.poc_obyv_s FROM obce JOIN obce_s ON obce.kod = obce_s.kod Doplňte do tabulky okresů, kolik je v každém z nich obcí. CREATE TABLE pocet_obci AS SELECT okres, count(kod) AS pocet_obci FROM obce GROUP BY okres; CREATE TABLE okresy_pocet_obci AS SELECT * FROM pocet_obci JOIN okresy ON okresy.kod = pocet_obci.okres ORDER BY pocet_obci.pocet_obci Editace tabulky - tvorba nového sloupce ======================================= ALTER TABLE kraje ADD COLUMN pod_slov numeric; UPDATE kraje SET pod_slov = slovenska_/poc_obyv_s*100; Funkce pro práci s geometrií: ============================= CREATE TABLE data250_obce AS SELECT DISTINCT ON (geom) * FROM builtupp; SELECT "nazev", ST_Area(geom) FROM okresy WHERE ST_Area(geom)<300000000 Vrátí textový výpis geometrie okresů: SELECT "nazev", ST_AsText(geom) FROM okresy WHERE (nazev='Blansko') Funkce pro prostorové vztahy dvou vrstev: ========================================= CREATE TABLE ms AS SELECT * FROM kraje WHERE "nazev" like '%Moravsk%' CREATE TABLE vyber AS SELECT * FROM obce, ms WHERE ST_Contains(ms.geom, obce.geom)=TRUE CREATE TABLE vyber2 AS SELECT obce.* FROM obce, ms WHERE ST_Contains(ms.geom, obce.geom)=TRUE CREATE TABLE vyber3 AS SELECT obce.* FROM obce, ms WHERE ST_Intersects(ms.geom, obce.geom)=TRUE Tvorba nových tabulek pomocí analýz: ==================================== CREATE TABLE buffers AS SELECT ST_Buffer(geom,2000) AS geom FROM obce WHERE "nazev" like '%á%' SELECT sum(ST_Area(geom)/1000000) As rozloha FROM buffers CREATE TABLE uni AS SELECT ST_Union (buffers.geom) AS geom FROM buffers SELECT (ST_Area(geom)/1000000) As rozloha FROM uni CREATE TABLE inter AS SELECT ST_Intersection(buffers.geom, ms.geom) AS geom FROM buffers, ms WHERE ST_Dimension(ST_Intersection(buffers.geom, ms.geom)) = 2 CREATE TABLE inter2 AS SELECT buffers.* FROM buffers, ms WHERE ST_Intersects (buffers.geom, ms.geom)=TRUE