Hyppää sisältöön

Welcome to our weekly research support coffee hour on Zoom! Click here for more information.

Warning!

Puhti scratch disk is becoming very full (80+ % ) resulting in performance degradation. Everybody is advised to only keep actively processed data on scratch, all other data should be deleted, transferred to host institute or stored in Lumi-O. No new quota will be granted. Click here for a tool for examining your disk usage.

GDAL

GDAL on erittäin monipuolinen avoimen lähdekoodin kirjasto rasteri- ja vektoridatalle, ja se tukee kymmeniä eri tiedostomuotoja sekä mitä tahansa koordinaattijärjestelmää. Monet paikkatieto-ohjelmistot käyttävät GDALia taustalla datan lukemiseen ja kirjoittamiseen. GDAL on yleensä erittäin nopea, mutta useimmissa tapauksissa se ei tue rinnakkaislaskentaa. GDALissa on myös Java- ja Python-rajapinnat. Lisäksi kirjasto sisältää komentorivikäyttöliittymän työkaluja moniin eri tarkoituksiin. Alla tarkastelemme muutamia niistä.

Alkuun pääseminen

  • Asenna GDAL. Jos olet jo asentanut QGISin tai R/Python GIS -paketteja, GDAL on todennäköisesti jo asennettuna. Selvitä vain, missä se sijaitsee; etsi esimerkiksi OSGeo shell, Anaconda Prompt tai gdalinfo-tiedosto levyltäsi.
  • Avaa pääte, OSGeo shell, Anaconda Prompt tai Windowsin komentokehote.
  • (Katso komentorivin perusohjeet tämän sivun lopusta.)
  • GDAL on saatavilla Puhdissa.

Päätyökalut

  • gdalinfo ja ogrinfo - tiedoston metadatan tulostamiseen (koordinaattijärjestelmä, tiilitys, kaistat, attribuuttikentät jne.). Työkalut, joiden nimessä on gdal, ovat rasteritiedostoille ja ne, joiden nimessä on ogr, vektoritiedostoille.
  • gdal_translate ja ogr2ogr - tiedostomuodon vaihtamiseen ja tiedostojen muokkaamiseen.
  • gdalwarp ja ogr2ogr - koordinaattijärjestelmän vaihtamiseen
  • gdal_merge and ogr2ogr - tiedostojen yhdistämiseen
  • gdal_edit - rasteritiedostojen muuttamiseen paikallaan
  • gdalbuildvrt - virtuaalirasterien luomiseen, katso lisätietoja Virtuaalirasterit-oppaastamme.
  • GDALissa on lisäksi monia muitakin työkaluja; täydellinen viite löytyy GDAL-ohjelmien sivulta, jossa kaikki työkalut ja niiden valinnat on kuvattu yksityiskohtaisesti.

On tärkeää huomata, että useimmat työkalut luovat uuden tiedoston, jolloin jotkin asetukset voivat muuttua, koska käytetään GDALin oletusarvoja, esimerkiksi rasterin sisäinen tiilitys tai pakkaus. Jos haluat säilyttää nämä, tarkista gdalinfo-komennolla, mitä on käytetty, ja lisää komentoihin tarvittavat lisävalinnat.

EPSG-koodit

Helpoin tapa määrittää koordinaattijärjestelmä GDALissa on käyttää EPSG-koodeja. Suomen yleisimmät koodit ovat:

3067 ETRS-TM35FIN  
4326 WGS-84

Esimerkkejä

Tulosta tiedoston metadata

gdalinfo file.tif  
ogrinfo -al -so file.shp

Vaihda koordinaattijärjestelmä

Käytä -t_srs uuden koordinaattijärjestelmän määrittämiseen.

ogr2ogr -t_srs EPSG:3067 output.shp input.shp  
gdalwarp -t_srs EPSG:4326 input.tif output.tif

Jos alkuperäistä koordinaattijärjestelmää ei ole kirjoitettu tiedostoon tai GDAL ei ymmärrä sitä oikein, sen voi antaa valinnalla -s_srs:

gdalwarp -s_srs EPSG:3386 -t_srs EPSG:2393 input_kkj0.tif output_kkj3.tif

Lisää koordinaattijärjestelmä

Jos haluat lisätä koordinaattijärjestelmän tiedostoon käsin, käytä valintaa -a_srs (tämä ei muuta dataa, vaan lisää vain tiedon koordinaattijärjestelmästä).

ogr2ogr -a_srs EPSG:2394 output_no_srs.shp input_kkj4.shp
gdal_edit -a_srs EPSG:3067 input.tif
gdal_translate -a_srs EPSG:2394 input_no_srs.tif output_kkj4.tif

Vaihda tiedostomuoto

gdal_translate input.ecw output.tif  
ogr2ogr output.shp input.mif

Aseta rasteritiedostolle pakkaus ja tiilitys.
gdal_translate -co COMPRESS=JPEG -co "TILED=YES input.ecw output.tif

Luo Cloud Optimized GeoTiff; se sisältää oletuksena tiilityksen ja sisäiset yleiskatselutasot gdal_translate world.tif world__cog.tif -of COG -co COMPRESS=LZW

Käytä vektoridatan attribuuttidatalle tiettyä merkistökoodausta.

ogr2ogr output.shp input.gml -lco ENCODING=UTF-8

Lue dataa WFS-verkkopalvelusta.

ogr2ogr output.shp WFS:"http://geohub.jrc.ec.europa.eu/effis/ows" layername

Lue esimerkiksi Geofabrikista ladattua OpenStreetMap-dataa.

ogr2ogr OSM_aineisto finland-latest.osm.pbf

Valitse vain järvet tai kunnat. Tarkista data ogrinfo-komennolla ja katso OpenStreetMapin Map Features -sivulta, miten voit valita muita kohteita.

ogr2ogr -where "natural like 'water'" fin_lakes.shp finland-latest.osm.pbf multipolygons ogr2ogr -where "admin_level='8'" fin_municipalities.shp finland-latest.osm.pbf multipolygons

Optimoi Shape-tiedoston dbf-tiedosto

Shape-aineistoissa on usein liian suuret .dbf-tiedostot, koska kenttien pituudet perustuvat oletusarvoihin, eivät dataan. Merkkijono- ja kokonaislukukenttien pituuksien optimointi:

ogr2ogr output.shp input.shp –lco RESIZE=YES

Olemassa olevalle tiedostolle saman voi tehdä ogrinfo-komennolla.

ogrinfo file1.dbf -sql "RESIZE file1"

Yksi vaihtoehto double-tyyppisten kenttien pituuksien korjaamiseen on tehdä se käsin OpenCalcissa. Kun .dbf avataan OpenCalcissa, kenttien tyypit ja pituudet näkyvät ensimmäisellä rivillä, esimerkiksi: N,19,11. Nämä voi muuttaa käsin sopivammiksi, esimerkiksi N,9,2.

CSV Shape-muotoon

CSV-tiedosto, jossa koordinaatit ovat sarakkeissa CoordX ja CoordY ja koordinaattijärjestelmä on EPSG:3067, voidaan muuntaa Shape-muotoon:

ogr2ogr output.shp input.csv -oo X_POSSIBLE_NAMES=CoordX -oo Y_POSSIBLE_NAMES=CoordY -a_srs EPSG:3067

GDAL yrittää arvata kenttien tyypit ja pituudet, mutta joskus se voi mennä pieleen. Korjaamista varten luo ensin .csvt-tiedosto ja tarkista / muokkaa sitä tarvittaessa.

ogr2ogr out.csv in.csv -oo AUTODETECT_WIDTH=YES -oo AUTODETECT_TYPE=YES -lco CREATE_CSVT=YES

Yhdistä tiedostoja

gdal_merge -o merged.tif input1.tif input2.tif

Vektoridatalle ei ole merge-komentoa, mutta ogr2ogr:ssa on append-valinta. Luo siis ensin kopio yhdestä syötetiedostosta (1.) ja lisää sitten toinen tiedosto siihen (2). -nln määrittää tason nimen

(1) ogr2ogr file_merged.shp file1.shp (2) ogr2ogr -update -append file_merged.shp file2.shp -nln file_merged

Leikkaa tiedostoja

Rajauslaatikolla:

gdal_translate -projwin xmin ymax xmax ymin input.tif output.tif  
ogr2ogr -spat xmin ymin xmax ymax output.shp input.shp

Shape-tiedostolla:

ogr2ogr -clipsrc clippingLayer.shp output.shp input.shp  
gdalwarp -cutline clippingLayer.shp -crop_to_cutline -dstalpha input.tif output.tif

Eräajotiedostot

GDAL-komentojen suurin etu on se, että sama komento on erittäin helppo suorittaa monelle tiedostolle for-silmukalla (DOS, Linux) käyttäen jokerimerkkejä (DOS, Linux) tai eräajotiedostoa.

DOS

FOR %i IN (input_folder/*.tif) DO gdal_translate -of ECW %i output_folder/%~ni.ecw

  • %i - tiedoston nimi, i voidaan vaihtaa miksi tahansa muuksi
  • IN (*.tif) - mitkä tiedostot valitaan; yleensä jokerimerkit ovat tässä hyödyllisiä
  • Tiedostonimen muunnelmat:
    • %i = tiedostopolku, nimi ja pääte: input_folder/map.tif
    • %~ni = tiedoston nimi: map
    • %~pni = tiedostopolku ja nimi: input_folder/map

Linux

Komentoriviltä:

for i in *.shp; do echo ogrinfo $i -sql "CREATE SPATIAL INDEX ON ${i/.shp/}"; done

Eräajotiedostosta:

    #!/bin/bash
    for i in $(find -name '*.tif')
    do
        echo $i
        gdal_translate $i ../infrared_lossless/${i/tif/jp2} -of JP2ECW -co target=0
    done

Windowsin ja Linuxin peruskomennot

  • Vaihda työhakemistoa ja listaa sen sisältö. DOS: cd ja dir. Linux: cd ja ls.
  • Kopioi kansiorakenne (ilman tiedostoja)
    • Windows: xcopy source destination /t /e (anna komento kansiossa, jossa source sijaitsee)
    • Linux: find -type d -exec mkdir ../compress95/{} \; (anna komento kansiossa, josta haluat tehdä kopion)
  • Kopioi ja poista tiedostoja: DOS: copy ja del. Linux: cp ja rm.

Suomenkielinen tekoälykäännös

Sisällössä voi esiintyä virheellistä tietoa tekoälykäännöksestä johtuen.

Klikkaa tästä antaaksesi palautetta