V dnešnej dobe sa nájde mnoho fyzických či právnických osôb, ktorí denne potrebujú dôveryhodné, ľahko prístupné a podrobné informácie o vlastníckych vzťahoch v krajine. Nemusí ísť len o geodetov, znalcov v stavebníctve, architektov, ale o akékoľvek osoby, ktoré vlastnia aspoň malú nehnuteľnosť. Vytlačené hardcopy náčrty a mapy sa pri tom dostávajú čoraz viac do úzadia.
Približne od augusta minulého roku existuje šikovná webová aplikácia MAPKA na vyhľadávanie údajov z informačného systému slovenského katastra nehnuteľností. Umožňuje zobraziť katastrálnu mapu s parcelami a vybrané údaje o parcele ako výmeru, druh pozemku, vlastníka, správcu, nájomcu, či je na pozemku stavba, kto sú jej vlastníci. Užívateľ môže vyberať rôzne podklady, napríklad ZBGIS, World Topo Map, World Street Map, World Imagery alebo zobrazovať mapu určeného operátu s parcelami registra EKN.
Keďže s geoinformatikou som v kontakte takmer každý deň a kataster mi je vo všeobecnosti blízky, povedala som si, že by nebolo zlé zistiť, ako je na tom spojenie dát slovenského katastra so softvérovými prostriedkami geografických informačných systémov GIS. Samozrejme viem, že peniaze určené na licencie sa dajú použiť napríklad na lepšiu customizáciu riešenia, hovorím preto len o open source prostriedkoch, teda oproti komerčnému softvéru bez akýchkoľvek zaťažení licenčnými poplatkami.
Možno som len nemala šťastie, ale výsledkom môjho lovu na internete nebolo nič podľa mojich predstáv. Narazila som však na zdrojové kódy nástroja pre import dát katastra Slovenskej republiky pod licenciou GNU GPL 2, ktorého vývoj začal niekedy okolo roku 2006. Ide o nástroj vytvorený pre príkazový riadok a obsahuje Python, Bash a SQL skripty. Je síce zaťažený implementáciou riešenia rôznych anomálií v tom čase obsiahnutých v dátach katastra, no funguje a bol vyvíjaný ľuďmi, ktorých poznám v súvislosti s technológiou GIS.lab – na ktorej okrem iného prebiehajú aj všetky školenia GISMentors.
S cieľom vedieť pracovať s katastrálnymi dátami v open source GIS bez použitia príkazového riadku som sa preto rozhodla vytvoriť pomôcku v podobe zásuvného modulu pre QGIS. Čo sú zásuvné moduly a na čo slúžia som opisovala už v materiáloch školenia QGIS pre začiatočníkov v kapitole QGIS pluginy.
Zistila som, že tvorba pluginov rozhodne nie je až taká raketová veda. Chcelo to pár večerov, trochu snahy a výsledok, zatiaľ povedzme pre vlastné použitie sa dostavil. Nový modul som nazvala SKKN tool a celá jeho dokumentácia je dostupná na GitHube.
Zásuvný modul SKKN tool pre prácu s dátami katastra Slovenskej republiky v QGIS.
Nástroj zabezpečuje nahratie katastrálnych údajov a vektorovej katastrálnej mapy Úradu geodézie, kartografie a katastra. Ide o prvý prototyp pluginu. Pracuje s dátami výmenného formátu súborov geodetických informácií *.vgi pre grafické dáta a s popisnými dátami vo formáte *.dbf, resp. *.fpu. Tieto dáta v prvom kroku konvertuje na CAD súbory *.dgn, SQL súbory *.sql a Shapefile súbory *.shp a následne ich importuje do databázy PostgreSQL, s ktorou je možné jednoducho pracovať v prostredí geoinformačných systémov.
Dialógové okno nového zásuvného modulu SKKN tool.
To, že sú popisné a grafické údaje správne a aktuálne zaručuje fakt, že ide o oficiálne dáta z katastra nehnuteľností, akými sú parcely registra CKN a EKN, byty, stavby, vlastníci, užívatelia či nájomcovia parciel a podobne. Všetky tieto detailné informácie môžu byť súčasťou atribútových tabuliek. V GIS existujú široké možnosti ako dáta editovať, dopĺňať, filtrovať, vytvárať ich podmnožiny zodpovedajúce zadaným kritériám a všetky záznamy pohodlne a prehľadne prezentovať v podobe digitálnej či papierovej, vytlačenej podobe.
Uvediem reálny praktický príklad. V záujmovej oblasti je potrebné umiestniť líniový stavebný objekt, napríklad vodovodné potrubie. Architekt musí do projektu zakresliť kadiaľ bude potrubie vedené. Aby sa vyhol zdĺhavým procesom, ktoré predstavujú konzultácie s každým vlastníkom, chce potrubie umiestniť tak, aby prechádzalo cez parcely čo najmenšieho počtu vlastníkov. Taktiež potrebuje niektoré informácie o vlastníkoch, napríklad kontakt, číslo listu vlastníctva a podobne. K dispozícii má grafické a popisné dáta katastra nehnuteľnosti v štandardnej forme SPI00000.zip a grafické dáta VGI00000.zip.
Poznámka: Pre názornosť bude vodovodné potrubie v tomto prípade predstavovať len jednoduchá línia, ktorá môže byť do prostredia QGIS importovaná ako *.dxf súbor.
Plánovaný stavebný objekt.
Riešenie v prostredí geoinformačných technológií je takmer triviálne. Vďaka priestorovým analýzam vektorových dát v prvom kroku vyselektujeme všetky parcely, cez ktoré aktuálne navrhnutý objekt prechádza.
Priestorový výber parciel registra CKN.
Líniu, reprezentujúcu potrubie v prostredí QGIS prekreslíme podľa požiadaviek, potom exportujeme ako *.dxf a môžeme opäť implementovať do výkresu architekta. Takýmto spôsobom vieme docieliť, že namiesto 46 budeme musieť kontaktovať len 9 vlastníkov.
Efektívne riešenie plánovaného stavebného objektu s príslušnými informáciami o vlastníkoch dotknutých parciel.
V niektorých prípadoch môže byť užitočné graficky znázorniť všetky vlastnícke vzťahy, listy vlastníctva či iné informácie v záujmovom území. Ako som už viackrát naznačila, QGIS si s podobnými úlohami veľmi ľahko poradí.
Grafické znázornenie parciel spolu s číslami listov vlastníctva.
Dnes existuje pre QGIS viac než 300 zásuvných modulov. V mnohých prípadoch však môže nastať situácia, kedy ani jeden z nich nespĺňa funkcionalitu, akú by sme práve potrebovali – ako napríklad v mojom prípade s dátami slovenského katastra. Úroveň rozširovania funkcionality QGIS sa pritom samozrejme líši. Za pomoci jazyka Python môže ísť o pridanie jednoduchého tlačidla až po tvorbu sofistikovaných nástrojov.
V súvislosti s prípravou materiálov školenia GISMentors QGIS pre pokročilých uvediem malú ochutnávku, ako si takýto plugin vytvoriť v piatich základných krokoch. Pôjde o vytvorenie vlastného zásuvného modulu s názvom Save Views. Tento plugin bude exportovať grafický výstup vo forme *.png pre každý prvok vo vybranej vektorovej vrstve do zvoleného adresára.
1. Práca so zásuvným modulom Plugin Builder
Tento veľmi užitočný zásuvný modul vytvorí všetky potrebné súbory a štandardnú podobu kódu pre budúci plugin. Nainštalujeme ho klasickým spôsobom pomocou správcu zásuvných modulov.
Dialógové okno zásuvného modulu na tvorbu pluginov.
2. Kompilácia súboru zdrojov spojených s aplikáciou
Vzhľadom k tomu, že budeme vyvíjať plugin v programovacom jazyku Python, musíme nainštalovať tzv. Python bindings pre Qt. Pre tvorbu zásuvných modulov je potrebný pyrcc4. Po jeho spustení bude plugin dostupný v QGIS.
3. Načítanie nového pluginu v správcovi pluginov a jednoduchý projekt na testovanie
V paneli správcu zásuvných modulov vyhľadáme náš nový plugin. Následne vytvoríme jednoduchý projekt, ktorý bude obsahovať pár vektorových vrstiev. Na obrázku nižšie sú zobrazené napríklad požiarne stanice, železnice, kraje, veľkoplošné územia a štátna hranica Českej republiky. V tomto prostredí budeme nový zásuvný modul priebežne testovať.
Príklad projektu s vektorovými vrstvami v QGIS na testovanie.
4. Vytvorenie užívateľského rozhrania pomocou Qt Creator
Vzhľad a elementy dialógového okna pluginu vieme customizovať vďaka aplikácii Qt Creator. Spôsobom drag and-drop je možné z ľavého panelu pridávať ďalšie objekty a ich názvy a vlastnosti meniť v pravej časti dialógového okna.
Dialógové okno vytváraného pluginu v prostredí aplikácie Qt Creator.
5. Pridanie logiky pomocou Python kódu a ďalšie úpravy
Správny textový editor alebo integrované vývojové prostredie (IDE) sú dôležité pri písaní kódu. Medzi obľúbené editory patria napríklad Sublime Text, PyCharm, Vim, Emacs, Notepad++, TextWrangler, IDLE, Atom, Aquamacs, GNU Nano, Kate, gedit, prostredie Spyder a podobne.
Povedzme, že chceme, aby sa po spustení pluginu Combo Box automaticky naplnil vektorovými vrstvami aktuálneho projektu. Hlavným súborom, ktorý sa stará o logiku jednotlivých objektov je Python kód. Školenie obsahuje predpripravené časti kódu s podrobným návodom ako všetko pospájať.
...
# populate the Combo Box with the layers loaded in QGIS
self.dlg.comboBox.clear()
layers = self.iface.legendInterface().layers()
layer_list = []
for layer in layers:
layer_list.append(layer.name())
self.dlg.comboBox.addItems(layer_list)
...
Editácia Python súboru.
Grafické výstupy pre vrstvu krajov ako výsledok nového pluginu Save Views sú znázornené nižšie. Ich názov v adresári závisí od názvu konkrétnej vektorovej vrstvy. Líšia sa len poradovým číslom podľa pozície v atribútovej tabuľke.
Grafické súbory uložené vo zvolenom adresári pre vektorovú vrstvu krajov Českej republiky.
V súvislosti s témou katastra je na nasledujúcom obrázku projekt s katastrálnymi dátami. Vyznačené sú parcely, cez ktoré prechádza plánované vedenie.
Znázornenie parciel, cez ktoré prechádza plánované vedenie.
Použitím pluginu Save Views vieme automaticky pre každého vlastníka vyhotoviť grafické znázornenie jeho parcely, na ktorej bude zapísané vecné bremeno.
Pohľad na každú parcelu ako výsledok zásuvného modulu Save Views.
Cieľom bolo ukázať, ako možno open source GIS prepojiť s akýmikoľvek individuálnymi požiadavkami. Podobne ako v mojom predošlom príspevku Geoinformatika a QGIS v hydrológii aj tu sa potvrdilo, že GIS má obrovský potenciál uľahčovať spracovanie informácií rôzneho charakteru. Toto bol len jeden z mnohých modelov. Napríklad nedávno na konferencii Praktické využitie GIS v lesnictví a zemědelství, ktorá sa konala v priestoroch Mendelovej univerzity v Brne, Ján Michálek prezentoval plugin umožňujúci zobrazovať a prechádzať dáta z informačného systému lesného hospodárstva, jeho prohlížečku LHPO v ISLH xml.
Možnosti sú široké, preto ak máte otázky alebo potrebujete poradiť, GISMentors vám radi ponúknu školenia a konzultácie prispôsobené vašim konkrétnym potrebám. Pozrite si termíny najbližších školení QGIS, GRASS GIS, GeoPython či PostGIS, prípadne neváhajte napísať na info@gismentors.eu.
Za GISMentors Ľudka Furtkevičová