pdal
Erweiterung, die die Verarbeitung von Punktwolken-Daten mit SQL ermöglicht.
Maintainer: ahuarte47
Installation und Laden
INSTALL pdal FROM community;LOAD pdal;Beispiel
SELECT * FROM PDAL_Read('path/to/your/pointcloud.las');---┌───────────┬───────────┬────────┬───────┐│ X │ Y │ Z │ ││ double │ double │ double │ ... │├───────────┼───────────┼────────┤───────┤│ 637177.98 │ 849393.95 │ 411.19 │ ... ││ 637177.30 │ 849396.95 │ 411.25 │ ... ││ 637176.34 │ 849400.84 │ 411.01 │ ... ││ 637175.45 │ 849404.62 │ 410.99 │ ... ││ 637174.33 │ 849407.37 │ 411.38 │ ... │└───────────┴───────────┴────────┴───────┘
WITH __input AS ( SELECT X, Y, RasterValue FROM PDAL_Pipeline('./test/data/overlay-sample.tiff', './test/data/overlay-sample-pipeline.json'))SELECT COUNT(*) AS c, SUM(RasterValue) AS sFROM __input;---┌───────┬──────────┐│ c │ s ││ int64 │ double │├───────┼──────────┤│ 57600 │ 576000.0 │└───────┴──────────┘Über pdal
Dies ist eine DuckDB-Erweiterung zur Verarbeitung von Punktwolken-Daten mit SQL.
Sie können die Erweiterung verwenden, um Punktwolken-Daten aus verschiedenen Formaten (z. B. LAS, LAZ) zu lesen und Transformationen darauf auszuführen.
Die Erweiterung basiert auf PDAL (Point Data Abstraction Library), einer C++-Bibliothek, mit der Nutzer Punktwolken-Daten lesen, schreiben und verarbeiten und mit dieser Erweiterung die Daten direkt mit SQL-Abfragen in DuckDB laden können.
SELECT * FROM PDAL_Read('path/to/your/pointcloud.las');
┌───────────┬───────────┬────────┬───────┐│ X │ Y │ Z │ ││ double │ double │ double │ ... │├───────────┼───────────┼────────┤───────┤│ 637177.98 │ 849393.95 │ 411.19 │ ... ││ 637177.30 │ 849396.95 │ 411.25 │ ... ││ 637176.34 │ 849400.84 │ 411.01 │ ... ││ 637175.45 │ 849404.62 │ 410.99 │ ... ││ 637174.33 │ 849407.37 │ 411.38 │ ... │└───────────┴───────────┴────────┴───────┘PDAL unterstützt Datenpipelines; Sie können komplexe Transformationen ausführen, bevor Datenpunkte in DuckDB geladen werden.
Zum Beispiel eine Rasterdatei laden und mit filters.overlay Attribute aus einem Geopackage extrahieren:
WITH __input AS ( SELECT X, Y, RasterValue FROM PDAL_Pipeline('./test/data/overlay-sample.tiff', './test/data/overlay-sample-pipeline.json'))SELECT COUNT(*) AS c, SUM(RasterValue) AS sFROM __input;
┌───────┬──────────┐│ c │ s ││ int64 │ double │├───────┼──────────┤│ 57600 │ 576000.0 │└───────┴──────────┘Dabei lautet die Pipeline:
{ "pipeline": [ { "type": "filters.assign", "value" : [ "RasterValue = 0.0" ] }, { "type": "filters.overlay", "datasource": "./test/data/overlay-sample.gpkg", "layer": "area", "column": "user_data", "dimension": "RasterValue" } ]}Die Pipeline kann entweder als JSON-Datei oder als inline JSON-String angegeben werden. Beginnt der Wert des zweiten Parameters mit “[” und endet mit “]”, handelt es sich um inline JSON, andernfalls um einen Dateipfad:
SELECT COUNT(*)FROM PDAL_pipeline('./test/data/autzen_trim.las', '[ { "type": "filters.tail", "count": 10 } ]' );┌──────────────┐│ count_star() ││ int64 │├──────────────┤│ 10 │└──────────────┘Die Funktion PDAL_PipelineTable führt eine PDAL-Pipeline auf einer Eingabetabelle aus. Es wird angenommen, dass die Eingabetabelle
Spalten enthält, die mit PDAL-Punktwolken kompatibel sind.
Die Pipeline kann ebenfalls entweder als JSON-Datei oder als inline JSON-String angegeben werden. Beginnt der Wert des zweiten Parameters mit “[” und endet mit “]”, handelt es sich um inline JSON, andernfalls um einen Dateipfad:
SELECT *FROM PDAL_PipelineTable((SELECT X,Y,Z FROM ...), '[ {"type": "filters.tail", "count": 10} ]');Hinzugefügte Funktionen
| function_name | function_type | description | comment | examples |
|---|---|---|---|---|
| PDAL_Drivers | table | Returns the list of supported stage types of a PDAL Pipeline. | NULL | [SELECT * FROM PDAL_Drivers();] |
| PDAL_Read | table | Read and import a variety of point cloud data file formats using the PDAL library. | NULL | [SELECT * FROM PDAL_Read(‘./test/data/autzen_trim.laz’);] |
| PDAL_Info | table | Read the metadata from point cloud file[s]. | NULL | [SELECT * FROM PDAL_Info(‘./test/data/autzen_trim.la*’);] |
| PDAL_Pipeline | table | Read and import a point cloud data file, applying also a custom processing pipeline to the data. | NULL | [SELECT * FROM PDAL_Pipeline(‘path/to/your/filename.las’, ‘path/to/your/pipeline.json’);] |
| PDAL_PipelineTable | table | Apply a custom processing pipeline to the input table. | NULL | [SELECT * FROM PDAL_PipelineTable((SELECT X,Y,Z FROM …), ‘[ {type: filters.tail, count: 100} ]’);] |
Überladene Funktionen
Diese Erweiterung fügt keine Funktionsüberladungen hinzu.
Hinzugefügte Typen
Diese Erweiterung fügt keine Typen hinzu.
Hinzugefügte Einstellungen
Diese Erweiterung fügt keine Einstellungen hinzu.