Atgal...

QGIS: Poligonų topologijos tikrinimas

Dažnai turime poligonų duomenų rinkinius, kuriuose poligonai sudaro topologinį padengimą - poligonai niekada nedengia vienas kito ir tarp jų nėra didelių tarpų.

Topologinis padengimas

Topologinis tokių duomenų tvarkingumas ypač svarbus, jei mes su poligonais atliekame geometrijų veiksmus, pavyzdžiui, jungiame kelis poligonus. Jei poligonų duomenys topologiškai netvarkingi ir tarp jų yra tarpų, tai sujungę du kaimyninius poligonus mes negausime gražaus vientiso poligono, o gausime poligoną su mežytėmis skylutėmis ties pradinių poligonų riba. Štai dažna tokio netvarkingo topologinio padengimo klaida: kelios kaimyninių poligonų viršūnių pozicijos nesutampa, todėl turime tiek persidengimus, tiek ir plyšius:

Padengimo klaida

QGIS turi įrankį, kuris leidžia patikrinti tokių duomenų tvarkingumą. Jį rasite prie algoritmų Vektorių padengimas -> Tikrinti padengimą:

Tikrinti padengimą

Įrankiui nurodome poligonų sluoksnį ir, jei reikia, galime nurodyti „Tarpo plotį“ - kokio dydžio tarpai mus tenkina. Kadangi mes norime su poligonais atlikti įvairius veiksmus, mums reikia, kad visos poligonų viršūnės tiksliai sutaptų, taigi paliekame numatytąją reikšmę - 0.

Jei tikrinimas randa klaidų, jis sukurs linijų sluoksnį, kuriame bus probleminės kraštinės. Tarkime oficialus Lietuvos gyvenviečių rinkinys po šio tikrinimo atrodo taip (raudonos - probleminės kraštinės).

Lietuvos gyvenviečių poligonų klaidos

Kaip matome, klaidų yra nemažai. Oficialius duomenis šiaip turėtų pataisyti duomenų tiekėjas, bet mes gi lengvų kelių neieškome, tai pataisykime duomenis patys. Tam panaudokime GRASS įrankį v.clean, kurį irgi rasite prie algoritmų: GRASS->Vektorius->v.clean:

Pilną šio įrankio aprašymą rasite oficialioje GRASS dokumentacijoje, mums šiuo atveju svarbūs parametras yra „pritraukimo tolerancija“, jis nurodo, kiek toli gali būti poligonų viršūnės, kad jas pritrauktume prie kaimyninio poligono. Pagal nutylėjimą nurodyta reikšmė -1, kuri reiškia, kad pritraukti nereikia, tai pakeiskime ją į tarkime 1 - pritrauksime viršūnes, kurios yra iki 1m atstumu.

Topologijos taisymas

Po mažiau nei minutės gauname pataisytų poligonų duomenų rinkinį. Gali būti, kad jame bus ne pagal OGR standartus sukurtų save liečiančių žiedų, todėl siūlyčiau rezultatą apdoroti algoritmu „Taisyti geometrijas“. O tada galima patikrinti, ką gavome, iš naujo paleiskime geometrijų teisingumo tikrinimo algoritmą, matome, kad neliko nei vieno topologijos klaidos!

Taigi matome, kad naudodami standartinius algoritmus galime pataisyti poligonų topologiją ir užtikrinti, kad vėlesni geometrijų veiksmai bus ne tik teisingi, bet ir šiek tiek greitesni. Nepamirškite, kad esant poreikių tokius pokyčius daryti periodiškai, jūs visus šituos įrankius galite paleisti automatiškai „iš komandinės eilutės skripte“.

2026-03-08