Ravnanje z neveljavnimi geometrijami (QGIS3)

Pri delu s sloji vektorskih podatkov lahko naletite na geometrijske napake. Te napake pogosto postanejo del vaših podatkov po izvajanju geoprocesiranja, digitalizacije, urejanja ali pretvorbe podatkov. QGIS3 ima vgrajena orodja in algoritme za odkrivanje in popravljanje neveljavnih geometrij. V tem učbeniku boste spoznali tipičen potek dela za obravnavo neveljavnih geometrij v vaših podatkih.

Opomba

Different software systems implement different notions of geometry validity. But the leading standard for the geometry model for use in a GIS is the OGC Simple Features Specifications (SFS). In this tutorial, we will use GEOS library to check for geometry validity which uses this standard. This post gives a good overview of common geometry errors as defined by the OGC standard.

Pregled naloge

Delali bomo z slojem mejna administrativnih enot za Indijo in odpravili geometrijsko napako za državni poligon.

Česa se bomo še naučili

  • Uporaba algoritma *Topological Coloring * (Topološko barvanj) za uporabo barvne sheme za poligonski sloj.

Pridobivanje podatkov

Datameet zagotavlja oblikovne datoteke z upravnimi mejami za Indijo, ki jih je ustvarila skupnost.

Prenesite datoteko Datameet Spatial Data Repository [~150 MB] zip. Preneseni arhiv vsebuje več map. Arhiv razširite in uporabite datoteke v mapi States/`.

Vir podatkov: [DATAMEET]

Postopek

  1. V brskalniku QGIS poiščite preneseno datoteko India-States.zip. Razširite jo in povlecite datoteko India-States.shp na osnovno okno.

../../_images/1100.png
  1. Na plošči Layers boste videli naloženo novo plast India-States. Pojdite na Processing ‣ Toolbox.

../../_images/260.png
  1. Poskusili bomo zagnati algoritem obdelave na vhodnem sloju, da bi pokazali, kako lahko neveljavne geometrije povzročijo težave med postopki geoprocesiranja. Poiščite in najdite algoritem Cartography ‣ Topological coloring. Z dvoklikom ga zaženite.

../../_images/335.png
  1. V pogovornem oknu Topological coloring izberite India-States kot Input layer. Vse druge parametre pustite na privzetih vrednostih in kliknite Run.

../../_images/415.png

Opomba

The Topological coloring algorithm implements an algorithm to color a map so that no adjacent polygons have the same color. This is a useful cartography technique and the Four Color Theorem states that 4 colors are enough to achieve this result. There is a graph-theory version of this theorem called Five color theorem. The QGIS algorithm implementation is based on graphs so in practive you will see that complex polygon layers such as this will require upto 5 colors.

  1. Med izvajanjem algoritma se v zavihku Log prikaže opozorilo. En element v vhodnem sloju je imel neveljavno geometrijo in je bil med obdelavo preskočen. Privzeta nastavitev za ravnanje z neveljavno geometrijo v orodjarni za obdelavo se nahaja v zavihku Settings ‣ Options ‣ Processing ‣ General ‣ Invalid features filtering in je nastavljena na Skip (ignore) features with invalid geometries. To je dobra privzeta nastavitev, vendar če je vaš vhodni element velik, lahko to opozorilo spregledate in ne veste, da je bil vhodni element preskočen. Morda boste želeli spremeniti vrednost na Stop algoritem execution when a geometry is invalid.

../../_images/514.png
  1. V glavnem oknu QGIS boste videli, da je na plošči Layers dodan nov sloj Colored. Opazite, da novi plasti manjka stanje, ki je imelo neveljavno geometrijo. Zdaj vemo, da je imel ta poseben poligon stanja neveljavno geometrijo, vendar ne vemo, kaj je bil vzrok. To lahko zlahka ugotovimo. Poiščite in najdite algoritem Vector geometry ‣ Check validity.

../../_images/614.png
  1. V pogovornem oknu Check Validity (Preveri veljavnost) izberite India-States kot Input layer (Vhodni sloj). Izberite GEOS kot Method. Kliknite Run.

../../_images/713.png
  1. Ko algoritem konča obdelavo, se na plošči Layers` pojavijo trije novi sloji - Valid output, Invalid output in Error output. Sloj Error output vsebuje lokacije in opise geometrijskih napak. Kliknite ga z desno tipko miške in izberite Open Attribute Table.

../../_images/813.png

Opomba

V dokumentaciji QGIS je podroben članek o Types of error messages and their meanings, ki pojasnjuje vzroke za vse napake.

  1. Videli boste, da je sporočilo o napaki Ring self-intersection. Izberite vrstico in kliknite gumb Zoom map to selected features. Ko boste zemljevid povečali, boste videli glavni vzrok za napako geometrije.

../../_images/913.png
  1. QGIS ima vgrajen algoritem za samodejno odpravljanje geometrijskih napak. Poiščite in najdite algoritem Vector geometry ‣ Fix geometries. Z dvojnim klikom ga zaženite.

../../_images/1019.png
  1. V pogovornem oknu Fix Geometries izberite India-States kot Input layer in kliknite Run.

../../_images/1122.png
  1. Na ploščo Layers bo dodan nov sloj Fixed Geometries. Na tej točki je napaka geometrije odpravljena in na tem sloju lahko brez težav zaženete kateri koli algoritem obdelave. Vidimo pa lahko, da je med sosednjimi poligoni še vedno vrzel, ki je nepričakovana in lahko v nadaljevanju povzroči topološke napake. Tudi to lahko popravimo z urejanjem poligona. Kliknite gumb Toggle Editing v orodni vrstici Digitizing Toolbar. Izberite orodje Vertex Tool in v spustni vrstici izberite Vertex Tool (Current Layer).

../../_images/1220.png
  1. Ko je orodje za vrhove aktivno, kliknite na vrh, da ga izberete. S pritiskom na tipko Delete lahko izbrišete vrh ali ga povlečete, da ga premaknete. Vozlišča lahko premaknete tako, da se rob poligona zdaj dotika sosednjega poligona.

../../_images/13.gif
  1. Ko to storite, ponovno kliknite gumb Toggle Editing in kliknite Save.

../../_images/1416.png
  1. Ponovno zaženimo algoritem Cartography ‣ Topological coloring.

../../_images/1515.png
  1. V pogovornem oknu Topological Coloring (Topološko barvanje) se prepričajte, da ste kot Input layer (Vhodna plast) izbrali Fixed Geometries (Fiksne geometrije). Kliknite Run.

../../_images/1614.png
  1. Videli boste, da se algoritem izvaja brez napak in da se na ploščo Layers doda nova plast Colored. Upoštevajte, da algoritem sam ne obarva plasti, temveč deluje tako, da vsakemu poligonu doda nov stolpec z imenom color_id, ki ga lahko uporabite za dodelitev edinstvene barve, ki se razlikuje od sosednjih poligonov. Izberite sloj Colored in kliknite gumb Open the Layer Styling Panel (Odpri ploščo za oblikovanje sloja).

../../_images/1715.png
  1. Izberite renderer Categorized in stolpec color_id kot Value. Kliknite Classify. Zdaj boste videli zemljevid, ki je obarvan tako, da imajo sosednji poligoni različne barve.

../../_images/1813.png

If you want to give feedback or share your experience with this tutorial, please comment below. (requires GitHub account)