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¶
V brskalniku QGIS poiščite preneseno datoteko
India-States.zip
. Razširite jo in povlecite datotekoIndia-States.shp
na osnovno okno.
Na plošči Layers boste videli naloženo novo plast
India-States
. Pojdite na .
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
. Z dvoklikom ga zaženite.
V pogovornem oknu Topological coloring izberite
India-States
kot Input layer. Vse druge parametre pustite na privzetih vrednostih in kliknite Run.
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.
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 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 naStop algoritem execution when a geometry is invalid
.
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 .
V pogovornem oknu Check Validity (Preveri veljavnost) izberite
India-States
kot Input layer (Vhodni sloj). IzberiteGEOS
kot Method. Kliknite Run.
Ko algoritem konča obdelavo, se na plošči Layers` pojavijo trije novi sloji -
Valid output
,Invalid output
inError output
. SlojError output
vsebuje lokacije in opise geometrijskih napak. Kliknite ga z desno tipko miške in izberite Open Attribute Table.
Opomba
V dokumentaciji QGIS je podroben članek o Types of error messages and their meanings, ki pojasnjuje vzroke za vse napake.
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.
QGIS ima vgrajen algoritem za samodejno odpravljanje geometrijskih napak. Poiščite in najdite algoritem
. Z dvojnim klikom ga zaženite.
V pogovornem oknu Fix Geometries izberite
India-States
kot Input layer in kliknite Run.
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 izberiteVertex Tool (Current Layer)
.
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.
Ko to storite, ponovno kliknite gumb Toggle Editing in kliknite Save.
Ponovno zaženimo algoritem
.
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.
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 imenomcolor_id
, ki ga lahko uporabite za dodelitev edinstvene barve, ki se razlikuje od sosednjih poligonov. Izberite slojColored
in kliknite gumb Open the Layer Styling Panel (Odpri ploščo za oblikovanje sloja).
Izberite renderer
Categorized
in stolpeccolor_id
kot Value. Kliknite Classify. Zdaj boste videli zemljevid, ki je obarvan tako, da imajo sosednji poligoni različne barve.
If you want to give feedback or share your experience with this tutorial, please comment below. (requires GitHub account)