Praktikum 7 Georefereerimine
Georefereerimine on raster- või vektorandmete sidumine geograafilise või projitseeritud koordinaatide referentssüsteemiga. Näiteks võime koordinaatide referentssüsteemiga siduda ajaloolise kaardi või ortofoto. Tänapäeval tehakse seda peamiselt digitaalselt.
Georefereerimiseks tuleb märkida samad kohad võimalikult täpselt georefereeritaval kaardil või fotol ja (tänapäevasel) kindlas koordinaatide referentssüsteemis oleval aluskaardil. Georefereerimise tulemusel luuakse rasterkujutisest uus GeoTIFF fail või lisatakse olemasolevale failile nn world file, milles on defineeritud rastri asukoht, mõõtkava ja pöördenurk. GeoTIFF-faili nägime ka QGISi sissejuhatavas praktikumis, kui laadisime QGISi Tartu 1995. ja 2023. aasta ortofotod.
Tänases praktikumis otsime välja ajaloolised kaardid, mida soovime QGISis kasutada, georefereerime need, lõikame vajalikku suurusesse ning digiteerime neilt huvipakkuvad objektid.
7.1 Kaartide otsimine ja allalaadimine
Otsime Rahvusarhiivi kaartide infosüsteemist ra.ee/kaardid kaardi 19. saj Tartust ning 17. saj kaardi Jõelähtme ja Jägala-Joa piirkonnast. Näidetes kasutame järgmisi kaarte:
- Plan der Stadt Dorpat mit Bezeichnung der hervorragenden Gebäude und Sämmtlicher Hausnummern, EAA.402.5.637 (leht 73), 1870. Tartu linna kaart koos silmapaistvate hoonete ja majanumbritega.
- Jackowal Hofs Byar uti Jegelecht Sochn belägne, EAA.1.2.C-III-8, 1688. Jägala mõisa külad Jõelähtme kihelkonnas.
Võib kasutada samu või muid sarnaseid kaarte nendest piirkondadest. Laadime kaardid alla ning tõstame need enda arvutis kursuse kaustas andmete või kaartide kausta.
7.2 Harjutus 1: vana Tartu kaardi georefereerimine
Avame QGISi. QGISis on georefereerimise tööriist Georeferencer
leitav ülevalt menüüst Layer
alt.
Vanemates QGISi versioonides leiad tööriista Raster menüü alt. Juhul, kui seal valikut Georeferencer ei ole, siis tuleb see aktiveerida. Selleks vali Plugins → Manage and Install Plugins → otsingusse kirjuta Georeferencer → tee linnuke Georefencer GDAL Plugin ette ja sulge see aken. Nüüd on tööriist Georeferencer rastrimenüü all näha. Tööriista sisselülitamine on ühekordne tegevus, järgmisel korral QGISi avades on see juba olemas.
Georefereerimise tööriista kohta saab täpsemalt lugeda QGISi juhendist.
7.2.1 Avame kaardi pildifaili
Avame Georeferencer
tööriista ning selles 19. saj Tartu kaardi: File → Open Raster
. Selles aknas liikumine käib samamoodi nagu tavalises kaardiaknas. Suumida saab hiire rullikuga ning liikuda noolte ja hiirega liikuda, kui valitud on käekujuline Pan
ikoon. Vaatame kaardil ringi. Milliseid kohti ära tunneme?
7.2.2 Lisame aluskaardi
Georefereerimiseks on vaja aluskaarti, mille pealt leida ühised punktid ajaloolise kaardiga. Selleks laadime QGISi põhiaknasse Maa-ameti fotokaardi WMS-teenusest ortofoto
ning ajalooliste aluskaartide WMS-teenusest Hübriidkaardi
. Nende kasutamiseks tuleb luua ühendus aadressidega https://kaart.maaamet.ee/wms/fotokaart?
ja https://kaart.maaamet.ee/wms/ajalooline?
. WMS-ühenduse loomisest on täpsemalt juttu näiteks QGISi sissejuhatavas praktikumis.
Lisaks laadime ajalooliste kaartide WMS-teenusest ka üheverstase ja kolmeverstase kaardi, millega on hea georefereerimisel tänapäevast olukorda kõrvutada. Need kaardid ise on samuti georefereeritud ning võivad olla seetõttu kohati ebatäpsed.
7.2.3 Georefereerime kaardi
Märgime ära mõned ühesugused geograafilised punktid georefereeritaval kaardil ja tänapäevasel aluskaardil. Selleks võtame ette jälle Georeferencer
akna. Georefereerija aknas valime Edit → Add point
ja klikime ajaloolisel kaardil mõnel hästi tuvastataval objektil. Näiteks TÜ peahoone, raekoda, kaarsild, tähetorn, Jaani kirik vms. Võib ka kasutada näiteks tänavate ristumiskohti. Seejärel valime From map canvas
ning klikime tänapäevasel aluskaardil samas kohas.
Märgime samamoodi veel neli kuni kümme punkti kaardil. Võimalusel asetame punktid kaardil võimalikult laiali, sest nii saab suurema ala kohta täpsema tulemuse.
Kui tahame, et aluskaart oleks sama nurga all nagu georefereeritav kaart, võime aluskaarti QGISi peaaknas mingi nurga alla keerata. Selleks vaab alamenüüs muuta Rotation
parameetri väärtust.
Seejärel tuleb valida georefereerimise sätted. Klikime georefereerija aknas kollasel hammasrattal ja vaatame, et sätted oleksid nii nagu siinsel pildil.
Vajutame rohelisel noolekesel Start Georeferencing
. Nüüd ilmub georefereeritud kaart QGISi peaaknasse (juhul, kui sätetes oli tehtud linnuke valiku Load in QGIS when done
ette).
Vaatame, kui hästi tänapäevase koordinaatide referentssüsteemiga sidumine õnnestus. Kui kaart on väga paigast ära, siis saame lisada rohkem punkte või muuta transformatsiooni tüüpi. Vastavatest algoritmidest saab täpsemalt lugeda tööriista Georeferencer
juhendist, ent lühidalt:
Linear
algoritm sobib põhiliselt siis, kui tegu on kõrge kvaliteediga rasterkaardiga, mille koordinaatide referentssüsteem on teada. See kohandab kaardi mõõtkava, ent ei võimalda kujutist pöörata ega muul moel muundada, kuna ei muuda originaalkujutise piksleid. Enamasti sobib see seega uuematele kaartidele, mis on (kindlas projektsioonis) suure täpsusega.
Helmerti
algoritm sobib hea kvaliteediga suuremõõtkavalistele rasterkaartidele või ortofotodele, mille koordinaatsüsteem ei pruugi ühtida aluskaardi omaga. Võimaldab kujutist ka pöörata.
Polynomial
1. algoritm lubab georefereeritavat kujutist rohkem muundada, aga tagab siiski selle, et sirged jooned kaardil jääksid sirgeteks ja paralleelsed jooned paralleelseteks.
Polynomial
2. ja 3. algoritm lubavad kujutist veelgi rohkem muundada, sh painutada kujutisel olevaid sirgeid jooni.
Projective
algoritm on nagu Polynomial 1. algoritm, aga ei säilita joonte paralleelsust ning eri punktidel võib georefereeritud kaardi ulatuses olla lõpuks pisut erinev mõõtkava.
Thin Plate Spline
algoritm sobib eriti hästi väga ebatäpsetele kaartidele või kaartidele, mille projektsioon ei ole teada. Sälitab märgitud punktide asukohad, ent võib moonutada kõike, mis jääb punktidest eemale. Nõuab heaks tulemuseks algoritmidest kõige enam punkte (vähemalt 10).
Kui georefereerimise algoritmid moonutavad algse kujutise piksleid, tuleb uues, georefereeritud rasterfailis määrata korrapärases rastris sellistele pikslitele mingid uued väärtused. Seda tehakse originaalkujutise naaberpikslite abil. Resampling method
määrabki ära, kui palju ja milliseid naaberpiksleid uue väärtuse määramisel arvestada.
Võime soovi korral lisada nüüd juurde punkte, neid liigutada või mängida sätetega, et saada paremat tulemust. Proovime näiteks ka Helmerti algoritmi ja Polynomial 1 algoritmi.
7.2.4 Lõikame kaardist välja ainult vanalinna osa
Rastri lõikamiseks valime menüüst Raster → Extraction → Clip raster by extent
.
- Vaatame, et
Input layer
oleks georefereeritud kaart,
Clipping extent
juures klikime sirvimise ikoonil ja valimeDraw on canvas
- ning joonistame peaaknas nelinurga, mis kataks suurema osa vanalinnast.
Clipped (extent)
juures klikime sirvimise ikoonil, valimeSave to File
ning salvestame faili sobiva nimega kursuse kausta.
- Klikime nupul
Run
.
Nüüd on lõigatud kaart peaaknas näha. Sellist lõikamist (ingl clipping) saab teha ka vektorkihi abil, aga sellest hiljem.
7.3 Harjutus 2: ajalooline maakasutus Jägala mõisa külades
Harjutuse eesmärk on uurida ühe Põhja-Eesti küla ajaloolist maakasutust. Selleks tuleb georefereerida kaart, see osaliselt digiteerida ning arvutada digiteeritud alade pindalad. Digiteerimine tähendab uuele, tühjale vektorkihile punkt-, joon- või polügoonobjektide lisamist koos nende atribuutide väärtustega.
7.3.1 Kaardi georefereerimine
Georefereerime Jägala mõisa külade 17. sajandi kaardi, kasutades samu aluskaarte, mida varem. Praema võrdlemise jaoks võime aluskaarti jällegi pisut keerata (nt 20 kraadi).
Kuna niivõrd vanal kaardil on hooneid, teid ja muid pidepunkte vähem, siis on soovitatav pidepunktidena kasutada looduslikke objekte. Sellel kaardil on heaks pidevaks objektiks jõgi.
Valime sobiva transformeerimise algoritmi (nt Helmert).
Pärast georefereerimist võime ajaloolist kaarti ka pisut läbipaistvamaks teha, et vaadata, kui hästi see aluskaardiga klapib (topeltklikk georefereeritud kaardil → Transparency → Global Opacity
.
7.3.2 Digiteerimine
Loome tühja vektorkihi alade (Polygon) märkimiseks: Layer → Create Layer → New Geopackage Layer
(võid valida ka muu vektorandmete vormingu) ja paneme selle nimeks nt koila_maakasutus. Lisame kihi atribuutide hulka ka tekstilise tunnuse/atribuudi/tulba (string
) nimega tyyp.
Nüüd on maakasutuse alade märkimiseks loodud tühi kiht, mis ilmus ka kihtide paneelile. Seda kihti paneelil sisse-välja lülitades ei juhtu hetkel midagi, kuna sellel pole veel ühtegi punkti. Kihi atribuuttabelit vaadates on näha, et see on tühi.
Digiteerime georefereeritud 17. sajandi kaardilt Koila küla põllud ja heinamaad. Iga märgitud ala juurde kirjutame, kas see on põld või heinamaa. Kaardi tingmärkide tuvastamisel on abiks Rahvusarhiivi leppemärkide juhend. Koila küla põllumaade tuvastamisel vaadake ajaloolise kaardi vasakul all nurgas olevat legendi. Koila küla on tähistatud B tähega (Koillküla, vt nt EKI kohanimeraamatut).
- Klikime kihtide paneelil kihil
koila_maakasutus
ja vajutame üleval tööriistaribal kollasele pliiatsile (võiLayer → Toggle editing
). Pliiatsi kõrval olevad ikoonid muutuvad värviliseks. Valime kollasel taustal oleva valge tähekesega ikooniAdd Polygon Feature
. Nüüd saame kaardile polügoone märkida.
- Märgime hiirega klõpsates ühe digiteeritava põllumaa polügooni piirid. Kui oleme lõpetanud, teeme paremkliki. Avanenud aknas peame polügoonobjektile määrama atribuudi
tyyp
väärtuse. Määrame selleks põld.
- Kuna põllu- ja heinamaad piirnevad üksteisega, siis on kasulik aktiveerida haakumine ehk snapping, et üksteisega külgnevate alade ühised käänupunktid oleksid täpselt samade koordinaatidega. Selleks valime
View → Toolbars → Snapping Toolbar
klikime punasel magneti ikoonil ja valime selleks, mille külge haakida, käänupunktid (Vertex
). Nüüd haakub kursor kihi läheduses automaatselt selle käänupunktide külge.
- Haakimise lihtsustamiseks võib sisse lülitada ka tööriista
Enable tracing
, mis võimaldab üht vektorobjekti teise külge haakida, ilma et peaks kõiki punkte käsitsi läbi klikkima. Piisab vaid kursori liigutamisest üle teise vektorobjekti käänupunktide.
- Vahel, kui tahame ükshaaval käänupunktide märkimist lihtsustada ja “joonistada” lihtsalt vaba käega, võime valida pliiatsi kõrvalt tööriista
Stream Digitizing
.
- Kui oleme alad digiteerinud, vajutame
Save
ja uuesti kollase pliiatsi ikooni, et lõpetada korraks kihi muutmine.
7.3.3 Pindalade arvutamine
Arvutame igale märgitud alale selle pindala. Selleks tuleb atribuuttabelisse luua pindala tulp ja sisestada avaldis selle arvutamiseks. Avame tööriista Field Calculator
(nt tööriistapaneelilt või atribuuttabeli juurest). Teeme linnukese valiku Create a new field
ette, tulba nimeks paneme pindala_ha ja tulba andmetüübiks määrame kümnendmurru (Decimal number (real)
).
Expression
lahtrisse, mis ütleb, kuidas ja mille põhjal loodud tulpa väärtusi lisada, kopeerime koodi round($area / 10000, 2)
. See arvutab iga ala pindala ruutmeetrites ($area
), jagab selle 10 000-ga ehk teisendab hektariteks ja lõpuks ümardab tulemuse (round()
) kahe komakohani.
Tulemuseks on kiht, mille atribuuttabelis on olemas alade pindalad. Seda saab kasutada näiteks maakasutuse ulatuse ja muutuste uurimiseks.
7.4 Harjutus 3: käsikirjalise kaardi georefereerimine
Georefereerime kaartide praktikumis käsitsi joonistatud kaardid Tartu kesklinnast. Valime sobivaima algoritmi.
7.5 Veebilahendus
georeferencer.com töötab sisuliselt täpselt samamoodi nagu QGISi Georeferencer, aga võimaldab georefereerida internetis ja ilma spetsiaalse tarkvarata.