MML:n 1:50000 maastokarttarasteri

Latasin otsikon aineiston MML:n tänään avatusta, todella hyvin toimivasta palvelusta. Linkkien näpyttelemistä oli juuri ja juuri siedettävän paljon (413 tiffiä + 413 tfw-tiedostoa) ja tavuja kertyi yhteensä 9,6 gigaa.

Koska MML:n lataussovellus toimii niin hyvin, niin ei tunnu järkevältä laittaa 1:50t rastereita samanlaisina jakoon. Koitan sen sijaan kehittää niistä jotain kivaa, jotain sellaista joka toimisi erityisen hyvin jollain avoimen lähdekoodin GIS-ohjelmalla ja tietysti GDAL:lla. Kolme ensimmäistä yritystä on johtanut epäonnistumisiin ja nyt on menossa neljäs lupaava kokeilu. Jos se epäonnistuu niin kokeilen huomenna illalla vielä paria muuta vaihtoehtoa. Jos niistäkään ei synny mitään kivaa, niin teen sitten ihan tavallisen zipin noista rastereista perjantaina. Huomasin nimittäin, että kun tekee GDAL:lla LZW-pakattuja tiffejä noista MML:n LZW-pakatuista tiffeistä, niin tiedostojen yhteenlaskettu koko pienenee 9,6 gigasta 4,8 gigaan eli aika tarkasti puoleen, mikä nyt on jo ihan merkittävä ero. Pitäisi kai sitten myös kokeilla, pienentäisikö sama ajo 30 gigatavun peruskarttarasteriaineistoa samassa suhteessa. Saa tuota kyllä ihan vapaasti kokeilla muutkin, komento on tällainen

gdal_translate -of GTiff -co tiled=yes -co compress=LZW -a_srs epsg:3067 UP412_RVK_25.tif UP412_RVK_25_GDAL.tif

Jos vaikka muuntaa kymmenen tai sata tiffiä noilla säädöillä ja laskee sitten alkuperäisten ja muunnettujen tiedostojen yhteiskoot niin pitäisi olla jo aika luotettava tieto vaikutuksesta. Tiffien sisäisestä laatoituksesta (-co tiled=yes) nyt on jo sinällään hyötyä kaikille paikkatieto-ohjelmille, niin kuin siitäkin, että tehdään kuvista geotiffejä, jolloin ei enää tarvita tfw-tiedostoja.

Tuossa 1:50000 mittakaavan setissä näyttää sitten olevan kolme pilallista karttaa, joissa ei ole mitään muuta sisältöä kuin koordinaattiristit. Täytyy laittaa MML:lle korjauspyyntö. Pitäisi varmaan jo ymmärtää, että lähtöaineistot kannattaa tarkistaa ennen kuin laittaa tuntikausia kestävät prosessoinnit käyntiin.

Muunsin peruskarttarasterit samalla komennolla ja vaikutus oli sama
gdal_translate -of GTiff -co tiled=yes -co compress=LZW -a_srs epsg:3067

Torrent-jakelun zippien tiedostokoko: 29,5 Gt
Zipeistä puretut tiffit levyllä: 41,5 Gt
Tiffit GDAL-muunnoksen jälkeen 18,6 Gt

Sekä alkuperäiset että GDAL:lla muunnetut tiffit ovat LZW-pakattuja eli häviöttömiä eli laatu on sama.

Yleensäkin, jos png- tai lzw-pakattujen kuvien tiedostokoko pienenee zippaamalla niin voi alkaa epäillä, ettei alkuperäinen pakkaus ole tehonnut parhaalla mahdollisella tavalla. GDAL:lla on mahdollista saada aikaan samanlaisia tuloksia. Tavallisimmin se käy niin, että suurta kuvaa varpataan koordinaattijärjestelmästä toiseen ja muunnos tehdään suoraan johonkin pakattuun muotoon. Kuvadata voidaan joutua kirjoittamaan levylle palasissa ja pakkaamaan samalla tavalla palasina. Tällöin jokainen pala voi olla hyvin pakattu, mutta koko kuvaa ajatellen voi olla mahdollista päästä tehokkaampaan pakkaukseen, jos kaikki kuvadata on alusta pitäen saatavilla.

Suosittelen lämpimästi tuon muunnoksen tekemistä, mutta testatkaa kuitenkin tulos ensin lempiohjelmillanne. Kaikki ohjelmat eivät avaa sisäisesti laatoitettuja tai LZW-pakattuja tiffejä.

Ai niin, kello oli käynnissä, koko erän (2910 tiffiä) muuntaminen heikolla Windows-kannettavalla USB-levyltä samalle USB-levylle kesti 4 tuntia 47 minuuttia.

1:50000-rasterin tilantarvetta pystyy vähentämään käyttämällä vielä lisää deflate-pakkausta (gdal_translaten optio -co compress=deflate) geotiffeissä: koko menee noin puoleen zip-paketeista. Huono puoli on, etteivät kaikki ohjelmat eivät osaa käyttää deflate-pakattuja kuvia. LZW-pakkaus toimii varmemmin.

PNG-kuvat voi kutistaa 10 - 20 % pienemmiksi pngcrushilla (pngcrush -m 113), mutta tämä lisää kovasti prosessointiaikaa, ja lopputulos on vähän isompi kuin deflate-geotiffillä.

Suositukseni on: pakkaa rasteri-geotiffit LZW:llä, jos edes se toimii käyttämilläsi ohjelmilla.

Pakkasin itseäni varten maastokarttarasterin 2910 tiffiä deflatella – aion käyttää niitä itse Qgisissä, joka osaa avata ne. Tilaa kuluu yhteensä 12,9 Gt, joka on 10 % vähemmän kuin torrentin 14,4 Gt:n datamäärä.

…muokkaus: Jos joku haluaa tehdä saman, ja käytössä on Linux ja perl-moduli File::Rename, niin tällaiset komentoloitsut minulla tekivät tämän. Nämä ajoin joka hakemistossa UK, UL, UM jne. erikseen.


find -iname '*.zip' -execdir 7z x \{\} \;
find -iname '*.tif' -print0 |xargs -t0 -I plomp gdal_translate -of GTiff -co tiled=yes -co compress=deflate -co tfw=yes -a_srs epsg:3067 plomp plomp-g.tif
rename -f 's|\.tif-g||' */*
rm */*.zip

  1. rivi: purkaa zipit omiin hakemistoihinsa.
  2. rivi: muuntaa MML:n tiedoston deflate-pakatuksi ja laatoitetuksi geotiffiksi (nimeen tulee jatkoksi -g.tif), sekä tekee ns. worldfilen. Worldfilen tekeminen ei ole välttämätöntä Qgisin kannalta
  3. rivi: nimeää äsken luodut tiedostot siten, että ne korvaavat alkuperäiset tiffit
  4. poistaa zipit.

Rasterimaastokartta mittakaavassa 1:250000 saatavilla yhtenä JPEG2000-tiedostona
http://laillisettorrentit.net/index.php?page=torrent-details&id=d1d3a55c9f1a5ab3897fee1f6f8d778cb3f220b0

Kartta on testattu OpenJUMP Plussalla, Kosmo GIS:llä ja gvSIG:llä ja niillä sen pitäisi toimia varsin hyvin. GDAL:iin perustuvilla ohjelmilla kartta tuskin toimii, ellei GDAL:issa ole mukana joko JP2KAK- tai JP2ECW-ajuria. Nykyisin yleensä ei ole, koska molemmat vaativat lisenssin.

JPEG2000-pakkaus ei rasterikarttojen yhteydessä säästä tilaa, niille sopii parhaiten väripaletin käyttö yhdistettynä deflate- tai LZW-pakkaukseen. Mutta ei JPEG2000 rasterikartoillakaan toivottoman huono ole. Sopivilla parametreillä pakattuna kartta aukeaa rivakasti kaikissa mittakaavoissa, eikä laadun menetys ole merkittävää jos tekee pakkauksen suurin piirtein LZW:tä vastaavaan tiedostokokoon. 1:250000 -karttojen tiedostokokojen vertailu

  • GDAL:lla LZW-pakattuina 468 Mt
  • Pakkaamattomina 24-bittisinä 17 Gt
  • Lähes häviötön JPEG2000 600 Mt

JPEG2000 ei tarvitse niin sanottuja pyramiditasoja eli suurempiin pikselikokoihin heikennettyjä versioita kaukaa katsomista varten. Niiden tekeminen syö levytilaa noin 30 % alkuperäisten kuvien koosta, joten LZW:n 468 ja JPEG2000:n 600 Mt ovat näin laskettuna sama asia.

Avautui ja toimii hienosti QGIS 1.7.3:lla, Windows 7, i5-kone 8GB muistia.
Onko ajatuksissa tehdä vastaavaa suurempimittakaavaiselle rasteriaineistolle (tuolle 1:50000) esim paloina?

On kyllä. 1:100000 rastereista tein jo yhden version, mutta MML:n latauspalvelusta puuttuu lehti W34R eikä karttaa, josta puuttuu käsivarren huippu, kehtaa laittaa tarjolle. Kunhan puuttava pala on saatavilla niin haeskelen sopivan pakkaussuhteen ja laitan tuloksen saataville. Ensimmäinen yritys tuotti 3,2 gigatavun JP2-tiedoston, mutta silmämääräisesti häviöttömään laatuun taitaa päästä vähän tiukemmallakin pakkaamisella.

Sen jälkeen on tietysti pakko kokeilla, onnistuuko myös kaikkien 1:50000 rastereiden puskeminen yhteen JPEG2000-tiedostoon, ja seuraavaksi sama juttu peruskarttarastereilla. Todennäköisesti ainakaan peruskartoilla ei ole enää mitään järkeä laitttaa koko maata yhteen tiedostoon, koska tiedostokoko tulisi olemaan varmaankin vähintään 20 gigatavua ja sen jakaminen alkaisi käydä turhan hankalaksi. Mutta järkevyyden ja ohjelmistojen suorituskyvyn rajat löytää vain menemällä ensin vähän yli.

Tuo 1:100000 mittakaava näyttäisi olevan viimeinen, jonka voi vielä pakata yhdeksi ainoksi tiedostoksi ilman rahaa. Sen jälkeen Kakadun demo-ohjelman ominaisuudet loppuvat kesken. Jos Kakadulla tahtoo päästä tuon rajan yli, niin tarvitaan vähintään “Non-commercial, named user licence” (250 USD), joka oikeuttaa kääntämään kdu_compress -ohjelman itse ja paremmilla optioilla. Linuxille riittää tuo investointi, Windowsille kääntämiseen tarvittataan lisäksi Microsoftin Visual Studio Professional (500 USD). Kakadun nykyiset non-commercial -lisenssiehdot ovat niin kaiken kieltävät, että heikottaa, mutta kyllä ne sen sallivat, että pakkaa kuvia JPEG2000-muotoon ja antaa ne ilmaiseksi pois.

Tekeillä on myös ohje siitä, miten tuon pakkaamisen voi tehdä itse. Tälläkin kertaa on tullut vastaan muutamia jänniä hankaluuksia, joista selviäminen ei sinänsä ole vaikeaa, mutta ilman aikaisempaa kokemusta voisi olla vaikea keksiä, mitä kautta ongelmat kannattaa kiertää.

Kertomus siitä, kuinka tuo 1:250000 mittakaavan mosaiikki tehtiin on nyt saatavilla osoitteesta
http://latuviitta.org/documents/JPEG2000_mosaiikki_MML_rastereista.pdf

Rivien välissä on myös muihin tarkoituksiin yleistettävää tietoa JPEG2000:sta ja GDAL:in virtuaalirastereista, jotka ovat hienoja juttuja molemmat. Harmi vain, ettei JPEG2000:lle ole vielä oikein todella hyvää avoimen lähdekoodin kirjastoa.

1:100000 mittakaavan mosaiikki on ladattavissa
http://laillisettorrentit.net/index.php?page=torrent-details&id=76042dcb8d5529a4aac66f53381c552920335a42

Pakkasin tällä kertaa vähän tiukempaan, ja laadun huononemisen alkaa jo huomata, kun katsoo esimerkiksi peltoja tai muita tasavärisiä alueita. JPEG2000-pakkaus alkaa sutata alueita ja tekee ne kirjaviksi. Toisaalta yhden gigatavun tiedostokoko 144000 x 249600 pikselin kartalle ei ole paha. Tämä mosaiikki syntyy vielä samoilla ohjelmilla ja ohjeilla kuin 1:250000 mittakaavan mosaiikkikin, joten kuka tahansa voi tehdä kuvasta helposti oman versionsa.

Tämä alkoi jo QGIS:lle tuottaa vaikeuksia. Tai ei varsinaisesti vaikeuksia, mutta jonkin aikaa piti odottaa, että ohjelma sai luettua tiedoston ja sen jälkeen kartalla liikkumisessa oli pieniä viiveitä. Käytettävyydeltään kuitenkin riittävä ja kuvan laatu samoin riittävä katselutarkoituksiiin.

Aijai, jos tämän aineiston saisi kännyyn. Voisi mennä metsään vaan eikä tarvitsi huolehtia, onko kartta mukana.

1:50000 mittakaavan mosaiikki on ladattavissa
http://laillisettorrentit.net/index.php?page=torrent-details&id=ef25a0ea9b876bf963ec7a88f1a3557c1328d852

Pakkaus on tehty täsmälleen samoilla parametreillä kuin 1:100000 mosaiikissakin. Pikselimäärä taas nelinkertaistui ja kuvan koko on nyt 288000x 480000 pikseliä, eli ennen pakkaamista tiedostokoko RGB-tiffinä oli 414 gigatavua. Suuren tyhjän valkoisen alueen takia pakkaussuhteella 1:100 tuli vielä ihan käyttökelpoista laatua, minkä voi tarkistaa avaamalla seurantapalvelimen sivun kuvaruutukaappaukset. Koko kuvan lataaminen tulee olemaan hidasta, koska minulla on vain 1 Mb/sek linja käytössä ulospäin.

Tämän kartan kanssa voisi mennä jo vaikka suunnistamaan, mutta kännyssä se ei kyllä taida kovin sujuvasti toimia. Suosittelen kuvan katselemiseen ainakin ensimmäisellä kerralla kdu_show -ohjelmaa, niin saa tuntumaa siitä, kuinka hyvin JPEG2000 voi toimia oikeilla ohjelmilla.

Peruskartoista en enää viitsi tehdä JEPG2000-mosaiikkeja. Pakkaaminen sinänsä ei olisi ongelma, vaikka koko maan mosaiikin tilapäiselle tiffille 1 metrin pikselikoolla tulisikin kokoa noin 2 teratavua. Valmiin 20 Gt:n suuruisen JPEG2000-kuvan jakelu ei kuitenkaan enää onnistuisi minun kaistanleveydelläni. Järkevämpää olisi varmaan jakaa koko maa vähintään neljään kuvaan. Jos kiinnostuksen kohde on vain maakunnan tai pitäjän kokoinen alue, niin tiedostokoko tulee hyvin kohtuulliseksi. Noita mosaiikkeja voi kuka tahansa voi tehdä halunsa ja tarpeensa mukaan, koska ilmaisia ohjelmistoja, vapaita peruskarttoja ja jonkinlainen työohjekin on saatavilla. Toivottavasti nämä mosaiikit lisäävät uskoa JPEG2000-tiedostomuodon mahdollisuuksiin. Se ei todellakaan ole vain uudempi ja hitaampi JPEG-versio, vaan jotain ihan muuta.