MML:n korkeusmallien haltuunotto

Tein vähän kokeiluja Maanmittauslaitoksen 10 metrin korkeusmallitiedostoilla, otin kellolla aikaa ja kirjoitin pikku ohjeen siitä, kuinka koko maan aineiston saa GDAL:in avulla haltuun jopa alle tunnissa.
http://latuviitta.org/documents/Maanmittauslaitoksen_korkeusmallin_haltuunotto.pdf

Kiva. Nyt sitten aineistosta joku tämänkaltainen palvelu: http://www.zoo-project.org/site/ZooWebSite/Demo/GdalProfile#ZOOelevationprofiledemo ("ZOO elevation profile demo ")
Palvelinpään Koodia saattaisi löytyä täältä: http://zoo-project.org/trac/browser/trunk/zoo-services/gdal/profile?rev=50&order=name

Siitähän syntyisi sitten Latukartan profiilit :slight_smile:

Olisi tarvetta saada muunnettua SRTM HGT muotoista korkeusdataa tuosta MML 2m Korkeusmallista. Tarve ei ole kovin suurille alueille kerrallaan, luokkaa 4 data “palasta” riittänee jo alkuun. Olisiko vinkkiä miten ja millä ohjelmilla tuo muunnos kannattaisi tehdä? Mahdolliset ohjeet saisi olla mallia “rautalanka”, kun pieni harrastaja joukko kyseessä. Käyttökohteena UAV&Lennokki käyttöön tehty autopilotin opensource hallintasofta. Kokeilin yhtä online konvertointi työkalua huonoin tuloksin…

Ei juuri mitään hajua, en ole koskaan aikaisemmin tehnyt mitään korkeusmalleilla. SRTM näyttää vaativan täsmälleen oikean kokoisen palan, 1201x1201 tai 3601x3601 pikseliä ja suorakulmaisesti lat-lon -laatikkoon asetettuna.

Jotenkin tuntuu, että kyllä se GDAL:in avulla syntyy. GDAL-muunnos SRTM HGT:hen onnistuu vain, jos sille tarjotaan täsmälleen oikean kokoinen pala oikeassa projektiossa
http://www.gdal.org/frmt_various.html#SRTMHGT

Ensimmäinen homma on koota tarpeeksi korkeusmallinn paloja ja purkaa ne zipeistä johonkin hakemistoon. gdalbuildvrt:llä niistä tehdään virtuaalimosaiikki.

Sitten tehdään se täsmälleen oikea pala gdalwarpilla vaikkapa geotiffiksi EPSG:4326 -projektioon (parametri -t_srs epsg:4326). Lähtöprojektiokin (espg:3067) pitää kertoa, koska .asc-tiedostostä tätä tietoa ei löydy. Syntyvän kuvan ulottuvuudet täytyy valita oikein, ja ne annetaan -te xmin ymin xmax ymax. Ja koska kuvan piti olla tietyn kokoinen, niin tarvitaan -ts width height, eli tässä tapauksessa -ts 1201 1201. Koko komento on siis lähellä tätä

gdalwarp -s_srs epsg:3067 -t_srs epsg:4326 -te [tähän oikea laatikko] -ts 1201 1201 virtuaalimosaiikki.vrt väliaikainen.tif

Sitten gdal_translatella muunnos. Jos edellä tehty pala on oikea, niin se menee läpi, muussa tapauksessa se ei mene läpi.

gdal_translate -of SRTMHGT väliaikainen.tif autopilotti.hgt

Kiitos! Pitää tutkailla tuota GDAL:ia tarkemmin, kun ei ole tuttu.

SRTM näyttää olevan vakiotuote. Jokainen korkeusmallin pala on neliö, jonka koko on yksi aste suuntaansa. Aste on jaettu joko yhden tai kolmen kaarisekunnin suuruisiin pikseleihin, mistä syntyy kuvapalan ulottuvuudet, joko 1200 tai 3600 pikseliä per kuva. Yksi ylimääräinen pikselirivi tarvitaan siitä syystä, että korkeusarvo on liitetty pikselin keskipisteeseen. Metrin mittaisen viivan peittämiseen kokonaan tarvitaan 11 desimetrin kanttiinsa olevaa neliötä, jos ensimmäisen neliön keskipiste laitetaan viivan alkupisteen päälle.
Koska SRTM:n yhden kaarisekunnin resoluutio vastaan päiväntasaajalla noin 30 metriä, niin kahden metrin korkeusmallin käytöstä ei ole mitään hyötyä. Kymmenmetrinen toimii ihan yhtä hyvin, ja sitäkin joutuu selvästi yleistämään.

SRTM-muunnoksessa voidaan siis käyttää lähtökohtana sitä VRT-tiedostoa, joka tuossa viitatussa ohjeessa syntyy. Muunnosta tarkempaan SRTM-muotoon voisi kokeilla näillä komennoilla. Tässä otetaan pala väliltä 60-61°N, 27-28 °E
Tuloskuvan nimi annetaan vasemman alakulman asteiden mukaan, eli tässä tapauksessa N60E027.hgt

gdalwarp -s_srs epsg:3067 -t_srs epsg:4326 -te 27 60 28 61 -ts 3601 3601 korkeusmalli_10m.vrt temp.tif

gdal_translate -of SRTMHGT temp.tif N60E027.hgt

Gdal_translate antaa seuraavan varoituksen:
0Warning 1: The corner coordinates of the source are not properly aligned on plain
latitude/longitude boundaries.

Tämä johtuu siitä, että oikeasti pala pitäisi leikata puoli pikseliä suuremmaksi joka suuntaan eikä tasa-asteiksi. Kokeilin tehdä tuota säätöä, mutta sain saman virheilmoituksen silti. Minä kokeilisin mahtaisiko tuo tulokseksi saatava SRTM-tiedosto toimia autopilotissa, ja jos toimii, niin unohtaisin tietäväni, että korkeusmallin reunoilla korkeusarvot on mitattu muutama metri eri paikasta. UVA-lennokkiakin ajettaessakin tarvitaan varmaan sen verran turvatoleranssia, ettei tuo haittaa. Virhehän ei kasaannu, vaikka käytössä olisi isompikin pala korkeusmallia.