Konverzia údajov vo formáte WKT na geometriu Postgisu
Často sa objavujúcou úlohou v Postgise je prevod súradníc (resp. georeferencobaných bodov) v tvare x,y alebo fi,lambda na geometriu čitateľnú technológiou Postgis. Funkcia ktorá nám umožní takýto prevod realizovať sa nazýva: ST_GeomFromText() príklad použitia:ST_GeomFromText('POINT(' || lon || ' ' || lat || ')',4326)
Transformácia súradníc
Transformácia súradníc je proces zmeny súradnicového systému. V postgise nám na to slúži funkcia s názvom ST_Transform(stlpec_s_geom, 5514)Niektoré vybrané priestorové funkcie PostGIS
- ST_Contains(A, B)
Vráti ok ak žiadne body geometrie B neležia mimo geometrie A a interiér A a B zdieľa aspoň jeden bod - ST_ContainsProperly(A, B)
Vracia ok ak sa geometria B nachádza v interiéri A, ale nepretína hranicu. - ST_Covers(A, B)
Vracia ok, ak žiaden bod geometrie B neleží mimo geometrie A - ST_CoveredBy(A, B)
Vracia ok, ak žiaden bod geometrie A neleží mimo geometrie B - ST_Crosses(A, B)
Vracia ok, ak geometria A a B zdieľa niektoré, nie však všetky body - ST_Disjoint(A, B)
Vracia ok, ak neexistujú spoločné body medzi A a B. - ST_Intersects(A, B)
Vracia ok, ak existujú spoločné body medzi A a B. - ST_Intersection(A, B)
Vracia tú časť geometrie A a B, ktorú spolu zdieľajú v prienikoch. - ST_Overlaps(A, B)
Vracia ok, ak sa geometrie pretínajú, ale niesu obsahované a sú v jednej dimenzí (línie, body, polygóny) - ST_Touches(A, B)
Vracia ok, ak geometria A a B majú aspoň jeden spoločný bod, ale ich interiéry sa neprekrývajú. - ST_Within(A, B)
Vracia ok, ak A je kompletne obsiahnutá v B geometrii.
Komplexný zoznam všetkých podporovaných funkcii postgis nájdete tuto: postgis.org
Ukážka použitia priestorovej funkcie ST_Intersects: (vyselektovanie iba obcí, ktoré sú v prieniku s limitnými zónami arzénu v podzemnej vode)
-------------------------------------------- CREATE TABLE gbu.obce_prienik AS SELECT DISTINCT idn2,nm2,idn3,a.geom FROM gbu.obce_ba_tt a JOIN gbu.arzen b ON ST_Intersects(a.geom,b.geom); --------------------------------------------Výpočet rozlohy prieniku limitnej zóny arzénu a obce v km2:
-------------------------------------------- SELECT idn2, ST_Area(ST_Intersection(a.geom,b.geom))/1000000 AS rozloha_prieniku FROM gbu.obce_prienik a, gbu.arzen b WHERE ST_Intersects(a.geom, b.geom); --------------------------------------------
Cvičenia:
- 1.) Analyzujte tabuľku "body" a vytvorte jej stĺpec s geometriou (geom) v súradnicovom systéme sjtsk (epsg:5514) uložte ako tabuľku "body_sjtsk".
- 2.) Transformujte geometriu v tabuľke "body", alebo "body_sjtsk" (kt. je v súradnicovom systéme sjtsk (epsg:5514) na geografický súradnicový systém WGS84 (epsg:4326)) a porovnajte výsledky v QGISe
- 3.) Nájdite všetky obce, ktoré sú v prieniku s limitnými hodnotami arzénu v podzemnej vode
- 4.) Vypočítajte aké percento z obce zaberá prienik limitnej zóny arzénu (iba tie obce kt sú v prieniku)
- 5.) Vypočítajte percento domov s vlastnou vodovodnou prípojkou a percento domov bez vodovodnej prípojky
- 6.) Vypočítajte percentuálnu hodnotu rizika vzhľadom na percento rozlohy arzénu a percento domov bez vodovodnej prípojky. Výsledky uložte do jednej tabuľky, potenciálne riziko vizualizujte formou kartogramu v programe QGIS.