pointcloud processing engine about the library
play

Pointcloud processing engine About the library 1.0.1 release now - PowerPoint PPT Presentation

Pointcloud processing engine About the library 1.0.1 release now available (September 2015) (OSGeo4W/64) BSD Licensed (Supports proprietary plugins) C++ development git repo (https://github.com/PDAL/PDAL) pull requests


  1. Pointcloud processing engine

  2. About the library ● 1.0.1 release now available (September 2015) (OSGeo4W/64) ● BSD Licensed (Supports proprietary plugins) ● C++ development git repo (https://github.com/PDAL/PDAL) ○ pull requests welcome ○ ● pdal main command many subcommands (kernels) ○ ● Pipelines (a chain of processing steps) XML processing language ○ VRT like ○ Nesting dolls ○

  3. History / Goals ● libLAS development outgrew ASPRS LAS (Oracle) ● Focused on data management ● Extensibility and integration ● Not just LAS-focused ● Leverage existing tools (GDAL, proj.4, libgeotiff, Python, PCL)

  4. readers / writers ● readers.buffer ● writers.derivative ● readers.faux ● writers.geowave ● readers.geowave ● writers.las ● readers.greyhound ● writers.matlab ● readers.las ● writers.nitf ● readers.mrsid ● writers.oci ● readers.nitf ● writers.ply ● readers.oci ● writers.p2g ● readers.optech ● writers.pcd ● readers.pcd ● writers.pgpointcloud ● readers.pgpointcloud ● writers.pclvisualizer ● readers.ply ● writers.rialto ● readers.qfit ● writers.sqlite ● readers.rxp ● writers.text ● readers.sbet ● readers.sqlite

  5. filters ● filters.attribute ● filters.pclblock ● filters.colorization ● filters.predicate ● filters.chipper ● filters.programmable ● filters.crop ● filters.range ● filters.decimation ● filters.reprojection ● filters.ferry ● filters.sort ● filters.hexbin ● filters.stats ● filters.mortonorder ● filters.transformation ● filters.merge

  6. subcommands ● ground ● info ● split ● tindex ● translate ● pipeline

  7. Ground ● Classifies a pointcloud ○ ground and non-ground points ○ optionally removes non-ground points ● Uses the PCL (PMF) Progressive Morphological Filter ○ same as a pipeline with PCLBlock ○ also an approximate version (much faster)

  8. Ground - Before

  9. Ground - After

  10. Info pdal info --summary source.laz { "pdal_version": "PDAL 1.0.0.b1 (399539)", "summary": {"bounds": {"X": { "max": 581026.95000719489, "min": 580304.60002865398 }, "Y": { "max": 4505023.6300240532, "min": 4504450.3600357873 }, "Z": { "max": 92.11999999999999, "min": -0.78000000000000025 } }, "dimensions": "X, Y, Z, Intensity, ReturnNumber, NumberOfReturns, ScanDirectionFlag, EdgeOfFlightLine, Classification, ScanAngleRank, UserData, PointSourceId", "num_points": 255772, "spatial_reference": "PROJCS["NAD83 / UTM zone 18N" ….]" } }

  11. Top down view

  12. Info --Boundary Default output $ pdal info --boundary source.laz

  13. Info --boundary Add options to command line $ pdal info --boundary source.laz --filters.hexbin.threshold=10 --filters.hexbin.sample_size=10 --filters.hexbin.edge_size=2

  14. Info --P (Point) $ pdal info Liberty-Island.ALS70.NYC_2013085-15.laz -p 2633 "Classification": 2, "EdgeOfFlightLine": 0, "GpsTime": 0, "Intensity": 23, "NumberOfReturns": 1, "PointId": 2633, "PointSourceId": 20, "ReturnNumber": 1, "ScanAngleRank": -10, "ScanDirectionFlag": 1, "UserData": 0, "X": 580814.96002865396, "Y": 4504512.6400357876, "Z": 0.02000000000000024

  15. Split (Capacity) pdal split -i Liberty-Island.ALS70.NYC_2013085-15.laz -o Liberty-Island-Tile.las --capacity 50000

  16. Split (Length) pdal split -i Liberty-Island.ALS70.NYC_2013085-15.laz -o Liberty-Island2-Tile. laz --length 100

  17. tindex ● Creates a tile index of pointclouds in any gdal vector format ● Can then be used for merge/clip operations pdal tindex --merge --tindex filename.ogr --polygon "wkt" --filespec output.laz

  18. tindex - example pdal tindex --merge --tindex LibertyTindex2.db --filespec clipped_merged_LibertyTinde x.laz --polygon "POLYGON ((-74.0459708 40.690573, -74.045082 40.689164, -74.046622 40.688406, -74.047320 40.690348, -74.0459708 40.690573))"

  19. Translate ● Basic pointcloud format changes ○ -i myfile.las -o myfile.laz ● also advanced options to the reader/writer/projection steps ○ --writers.las.system_id="Custom" --writers. las.scale_z=0.00001 System ID: 'Custom' Generating Software: 'PDAL 1.0.0.b1 (399539)' Min X Y Z: 580497.62 4504606.39 -0.78000 Max X Y Z: 580686.27 4504845.65 46.72000

  20. Pipeline ● Access to the full power of pdal ● allows stacking of range of operations with one pass through data ● great for programmatically building workflows ● command line specification of values for batch processing

  21. Pipeline - cli values $ pdal pipeline range.xml --readers.las. <Pipeline version="1.0"> filename=myfile.las --writers.las. <Writer type="writers.las"> filename=myrangefile.laz <Filter type="filters.range"> <Option name="dimension">Z $ find . -name="*.laz" | xargs pdal <Options> pipeline --readers.las.filename={} -- <Option name="min">0</Option> writers.las.filename=newdir/{} <Option name="max">99999</Option> </Options> </Option> <Reader type="readers.las"></Reader> </Filter> </Writer>

  22. colorization filter ● Can use any gdal image source ● Must match projections though <Pipeline version="1.0"> <Writer type="writers.las"> <Filter type="filters.colorization"> <Option name="raster"> <![CDATA[http://isse.cr.usgs. gov/arcgis/rest/services/Orthoimagery/USGS_EROS_Ortho_1Foot/ImageServer/ exportImage?bbox=580304.600,4504450.360,581026.950,4505023.630 &bboxSR=26918&size=1000, 1000&imageSR=26918&format=tiff&pixelType=U8&noDataInterpretation=esriNoD ataMatchAny&interpolation=+RSP_BilinearInterpolation&f=image]]> </Option> <Reader type="readers.las"> </Reader> </Filter> </Writer> </Pipeline>

  23. COLORization - cli New Syntax: $ pdal translate -i infile.laz -o outfile_color.laz --filter filters.colorization --filters.colorization. raster=myraster.tif

  24. reprojection filter Assigning and reprojecing data: $ pdal pipeline proj.xml <Pipeline version="1.0"> <Writer type="writers.las"> --readers.las.filename=src.laz <Filter type="filters.reprojection"> --writers.las.filename=dest.laz <Option name="in_srs">EPSG:26918</Option> <Option name="out_srs">EPSG:26919</Option> <Reader type="readers.las"/> </Filter> </Writer> </Pipeline> Assign and project with translate also: ls *.las | xargs -P10 pdal translate --filters filters.reprojection --filters.reprojection.in_srs=epsg:26910 --filters.reprojection.out_srs=epsg:26911 -i {} -o newdir/{}

  25. p2g writer (DEMs) <Pipeline version="1.0"> <Writer type="writers.p2g"> <Option name="grid_dist_y">1.0</Option> <Option name="grid_dist_x">1.0</Option> <Option name="output_format">tif</Option> <Option name="output_type">idw</Option> <Option name="filename">destination</Option> <Filter type="filters.range"> <Option name="dimension">Classification <Options> <Option name="equals">2</Option> </Options> </Option> <Reader type="readers.las"> <Option name="filename">source.laz </Option> </Reader> </Filter> </Writer> </Pipeline>

  26. p2g writer (DEMs) pdal translate -i source.laz -o destination.tif --writer=writers.p2g --writers.p2g.grid_dist_y=0.5 -- writers.p2g.grid_dist_x=0.5 --writers.p2g. output_format=tif --writers.p2g.output_type=idw You can turn the above into a pipeline with --pipeline dem_pipeline.xml

  27. the kennel plas.io Greyhound Entwine

  28. plas.io The LASzip compression algorithm refactored for compilation via Emscripten to JavaScript allowing LAS/LAZ viewing with a WebGL enabled browser (FF, Chrome, IE11, Safari)

  29. GreyHound ● RESTful HTTP environment for serving and streaming point cloud data ● LAZ-style compression ● Dynamic schema ● Metadata

  30. 's new parallel indexing engine iowalidar.com: 163 Billion points in a browser (quadtree) speck.ly: NYC, USA 4.7 Billion points (octree)

  31. Questions?

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend