Tutorial: Introductie GDAL
| Site: | OpenCourseWare for GIS |
| Cursus: | Hands‑on met de nieuwe GDAL Command Line Interface |
| Boek: | Tutorial: Introductie GDAL |
| Afgedrukt door: | Guest user |
| Datum: | dinsdag, 7 juli 2026, 22:57 |
1. Introductie
Wat is GDAL
GDAL is een translator library voor raster- en vectordataformaten in de geo‑informatica. Het wordt uitgebracht onder een MIT-achtige Open Source Licentie door de Open Source Geospatial Foundation.
GDAL kan heel veel verschillende soorten GIS‑bestanden lezen en schrijven. Het maakt daarbij niet uit welk formaat je gebruikt: GDAL zorgt ervoor dat programma’s altijd op dezelfde manier met raster- en vectordata kunnen werken.
Daarnaast bevat GDAL een verzameling handige command line‑tools waarmee je GIS‑data kunt bekijken, omzetten, aanpassen en verwerken.
Vanaf GDAL 3.11 zijn delen van de GDAL‑utilities beschikbaar via één nieuw programma, gdal, dat werkt met commands en subcommands. In deze tutorial gebruiken we deze nieuwe GDAL‑CLI. Zie voor meer informatie: http://www.gdal.org.
Leerdoelen
Na deze cursus kun je:
- Informatie uit GIS‑data ophalen
- GIS‑data herprojecteren
- Rastereigenschappen aanpassen
- Rasterformaten converteren
- Vectorformaten converteren
- Ruimtelijke queries uitvoeren op vectorlagen
- CSV‑bestanden converteren
- Batchconversies uitvoeren
Software
Voor deze oefeningen moet GDAL geïnstalleerd zijn, bij voorkeur via het OSGeo4W‑distributiepakket. Onderstaad filmpje laat zien hoe je nieuwe GDAL versie installeert.
Let op: je hebt QGIS 3.40.14 of hoger nodig om de nieuwe GDAL‑commando’s te gebruiken.
Oefendata
roads.shp: wegenkaart van OpenStreetMap (http://openstreetmap.org)
srtm_37_02.tif: tegel van een Digital Elevation Model (DEM) van de Shuttle Radar Topography Mission (SRTM) (http://www2.jpl.nasa.gov/srtm/)
gem_2011_gn1.shp: gemeentegrenzen van Nederland, vrij beschikbaar via CBS en Kadaster (http://www.cbs.nl).
Locations.csv: tabel met objectlocaties.
landuse.zip: bevat landgebruiktijdreeksen in IDRISI‑formaat.
2. De OSGeo4W Shell gebruiken
In deze tutorial gebruiken we de GDAL‑versie die met QGIS wordt meegeleverd. Je kunt de GDAL‑commando’s uitvoeren via de OSGeo4W‑shell. De eenvoudigste manier om deze shell te openen is via het QGIS Browser paneel.
- Start QGIS Desktop
- Zoek in het Browser paneel de map op waar je de data voor deze tutorial hebt opgeslagen, bijvoorbeeld Z:\GDAL_tutorial.
- Klik met de rechtermuisknop op de mapnaam en kies Open in Terminal... in het contextmenu.

In de OSGeo4W‑terminal die nu is geopend, zie je aan de prompt dat je je bevindt in de map met de tutorialdata.

Laten we eerst controleren of je CLI werkt met de nieuwste gdal‑commando’s.
3. Voer het volgende commando uit:
gdal
Als je dit resultaat ziet, is alles in orde:

Als het
gdal‑commando niet wordt herkend, gebruik je waarschijnlijk een verouderde versie van QGIS met de bijbehorende OSGeo4W‑shell. Als je zeker weet dat je een nieuwere versie gebruikt, probeer dan op de volgende manier de snelkoppeling naar de OSGeo4W‑shell te vinden:
- Ga naar het Start menu.
- Typ
QGISom te zoeken naar QGIS Desktop 3.40 of nieuwer- Klik op Open file location
- Voer OSGeo4W Shell uit:
Je kunt nu gdal‑commando’s invoeren bij de prompt. In de volgende hoofdstukken leer je een aantal van de meest gebruikte commando’s.
3. Informatie opvragen uit GIS‑data
In dit hoofdstuk leer je hoe je:
-
Informatie uit rasterdata kunt opvragen
- Informatie uit vectordata kunt opvragen
gdal info-commando.3.1. Informatie uit rasterdata opvragen
Een van de eenvoudigste en meest nuttige commando’s in GDAL is gdal info. Wanneer je dit commando uitvoert op een raster-, vector- of multidimensionale rasterdataset, geeft het alle relevante informatie weer die over het bestand bekend is. Dit is vooral handig wanneer GIS‑data extra metadata bevat, zoals vaak het geval is bij TIF‑bestanden.
Bij satellietbeelden is dit commando bijzonder waardevol: je kunt er snel mee controleren waar het beeld zich bevindt in lengte‑ en breedtegraden en welke projectie wordt gebruikt.
Hoewel er een apart commando gdal raster info bestaat voor rasterbestanden, is gdal info een handige snelkoppeling die automatisch herkent of je invoer een raster of een vector is. Je hoeft dus niet zelf aan te geven welk type bestand je gebruikt.
1. Voer het volgende commando uit:
gdal info srtm_37_02.tif <ENTER>
- Wat is de grootte (resolutie) van het beeld?
- Wat is het coördinatensysteem?
- Wat is de EPSG‑code?
- Wat is de NoData‑waarde?
- Wat is het datatype?
gdal info‑commando vind je op: https://gdal.org/en/stable/programs/gdal_info.html#gdal-infoMeer uitleg vind je in de video hieronder.
3.2. Informatie uit vectordata opvragen
Voor het opvragen van informatie uit vectordata gebruiken we het commando gdal vector info. Maar we kunnen hiervoor ook gewoon hetzelfde gdal info‑commando gebruiken.
1. Voer de volgende commando's uit:gdal info roads.shp <ENTER>gdal info gem_2011_gn1.shp <ENTER>

2. Beantwoord deze vragen:
- Wat zijn de projecties van deze twee shapefiles?
- Wat zijn de EPSG codes?
Zoals je ziet worden er meerdere EPSG‑codes weergegeven. Dat komt doordat verschillende onderdelen van de projectie elk hun eigen EPSG‑code hebben. De vuistregel is dat je de laatste EPSG‑code kunt aanhouden.
-
De projectie van roads.shp is EPSG:4326, wat betekent dat het bestand in een Geographic Coordinate System (GCS) staat, met coördinaten in Latitude/Longitude.
-
Voor gem_2011_gn1.shp is de projectie EPSG:28992, de Nederlandse projectie (Amersfoort / RD New).
We kunnen ook informatie opvragen over de features in een vectorlaag.
gdal vector info --features gem_2011_gn1.shpOm alleen een overzicht te krijgen, is het handiger om het aantal weergegeven features te beperken.
gdal vector info --features --limit 1 gem_2011_gn1.shpDit toont alleen de eerste feature, zodat we een overzicht hebben van de velden in de attributentabel.
Meer informatie over het gdal info‑commando vind je hier.
4. Herprojecteren van GIS data
In dit hoofdstuk leer je hoe je:
- Rasterdata kunt herprojecteren
- Vectordata kunt herprojecteren
Je zult de commando’s gdal raster reproject en gdal vector reproject gebruiken.
In deze oefening willen we een kaart maken van de gemeente Delft met de hoofdwegen en het reliëf. Omdat de datasets in verschillende formaten en projecties staan, moeten we ze eerst herprojecteren naar één gemeenschappelijk coördinatensysteem.
In dit geval herprojecteren we alle datasets naar de Nederlandse projectie Amersfoort / RD New (EPSG:28992).
4.1. Herprojecteer rasterdata
GDAL kan een rasterbestand herprojecteren met de volgende syntaxis:
gdal raster reproject -d EPSG:... <input> <output>
Het argument -d geeft het doelcoördinatensysteem aan. Als het broncoördinatensysteem onbekend is, moet dit worden opgegeven met -s. EPSG:… staat voor de EPSG‑code van de projectie. <input> en <output> zijn respectievelijk de invoer‑ en uitvoerbestanden.
We gaan nu een Digital Elevation Model (DEM) herprojecteren dat is verkregen via de Shuttle Radar Topography Mission (SRTM). Je kunt DEM’s voor je eigen studiegebied downloaden via USGS Earth Explorer of de OpenTopography DEM Downloader plugin in QGIS. In deze oefening gebruiken we de dataset die bij de cursus wordt geleverd.
Om het DEM te herprojecteren van WGS‑84 lat/lon naar Amersfoort / RD New, gebruiken we het volgende commando:
gdal raster reproject -d EPSG:XXXXX srtm_37_02.tif dem_rd.tif
1. Vervang XXXXX door de juiste EPSG‑code voor Amersfoort/RD New (zie één van je eerdere antwoorden met gdal info).
2. Voer het volgende commando uit:
gdal raster reproject -d EPSG:28992 srtm_37_02.tif dem_rd.tif <ENTER>

3. Visualiseer het resultaat in QGIS.
Meer informatie over het gdal raster reproject‑commando vind je hier.
Merk op dat standaard nearest neighbour resampling wordt gebruikt. Bekijk de argumenten van het commando in de documentatie als je een andere resampling‑methode wilt gebruiken of de uitvoercelgrootte wilt instellen.
4.2. Herprojecteer vectordata
Voor vectordata wordt het commando gdal vector reproject gebruikt om data te herprojecteren. De syntaxis is:
gdal vector reproject -d EPSG:XXXXX <input> <output>
Hier gaan we de OpenStreetMap‑wegendata converteren naar de Amersfoort/RD New‑projectie.
1. Voer het volgende commando uit:gdal vector reproject -d EPSG:28992 roads.shp roadsreprojected.shp
Het commando wordt uitgevoerd (dat duurt even), maar geeft een waarschuwing.

2. Wat betekent de waarschuwing?
Meer informatie over het gdal vector reproject vind je hier.
5. Converteer GIS-formaten
In dit hoofdstuk leer je het volgende:
-
Converteren tussen verschillende rasterformaten
-
Converteren tussen verschillende vectorformaten
Je gebruikt hiervoor de commando’s gdal raster convert en gdal vector convert.
5.1. Converteer rasterformaten
De primaire functie van gdal raster convert is het converteren tussen rasterformaten. De basissynthaxis is:
gdal raster convert -f FORMAT <inputFile> <outputFile>
Alle ondersteunde formaten vind je hier. Voor FORMAT moet je de Short Name uit de tabel gebruiken.
Nu gaan we het DEM converteren van GeoTIFF naar SAGA‑formaat. SAGA is een GIS‑pakket met een eigen, door GDAL ondersteund, binair formaat met de bestandsextensie .sdat.
1. Voer het volgende commando uit:gdal raster convert -f SAGA dem_rd.tif dem_rd.sdat

Sommige formaten hebben extra argumenten nodig. PCRaster heeft bijvoorbeeld een specificatie van het datatype nodig (boolean, nominal, scalar, enz.).
Laten we dezelfde data converteren naar PCRaster‑formaat.
PCRaster is een softwarebibliotheek voor milieumodellering en map algebra, veel gebruikt in de hydrologie, ecologie en geografie. Het biedt operatoren voor ruimtelijke analyse, dynamische modellering en simulatie van milieuprocessen. In QGIS is PCRaster beschikbaar via de PCRaster Tools plugin, die de functies rechtstreeks integreert in de Processing Toolbox, zodat gebruikers PCRaster‑bewerkingen binnen QGIS kunnen uitvoeren.
2. Voer het volgende command uit:gdal raster convert -f PCRaster --co VS=SCALAR dem_rd.tif dem_rd.map
Dit geeft de volgende foutmelding:

GDAL verwacht een Float32‑raster. Wanneer je de informatie hebt gecontroleerd met gdal info, heb je waarschijnlijk gezien dat het datatype van ons DEM-bestand INT16 is.
Daarom moeten we eerst het datatype van de invoer converteren.
3. Voer het volgende commando uit:
gdal raster set-type --ot Float32 dem_rd.tif dem_rd_float.tif

4. Nu kan je de conversie doen door dit commando uit te voeren:
gdal raster convert -f PCRaster --co VS=SCALAR dem_rd_float.tif dem_rd.map

Om naar PCRaster‑formaat te converteren moet je het datatype van het raster kennen. In het bovenstaande voorbeeld is het DEM continue data, dus het datatype is scalar. Als de laag discreet zou zijn (klassen), dan zou het datatype nominal zijn.
De onderstaande tabel toont de datatypen met de bijbehorende --ot‑ en --co‑argumenten voor respectievelijk gdal raster set-type en gdal raster convert.
| Data Type | --ot |
--co |
|---|---|---|
| Boolean | Byte |
VS=BOOLEAN |
| Nominal | Int32 |
VS=NOMINAL |
| Ordinal | Int32 |
VS=ORDINAL |
| Scalar | Float32 or Float64 |
VS=SCALAR |
| Direction | Float32 or Float64 |
VS=DIRECTION |
| LDD | Int32 |
VS=LDD |
Meer informatie over gdal raster convert vind je hier.
Meer informatie over gdal raster set-type vind je hier.
5.2. GDAL raster pipeline
De laatste oefening uit de vorige sectie zou efficiënter zijn geweest als je alles in één keer had kunnen uitvoeren, zonder het tussentijds wegschrijven van de datatype‑conversie. Voor dat soort workflows bestaat het commando gdal raster pipeline.
Laten we het toepassen op de volledige workflow, die de volgende stappen uitvoert zonder tussentijdse bestanden op schijf te schrijven:

Eerst moeten we de bestaande tussentijdse resultaten verwijderen om zeker te zijn dat we nieuwe data aanmaken.
- Voer het volgende commando uit om alle bestandsnamen met
demerin te verwijderen:del dem*.*
2. Nu kunnen we de pipeline typen:
gdal raster pipeline read srtm_37_02.tif ! reproject -d EPSG:28992 ! set-type --ot Float32 ! write dem_rd.map -f PCRaster --co VS=SCALAR
Uitleg:
- Het commando om een raster‑pipeline te maken is
gdal raster pipeline. - We moeten beginnen met het inlezen van het invoerraster:
read srtm_37_02.tif. - Elke volgende bewerkingsstap moet worden voorafgegaan door
!. - Eerst herprojecteren we:
reproject -d EPSG:28992. - Daarna zetten we het datatype van het resultaat van die stap naar Float32:
! set-type --ot Float32. - Vervolgens schrijven we het resultaat weg naar PCRaster‑formaat met het datatype scalar:
! write dem_rd.map -f PCRaster --co VS=SCALAR.

Concluderend: pipelines zijn een eenvoudige manier om workflows te maken die je in één keer kunt uitvoeren. In combinatie met batchbestanden kan dit heel gebruiksvriendelijk en krachtig zijn, zonder dat je scripts in Python hoeft te schrijven.
5.3. Convert vectorformaten
gdal vector convert.gdal vector convert -f FORMAT <inputFile> <outputFile>FORMAT is de Short Name in de tabel met vector drivers.gem_2011_gn1.shp converteren naar een Google KML‑bestand dat geopend kan worden in Google Earth.gdal vector convert -f KML gem_2011_gn1.shp gem.kml gdal vector convert. Let op dat je ook pipelines kunt gebruiken voor vectorverwerking met gdal vector pipeline. Meer informatie vind je hier.
6. Ruimtelijke queries van vectordata
Voor onze kaart van Delft willen we de volgende GIS‑analyse uitvoeren:
- Selecteer de gemeente Delft uit de gemeentekaart (gem_2011_gn1.shp) en sla deze op in een geopackage.
- Clip de wegenkaart van Nederland met het polygoon van de gemeente Delft.
gdal vector sql.SQL staat voor Structured Query Language en is de standaardtaal voor het werken met relationele databases. In GIS kom je SQL tegen wanneer je features filtert, attributen selecteert, tabellen koppelt of ruimtelijke queries uitvoert.
In de kern kun je met SQL:
-
Data opvragen (bijv.
SELECT * FROM municipalities) -
Data filteren (bijv.
WHERE GM_NAAM = 'Delft') -
Data bijwerken of aanpassen
-
Tabellen maken of verwijderen
gdal info of QGIS gebruiken om dit te achterhalen.gdal vector sql gem_2011_gn1.shp delft.gpkg --output-layer municipality --sql "SELECT * FROM gem_2011_gn1 WHERE GM_NAAM = 'Delft'"De SQL‑query tussen dubbele aanhalingstekens is SELECT * FROM gem_2011_gn1 WHERE GM_NAAM = 'Delft' en vraagt de database om alle rijen terug te geven uit de tabel gem_2011_gn1 waarbij de kolom GM_NAAM de waarde Delft heeft.
Let op dat Delft tussen enkele aanhalingstekens staat om aan te geven dat we zoeken naar een string (tekst).
gdal vector clip.gdal vector clip roadsreprojected.shp delft.gpkg --update --like delft.gpkg --like-layer municipality --output-layer roads_delft
-
gdal vector clip→ het GDAL‑subcommando om vectorfeatures te clippen. -
roadsreprojected.shp→ de invoer‑shapefile met de weggeometrieën. -
delft.gpkg→ het GeoPackage dat de laag bevat waarmee wordt geclipt (in dit geval de gemeentegrens). -
--update→ geeft aan dat GDAL het bestaande GeoPackage moet bijwerken in plaats van een nieuw bestand te maken. -
--like delft.gpkg --like-layer municipality→ specificeert dat de clipping moet worden uitgevoerd met de laag municipality in delft.gpkg als masker. -
--output-layer roads_delft→ de naam van de nieuwe laag die in het GeoPackage wordt geschreven en alleen de wegen bevat die binnen de gemeente Delft vallen.

Als je de documentatie van gdal vector clip bekijkt, zul je zien dat je een verkorte werkwijze had kunnen gebruiken. We kunnen de SQL‑query om de gemeente Delft op te zoeken namelijk direct aan het commando toevoegen.
Laten we het resultaat nu als een shapefile maken, zodat we het kunnen vergelijken met het eerdere resultaat in het geopackage.
5. Voer het volgende commando uit:
gdal vector clip roadsreprojected.shp roads_delft.shp --like gem_2011_gn1.shp --like-sql "SELECT * FROM gem_2011_gn1 WHERE GM_NAAM = 'Delft'"6. Voeg roads_delft.shp toe aan QGIS en vergelijk het met het eerdere resultaat. Het zou hetzelfde moeten zijn.
7. GDAL vector pipeline
Net als bij rasterdata kunnen we ook pipelines maken voor vectordata met het commando gdal vector pipeline. Omdat we invoergegevens alleen in de eerste stap kunnen inlezen en resultaten alleen in de laatste stap kunnen wegschrijven, gaan we twee pipelines maken.
We schrijven de resultaten weg naar een nieuw geopackage genaamd data.gpkg.
Pipeline 1: Extract the Delft municipality polygon

- Voer het volgende commando uit:
gdal vector pipeline read gem_2011_gn1.shp ! sql --sql "SELECT * FROM gem_2011_gn1 WHERE GM_NAAM = 'Delft'" ! write data.gpkg --output-layer municipality
Pipeline 2: Herprojecteer de wegen, clip ze tot Delft en schrijf ze weg naar hetzelfde GeoPackage

2. Voer het volgende commando uit:
gdal vector pipeline read roads.shp ! reproject -d EPSG:28992 ! clip --like data.gpkg --like-layer municipality ! write data.gpkg --output-layer roads_delft --update
8. Raster clippen met een polygoon
We kunnen nu de DEM clippen met de polygoon van de gemeente Delft met behulp van het commando gdal raster clip.
- Voer het volgende commando uit:
gdal raster clip --like data.gpkg --like-layer municipality -f GTiff dem_rd.map dem_delft.tif - Bekijk het resultaat in QGIS

Opdracht
- Bekijk de documentatie van
gdal raster clipen probeer nu hetzelfde resultaat te verkrijgen door SQL te gebruiken om de gemeente te selecteren uit de laag gem_2011_gn1.shp, zoals we eerder deden in andere commando’s.. - Maak een
gdal raster pipelinevoor de workflow die de laag srtm_37_02.tif herprojecteert naar EPSG:28992 en deze clipt tot de gemeente Delft.
9. Converteer CSV-bestanden
Soms wil je coördinaten in een ASCII‑bestand herprojecteren, bijvoorbeeld wanneer ze als tekst zijn opgeslagen vanuit een spreadsheetprogramma. Hier gaan we de coördinaten in het kommagescheiden ASCII‑bestand locations.csv omzetten naar een GeoPackage‑puntlaag met hergeprojecteerde coördinaten.
Het is goede gewoonte om eerst de inhoud van een CSV‑bestand te bekijken en te controleren (1) de coördinaten, en (2) het kolomscheidingsteken.
De scheiding is niet altijd een komma en hangt soms af van de taalinstellingen die zijn gebruikt bij het exporteren vanuit een spreadsheetprogramma.
1. Bekijk de inhoud van locations.csv . Je kunt hiervoor het type-commando gebruiken in de opdrachtprompt, zoals je hebt geleerd in de Command Line‑tutorial.

<OGRVRTDataSource>
<OGRVRTLayer name="locations">
<SrcDataSource>locations.csv</SrcDataSource>
<GeometryType>wkbPoint</GeometryType>
<LayerSRS>EPSG:4326</LayerSRS>
<GeometryField encoding="PointFromColumns" x="lon" y="lat"/>
</OGRVRTLayer>
</OGRVRTDataSource>3. Sla het bestand op als locations.vrt in dezelfde map als locations.csv.
Uitleg over het XML‑bestand:
<OGRVRTLayer name="locations">moet overeenkomen met<SrcDataSource>locations.csv</SrcDataSource><LayerSRS>EPSG:4326</LayerSRS>moet overeenkomen met de EPSG‑code van de coördinatenkolommen.
<GeometryField encoding="PointFromColumns" x="lon" y="lat"/>geeft aan welke kolommen de coördinaten bevatten die je wilt converteren.
gdal vector reproject -d EPSG:28992 locations.vrt data.gpkg --update --output-layer locations_reprojectedgdal info. 10. Batchconversie
Desktop‑GIS‑applicaties zijn uitstekend voor eenmalige bewerkingen, maar ze worden inefficiënt wanneer je dezelfde taak voor veel bestanden moet herhalen. In zulke gevallen kan eenvoudig scripten veel tijd besparen. Je hebt al gewerkt met pipelines. Hier gaan we een loop maken in een batch‑bestand.
In dit voorbeeld werken we met een dataset uit een landgebruiksmodel van Dublin. De rasters zijn opgeslagen in IDRISI‑formaat (.rst), met één bestand per jaar van 1990 tot 2030. Ons doel is om al deze bestanden te converteren naar GeoTIFF (.tif) formaat.
landuse.zip dat bij de cursusdata is geleverd, uit naar een nieuwe map en controleer de inhoud.gdal raster convert -f GTiff 01_State19900101.rst 01_State19900101.tif
for %%f in (*.rst) do ( echo Converting %%~nf gdal raster convert -f GTiff "%%f" "%%~nf.tif" )
rst2tif.bat in de map met de landgebruiksrasters (vergeet niet de extensie aan te passen als je Kladblok gebruik, dat is een klassieke fout!).Probeer de code te begrijpen. Dit is een for‑loop die over alle *.rst‑bestanden in de map loopt. %%f is de variabele die de bestandsnaam van elk bestand bevat.
Met echo kunnen we iets op het scherm afdrukken. Hier printen we %%~nf, dat het deel van de bestandsnaam is vóór de punt die de naam van de extensie scheidt.
Daarna gebruiken we het commando gdal raster convert met als uitvoerformaat GeoTIFF. Aan het einde van de regel voegen we de extensie .tif toe aan de bestandsnaam.
De aanhalingstekens rond de bestandsnamen zijn toegevoegd om problemen met spaties in bestandsnamen te voorkomen.
rst2tif <ENTER>6. Bekijk het resultaat.
11. Conclusie
In deze introductie tot GDAL heb je de belangrijkste commando’s verkend voor het herprojecteren, converteren en clippen van GIS‑data. Deze tools vormen de basis voor efficiënte GIS workflows, waardoor je raster‑ en vectorformaten met vertrouwen kunt verwerken. Door de voorbeelden te oefenen heb je nu een solide startpunt om GDAL in je eigen projecten te integreren, zowel via de command line als binnen QGIS. Met deze vaardigheden kun je meer geavanceerde pipelines bouwen en de veelzijdigheid van GDAL toepassen op praktische ruimtelijke analyses en kaartuitdagingen.
Deze video toont de nieuwste updates van GDAL door de ontwikkelaars:

