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.
Tartu kaart 1870. a

Joonis 7.1: Tartu kaart 1870. a

  • 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.
Jägala mõisa kaart 1688. a

Joonis 7.2: Jägala mõisa kaart 1688. a

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.

Sama asukoha märkimine

Joonis 7.3: Sama asukoha märkimine

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.

Georefereerimise sätted

Joonis 7.4: Georefereerimise sätted

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).
Põhilised georefereerimise algoritmid ([gis.stackexchange.com](https://gis.stackexchange.com/questions/367659/differences-between-different-georeferencing-transformation-algorithms-in-qgis))

Joonis 7.5: Põhilised georefereerimise algoritmid (gis.stackexchange.com)

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.

Georefereerimise *Resampling* meetodid ([The Core of GIS Science 2020](https://ltb.itc.utwente.nl/498/concept/81586))

Joonis 7.6: Georefereerimise Resampling meetodid (The Core of GIS Science 2020)

Georefereeritud Tartu kaart hübriidkaardi ja ortofoto taustal

Joonis 7.7: Georefereeritud Tartu kaart hübriidkaardi ja ortofoto taustal

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 valime Draw on canvas
  • ning joonistame peaaknas nelinurga, mis kataks suurema osa vanalinnast.
  • Clipped (extent) juures klikime sirvimise ikoonil, valime Save to File ning salvestame faili sobiva nimega kursuse kausta.
  • Klikime nupul Run.
Georefereeritud Tartu vanalinna kaart

Joonis 7.8: Georefereeritud Tartu vanalinna kaart

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.

Jägala jõe ümbruse georefereeritud kaart

Joonis 7.9: Jägala jõe ümbruse georefereeritud kaart

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.

Maakasutuse digiteerimise kihi tegemine

Joonis 7.10: Maakasutuse digiteerimise kihi tegemine

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õi Layer → Toggle editing). Pliiatsi kõrval olevad ikoonid muutuvad värviliseks. Valime kollasel taustal oleva valge tähekesega ikooni Add 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.
Alade digiteerimine

Joonis 7.11: Alade digiteerimine

  • 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.
Digiteerimine vabakäe meetodil

Joonis 7.12: Digiteerimine vabakäe meetodil

  • 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.

Pindala arvutamiseks tulba loomine ja kasutatud funktsioon

Joonis 7.13: Pindala arvutamiseks tulba loomine ja kasutatud funktsioon

Tulemuseks on kiht, mille atribuuttabelis on olemas alade pindalad. Seda saab kasutada näiteks maakasutuse ulatuse ja muutuste uurimiseks.

Digiteeritud maa-alad

Joonis 7.14: Digiteeritud maa-alad

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.