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

pointcloud processing engine about the library
SMART_READER_LITE
LIVE PREVIEW

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


slide-1
SLIDE 1

Pointcloud processing engine

slide-2
SLIDE 2
  • 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

About the library

slide-3
SLIDE 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)

slide-4
SLIDE 4
  • readers.buffer
  • readers.faux
  • readers.geowave
  • readers.greyhound
  • readers.las
  • readers.mrsid
  • readers.nitf
  • readers.oci
  • readers.optech
  • readers.pcd
  • readers.pgpointcloud
  • readers.ply
  • readers.qfit
  • readers.rxp
  • readers.sbet
  • readers.sqlite

readers / writers

  • writers.derivative
  • writers.geowave
  • writers.las
  • writers.matlab
  • writers.nitf
  • writers.oci
  • writers.ply
  • writers.p2g
  • writers.pcd
  • writers.pgpointcloud
  • writers.pclvisualizer
  • writers.rialto
  • writers.sqlite
  • writers.text
slide-5
SLIDE 5

filters

  • filters.attribute
  • filters.colorization
  • filters.chipper
  • filters.crop
  • filters.decimation
  • filters.ferry
  • filters.hexbin
  • filters.mortonorder
  • filters.merge
  • filters.pclblock
  • filters.predicate
  • filters.programmable
  • filters.range
  • filters.reprojection
  • filters.sort
  • filters.stats
  • filters.transformation
slide-6
SLIDE 6
  • ground
  • info
  • split
  • tindex
  • translate
  • pipeline

subcommands

slide-7
SLIDE 7
  • 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)

Ground

slide-8
SLIDE 8

Ground - Before

slide-9
SLIDE 9

Ground - After

slide-10
SLIDE 10

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" ….]" } }

Info

slide-11
SLIDE 11

Top down view

slide-12
SLIDE 12

Info --Boundary

Default output

$ pdal info --boundary source.laz

slide-13
SLIDE 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
slide-14
SLIDE 14

$ pdal info Liberty-Island.ALS70.NYC_2013085-15.laz -p 2633

Info --P (Point)

"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

slide-15
SLIDE 15

pdal split -i Liberty-Island.ALS70.NYC_2013085-15.laz -o Liberty-Island-Tile.las

  • -capacity 50000

Split (Capacity)

slide-16
SLIDE 16

pdal split -i Liberty-Island.ALS70.NYC_2013085-15.laz -o Liberty-Island2-Tile. laz --length 100

Split (Length)

slide-17
SLIDE 17
  • Creates a tile index of pointclouds in any

gdal vector format

  • Can then be used for merge/clip
  • perations

pdal tindex --merge --tindex filename.ogr --polygon "wkt"

  • -filespec output.laz

tindex

slide-18
SLIDE 18

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))"

tindex - example

slide-19
SLIDE 19
  • 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

Translate

slide-20
SLIDE 20
  • 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

Pipeline

slide-21
SLIDE 21

$ pdal pipeline range.xml --readers.las. filename=myfile.las --writers.las. filename=myrangefile.laz $ find . -name="*.laz" | xargs pdal pipeline --readers.las.filename={} -- writers.las.filename=newdir/{}

Pipeline - cli values

<Pipeline version="1.0"> <Writer type="writers.las"> <Filter type="filters.range"> <Option name="dimension">Z <Options> <Option name="min">0</Option> <Option name="max">99999</Option> </Options> </Option> <Reader type="readers.las"></Reader> </Filter> </Writer>

slide-22
SLIDE 22
  • Can use any gdal image source
  • Must match projections though

colorization filter

<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>

slide-23
SLIDE 23

New Syntax:

$ pdal translate -i infile.laz -o outfile_color.laz

  • -filter filters.colorization --filters.colorization.

raster=myraster.tif

COLORization - cli

slide-24
SLIDE 24
slide-25
SLIDE 25
slide-26
SLIDE 26

Assigning and reprojecing data:

$ pdal pipeline proj.xml

  • -readers.las.filename=src.laz
  • -writers.las.filename=dest.laz

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/{}

<Pipeline version="1.0"> <Writer type="writers.las"> <Filter type="filters.reprojection"> <Option name="in_srs">EPSG:26918</Option> <Option name="out_srs">EPSG:26919</Option> <Reader type="readers.las"/> </Filter> </Writer> </Pipeline>

reprojection filter

slide-27
SLIDE 27

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>

slide-28
SLIDE 28

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.

  • utput_format=tif --writers.p2g.output_type=idw

You can turn the above into a pipeline with

  • -pipeline dem_pipeline.xml

p2g writer (DEMs)

slide-29
SLIDE 29

plas.io Greyhound Entwine

the kennel

slide-30
SLIDE 30

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

plas.io

slide-31
SLIDE 31
  • RESTful HTTP environment for serving

and streaming point cloud data

  • LAZ-style compression
  • Dynamic schema
  • Metadata

GreyHound

slide-32
SLIDE 32

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

slide-33
SLIDE 33

Questions?