Knihovna PDAL a Python¶
Knihovna PDAL podporuje jazyk Python ve dvou způsobech použití:
umožňuje vytvořit skript v jazyku Python, který pracuje s daty pomocí
filters.python
nabízí rozšíření, které je možné integrovat v aplikacích napsaných v jazyku Python
Důležité
Data knihovna PDAL poskytuje jako NumPy pole.
Dokumentace: https://pdal.io/en/2.6.0/python.html
1. filters.python¶
Tímto způsobem lze vestavět Python funkce do zpracování dat sekvencí operací (tzv. Pipelines) bez znalosti jazyka C++ (ve kterém je PDAL implementován), které umožňují modifikovat mračna bodů ve formě NumPy polí.
Poznámka
Pipeline je reprezentována v knihovně PDAL JSON datovou strukturou.
Funkce musí mít dva argumenty datového typu NumPy polí: (1) mračno
bodů před aplikací filters.python
a (2) mračno bodů po aplikaci
filru. Příklad funkce:
import numpy as np
def multiply_z(ins, outs):
Z = ins['Z']
Z *= 10.0
outs['Z'] = Z
return True
V případě úspěšné operace musí funkce vratit hodnotu True
. Pokud
by funkce vratila hodnotu False
tak by pipeline
skončil chybou.
Příklad pipeline:
[
"/cesta/vstup.las",
{
"type":"filters.smrf"
},
{
"type":"filters.python",
"script":"multiply_z.py",
"function":"multiply_z",
"module":"anything"
},
{
"type":"writers.las",
"filename":"/cesta/vystup.las"
}
]
Více ukázek najdete v dokumentaci filters.python.
Příklad spuštění pipeline z příkazové řádky (pod Windows použijte OSGeo4W Shell):
pdal pipeline ./pdal-pipeline.json
Poznámka
Je nutné doinstalovat balíček pdal-plugins
python3 -m pip install pip pdal-plugins
2. Rozšíření¶
Pomocí rozšíření lze spouštět pipeline přímo v Python skriptu a zpracovat výsledky zpracování dat dále v podobě NumPy polí. Příklad:
json = """
[
"/cesta/soubor.las",
{
"type": "filters.sort",
"dimension": "Z"
}
]
"""
import pdal
pipeline = pdal.Pipeline(json)
count = pipeline.execute()
arrays = pipeline.arrays
print(arrays)