Tutorial: PDAL wrench gebruiken om processen te automatiseren

Site: OpenCourseWare for GIS
Cursus: Point cloud processing met QGIS en PDAL wrench
Boek: Tutorial: PDAL wrench gebruiken om processen te automatiseren
Afgedrukt door: Guest user
Datum: zondag, 8 september 2024, 04:13

1. Introductie

In de vorige tutorials hebben we de point cloud processing tools gebruikt die beschikbaar zijn in de QGIS Processing Toolbox. Je hebt misschien gemerkt dat elke keer dat je een tool uitvoert, het een PDAL wrench commando aanroept. Dat kon je zien in het logtabblad van de dialoogvenster:


De argumenten die je invult in het dialoogtabblad worden omgezet in de commandoregel en uitgevoerd. Deze commando’s kunnen ook worden gebruikt om point cloud-gegevens te verwerken vanaf de commandoregel, wat het gemakkelijker maakt om procedures te automatiseren.

De PDAL wrench repository op GitHub heeft een readme bestand met meer informatie over de beschikbare PDAL wrench commando's. Als je al met GDAL commando's kan werken, zie je dat de PDAL wrench commando's vergelijkbaar zijn,

In deze tutorial gaan we kijken naar enkele van de commando’s.

Na deze tutorial kun je:

  • PDAL wrench instellen 
  • Een virtuele point cloud (VPC) laag maken van tiles
  • De VPC-laag knippen met een polygoonlaag 
  • Een point cloud interpoleren naar raster met behulp van TIN 
  • Point cloud tiles samenvoegen tot één LAZ-bestand 
  • Een LAZ-bestand knippen met een polygoonlaag 
We zullen een digitaal oppervlaktemodel (DSM) maken. Als voorbeeld gebruiken we het centrum van Middelburg.

2. Instellen van PDAL wrench

Laten we eerst kijken hoe we PDAL wrench commando's kunnen uitvoeren.

1. Start QGIS Desktop.

2. Klik in het Browser paneel met de rechtermuisknop op de folder waar je de commando's wilt uitvoeren. Normaalgesproken is dat de folder waar je de gedownloade LAZ files hebt opgeslagen (bijv. Z:\Middelburg). Kies dan In Terminal openen... in het contextmenu.


Nu zal de terminal (command line interface) openen, waar je commando's kan typen na de prompt.


We gaan eerst kijken welke LAZ files in de directory staan.

3. Typ het volgende commando na de prompt en druk op <Enter>:

dir *.laz


Je zou nu de LAZ- en COPC-bestanden uit de vorige tutorials moeten zien. We gaan aan de slag met dezelfde gedownloade LAZ-bestanden.

Laten we eens kijken of een pdal_wrench commando kunnen uitvoeren.

4. Typ het volgende commando na de prompt en druk op <Enter>:

pdal_wrench


Helaas wordt het commando niet herkend. Dit betekent dat het niet is opgenomen in het pad (path) van de OSGeo4W shell. Waarschijnlijk is dat ook de bedoeling, omdat het DLL conflicten kan veroorzaken.

Dit betekent dat we het volledige pad naar het pdal_wrench commando moeten geven, voordat we het kunnen gebruiken.

In je Windowsinstallatie van QGIS staat pdal_wrenche.exe normaalgesproken in C:\OSGeo4W\apps\qgis.

5. Typ het volgende commando na de prompt en druk op <Enter> (tip: je kan tab gebruiken om commando's af te maken en daarmee voorkom je typo's!):

C:\OSGeo4W\apps\qgis\pdal_wrench.exe


Nu wordt weergegeven hoe je het commando kunt gebruiken. Dat betekent dat het werkt!

Maar nu moet je iedere keer het volledige pad gebruiken om een pdal_wrench commando te geven en dat is niet zo fijn. Daarom gaan we een batch-bestand maken om dit op te lossen. Je kan dat in Kladblok doen en het bestand opslaan als een .bat bestand in de folder van de .LAZ-bestanden. Je kan het met de volgende commando's echter ook vanaf de command line doen.

6. Typ het volgende commando na de prompt en druk op <Enter>:

copy con pdal_wrench.bat


Nu sta je aan het begin van de volgende regel en kan je regels tekst typen, todat je de toetsencombinatie <Control><Z> gebruikt om het tekstbestand af te sluiten.

7. Selecteer de tekst C:\OSGeo4W\apps\qgis\pdal_wrench.exe die nog in de terminal staat en klik met rechts om het te plakken onder de prompt:


8. Voeg aan dezelfde regel een spatie en %* toe:


Met %* geven we aan dat alle argumenten na het batchbestand moeten worden gesubstitueerd.

9. Druk op <Enter> en vervolgens op <Control><Z> en opnieuw op <Enter> om het bestand af te sluiten. Merk op dat het ^Z toont als je op <Control><Z> drukt.


Nu ben je terug bij de prompt en is je batch-bestand gereed. Laten we eens kijken of het werkt.

10. Typ het volgende commando na de prompt en druk op <Enter>:

pdal_wrench


Nu zien we, net als eerst, hoe we het pdal_wrench commando moeten gebruiken. Het werkt dus en we zijn daarmee gereed om de commando's in de volgende hoofdstukken uit te voeren!

3. Een VPC laag maken

Nu zijn we gereed om van de LAZ-tiles en Virtual Point Cloud (VPC) laag te maken. Het voordeel is dat met VPC-lagen niet de grote hoeveelheid data wordt gedupliceerd, maar dat we VPC's kunnen gebruiken als tussenresultaten van onze processing workflow.

We gebruiken het build_vpc commando om een VPC laag te maken.

1. Typ in de terminal het volgende commando achter de prompt en druk op <Enter>:

pdal_wrench build_vpc --output=merged.vpc 65DN1_07.LAZ 65DN1_08.LAZ 65DN1_12.LAZ 65DN1_13.LAZ


We hebben --output gebruikt om het uitvoer VPC-bestand te definiëren. Vervolgens hebben we de namen van de LAZ-bestanden getypt die we willen samenvoegen, gescheiden met een spatie. Als alternatief kan je ook een tekstbestand met de bestandsnamen gebruiken.

Nu hebben we een VPC-laag en kunnen we in het volgende hoofdstuk verder met het knippen van de VPC-laag met een polygoonlaag.


4. Knip een VPC-laag met een polygoonlaag

Omdat de VPC-laag veel groter is dan het centrum van Middelburg, gaan we het knippen met een polygoonlaag. We kunnen de gebiedsgrens polygoon gebruiken uit een eerdere tutorial over het interpoleren van point clouds.

1. Typ in de terminal het volgende commando na de prompt en druk op <Enter>:

pdal_wrench clip --input=merged.vpc --polygon=boundary.shp --output=center.vpc


Hier hebben we met --input de invoer VPC-laag gespecificeerd. Met --polygon specificeren we de polygoonvectorlaag waarmee we willen knippen en met --output definiëren we het het uitvoer VPC-bestand.

Nu we het centrum van Middelburg hebben uitgeknipt, kunnen we in het volgende hoofdstuk verder met het interpoleren van de point cloud naar een digitaal oppervlaktemodel (DSM).

5. Point cloud interpoleren met TIN

We kunnen nu de geknipte VPC-laag interpoleren naar een raster. We gaan de TIN-methode gebruiken.

1. Typ in de terminal het volgende commando achter de prompt en druk op <Enter>:

pdal_wrench to_raster_tin --output=dsm.tif --resolution=1 --threads=16 --input=center.vpc

Dit is nogal een berekening, dus dat duurt even. Als het niet lukt, kan je het proberen met een kleiner gebied.

2. Bekijk het resultaat in QGIS.


In de volgende hoofdstukken gaan we sommige commando's toepassen op LAZ-bestanden in plaats van VPC-bestanden.

6. Point cloud tiles samenvoegen in één LAZ-bestand

We kunnen LAZ-tiles met het PDAL wrench commando merge samenvoegen.

1. Typ in de terminal achter de prompt het volgende commando en druk op <Enter>:

pdal_wrench merge --output=merged.laz 65DN1_07.LAZ 65DN1_08.LAZ 65DN1_12.LAZ 65DN1_13.LAZ


Dit commando is vergelijkbaar met het build_vpc commando dat we hiervoor hebben gebruikt. Het enige verschil is dat de uitvoer in dit geval een LAZ-bestand is in plaats van een VPC-bestand.

In het laatste hoofdstuk gaan we dit LAZ-bestand knippen met een polygoonlaag.

7. Een LAZ-bestand knippen met een polygoonlaagn layer

Een LAZ-bestand kan ook geknipt worden met het pdal_wrench clip commando dat we eerder hebben gebruikt om een VPC-bestand te knippen.

1. Typ in de terminal achter de prompt het volgende commando en druk op <Enter>:

pdal_wrench clip --input=merged.laz --polygon=boundary.shp --output=clipped.laz


2. Bekijk het resultaat in QGIS.

8. Conclusie

Met PDAL wrench kunnen we commando’s gebruiken om point cloud-bestanden te verwerken. Dit maakt het gemakkelijk om procedures te automatiseren. Je zou bijvoorbeeld een batchbestand kunnen maken dat een VPC-bestand aanmaakt, het knipt met een polygoon en het interpoleert met TIN. Als je de invoerbestanden variabel maakt, kun je het batchbestand hergebruiken voor elke casestudy. Dat bespaart een hoop geklik in QGIS!