[pdal] Merging buffered tiles

Eric Robeck erobeck at gmail.com
Thu May 3 08:49:10 PDT 2018


Howard,

Yes, the parentheses crept in early while I tried to keep track of the
various parameter combinations used for my bare earth simulations, but they
caused headaches later on...

As an update, I ran a slightly modified version of the same pipeline
(sample tile geometries, different source files) and got no errors. This
time the input files were in LAZ format and they were not reprojected.
Another factor could be that the first set were generated by the old(ish)
MCC-LIDAR application, and the latter by Isenburg's lasground.exe.

Regards,
Eric


On Thu, May 3, 2018 at 10:26 AM Howard Butler <howard at hobu.co> wrote:

> Eric,
>
>
> This is such an awesome pipeline (except for parenthesis in your
> filenames -- ewww :).
>
> The SRS complaint is something we should investigate. I suppose it is
> because something isn't transiting through GDAL as "equal" due to the
> way it works.
>
> Howard
>
>
> On 5/3/18 10:05 AM, Eric Robeck wrote:
> > Howard / Mike,
> >
> > Thanks for your feedback. Based on your recommendation, I built a
> pipeline
> > that reads all 24 input tiles, crops each to non-overlapping bounding
> > boxes, merges, and reprojects the results prior to writing the composite
> > LAZ file.
> >
> > The pipeline works and the output file looks great. I can't find any
> > obvious errors or omissions. However, PDAL returns the following error
> > message when writing the file, repeated 24 times (one per input file):
> >
> > *(pdal pipeline Error) writers.las: Attempting to write
> > 'C:/data/forest_park/mcc/mcc_merge_UTM (s-1_5, t-0_3).laz' with multiple
> > point spatial references.*
> >
> > Should I be worried about this error? Is there any way to structure my
> JSON
> > pipeline to prevent it from occurring? The full pipeline is copied below.
> >
> > Thanks,
> > Eric
> >
> > {
> >   "pipeline":
> >   [
> >     {
> >         "type":"readers.las",
> >         "filename":"C:/data/forest_park/mcc/forest_park_sp_tile_1 (s-1_5,
> > t-0_3).las",
> >         "tag":"tile_1"
> >     },
> >     {
> >         "type":"readers.las",
> >         "filename":"C:/data/forest_park/mcc/forest_park_sp_tile_2 (s-1_5,
> > t-0_3).las",
> >         "tag":"tile_2"
> >     },
> >     {
> >         "type":"readers.las",
> >         "filename":"C:/data/forest_park/mcc/forest_park_sp_tile_3 (s-1_5,
> > t-0_3).las",
> >         "tag":"tile_3"
> >     },
> >     {
> >         "type":"readers.las",
> >         "filename":"C:/data/forest_park/mcc/forest_park_sp_tile_4 (s-1_5,
> > t-0_3).las",
> >         "tag":"tile_4"
> >     },
> >     {
> >         "type":"readers.las",
> >         "filename":"C:/data/forest_park/mcc/forest_park_sp_tile_5 (s-1_5,
> > t-0_3).las",
> >         "tag":"tile_5"
> >     },
> >     {
> >         "type":"readers.las",
> >         "filename":"C:/data/forest_park/mcc/forest_park_sp_tile_6 (s-1_5,
> > t-0_3).las",
> >         "tag":"tile_6"
> >     },
> >     {
> >         "type":"readers.las",
> >         "filename":"C:/data/forest_park/mcc/forest_park_sp_tile_7 (s-1_5,
> > t-0_3).las",
> >         "tag":"tile_7"
> >     },
> >     {
> >         "type":"readers.las",
> >         "filename":"C:/data/forest_park/mcc/forest_park_sp_tile_8 (s-1_5,
> > t-0_3).las",
> >         "tag":"tile_8"
> >     },
> >     {
> >         "type":"readers.las",
> >         "filename":"C:/data/forest_park/mcc/forest_park_sp_tile_9 (s-1_5,
> > t-0_3).las",
> >         "tag":"tile_9"
> >     },
> >     {
> >         "type":"readers.las",
> >         "filename":"C:/data/forest_park/mcc/forest_park_sp_tile_10
> (s-1_5,
> > t-0_3).las",
> >         "tag":"tile_10"
> >     },
> >     {
> >         "type":"readers.las",
> >         "filename":"C:/data/forest_park/mcc/forest_park_sp_tile_11
> (s-1_5,
> > t-0_3).las",
> >         "tag":"tile_11"
> >     },
> >     {
> >         "type":"readers.las",
> >         "filename":"C:/data/forest_park/mcc/forest_park_sp_tile_12
> (s-1_5,
> > t-0_3).las",
> >         "tag":"tile_12"
> >     },
> >     {
> >         "type":"readers.las",
> >         "filename":"C:/data/forest_park/mcc/forest_park_sp_tile_13
> (s-1_5,
> > t-0_3).las",
> >         "tag":"tile_13"
> >     },
> >     {
> >         "type":"readers.las",
> >         "filename":"C:/data/forest_park/mcc/forest_park_sp_tile_14
> (s-1_5,
> > t-0_3).las",
> >         "tag":"tile_14"
> >     },
> >     {
> >         "type":"readers.las",
> >         "filename":"C:/data/forest_park/mcc/forest_park_sp_tile_15
> (s-1_5,
> > t-0_3).las",
> >         "tag":"tile_15"
> >     },
> >     {
> >         "type":"readers.las",
> >         "filename":"C:/data/forest_park/mcc/forest_park_sp_tile_16
> (s-1_5,
> > t-0_3).las",
> >         "tag":"tile_16"
> >     },
> >     {
> >         "type":"readers.las",
> >         "filename":"C:/data/forest_park/mcc/forest_park_sp_tile_17
> (s-1_5,
> > t-0_3).las",
> >         "tag":"tile_17"
> >     },
> >     {
> >         "type":"readers.las",
> >         "filename":"C:/data/forest_park/mcc/forest_park_sp_tile_18
> (s-1_5,
> > t-0_3).las",
> >         "tag":"tile_18"
> >     },
> >     {
> >         "type":"readers.las",
> >         "filename":"C:/data/forest_park/mcc/forest_park_sp_tile_19
> (s-1_5,
> > t-0_3).las",
> >         "tag":"tile_19"
> >     },
> >     {
> >         "type":"readers.las",
> >         "filename":"C:/data/forest_park/mcc/forest_park_sp_tile_20
> (s-1_5,
> > t-0_3).las",
> >         "tag":"tile_20"
> >     },
> >     {
> >         "type":"readers.las",
> >         "filename":"C:/data/forest_park/mcc/forest_park_sp_tile_21
> (s-1_5,
> > t-0_3).las",
> >         "tag":"tile_21"
> >     },
> >     {
> >         "type":"readers.las",
> >         "filename":"C:/data/forest_park/mcc/forest_park_sp_tile_22
> (s-1_5,
> > t-0_3).las",
> >         "tag":"tile_22"
> >     },
> >     {
> >         "type":"readers.las",
> >         "filename":"C:/data/forest_park/mcc/forest_park_sp_tile_23
> (s-1_5,
> > t-0_3).las",
> >         "tag":"tile_23"
> >     },
> >     {
> >         "type":"readers.las",
> >         "filename":"C:/data/forest_park/mcc/forest_park_sp_tile_24
> (s-1_5,
> > t-0_3).las",
> >         "tag":"tile_24"
> >     },
> >     {
> >         "inputs":"tile_1",
> >       "type":"filters.crop",
> >       "bounds":"([737943,738600],[4280246,4281046])",
> >       "tag":"crop_1"
> >     },
> >     {
> >         "inputs":"tile_2",
> >       "type":"filters.crop",
> >       "bounds":"([737143,737943],[4280246,4281046])",
> >       "tag":"crop_2"
> >     },
> >     {
> >         "inputs":"tile_3",
> >       "type":"filters.crop",
> >       "bounds":"([737943,738600],[4279446,4280246])",
> >       "tag":"crop_3"
> >     },
> >     {
> >         "inputs":"tile_4",
> >       "type":"filters.crop",
> >       "bounds":"([737143,737943],[4279446,4280246])",
> >       "tag":"crop_4"
> >     },
> >     {
> >         "inputs":"tile_5",
> >       "type":"filters.crop",
> >       "bounds":"([737943,738600],[4279000,4279446])",
> >       "tag":"crop_5"
> >     },
> >     {
> >         "inputs":"tile_6",
> >       "type":"filters.crop",
> >       "bounds":"([737143,737943],[4279000,4279446])",
> >       "tag":"crop_6"
> >     },
> >     {
> >         "inputs":"tile_7",
> >       "type":"filters.crop",
> >       "bounds":"([737943,738600],[4281046,4281300])",
> >       "tag":"crop_7"
> >     },
> >     {
> >         "inputs":"tile_8",
> >       "type":"filters.crop",
> >       "bounds":"([737143,737943],[4281046,4281300])",
> >       "tag":"crop_8"
> >     },
> >     {
> >         "inputs":"tile_9",
> >       "type":"filters.crop",
> >       "bounds":"([734385,734743],[4279446,4280246])",
> >       "tag":"crop_9"
> >     },
> >     {
> >         "inputs":"tile_10",
> >       "type":"filters.crop",
> >       "bounds":"([734385,734743],[4280246,4281046])",
> >       "tag":"crop_10"
> >     },
> >     {
> >         "inputs":"tile_11",
> >       "type":"filters.crop",
> >       "bounds":"([734743,735543],[4279446,4280246])",
> >       "tag":"crop_11"
> >     },
> >     {
> >         "inputs":"tile_12",
> >       "type":"filters.crop",
> >       "bounds":"([734743,735543],[4280246,4281046])",
> >       "tag":"crop_12"
> >     },
> >     {
> >         "inputs":"tile_13",
> >       "type":"filters.crop",
> >       "bounds":"([735543,736343],[4279446,4280246])",
> >       "tag":"crop_13"
> >     },
> >     {
> >         "inputs":"tile_14",
> >       "type":"filters.crop",
> >       "bounds":"([735543,736343],[4280246,4281046])",
> >       "tag":"crop_14"
> >     },
> >     {
> >         "inputs":"tile_15",
> >       "type":"filters.crop",
> >       "bounds":"([734385,734743],[4279000,4279446])",
> >       "tag":"crop_15"
> >     },
> >     {
> >         "inputs":"tile_16",
> >       "type":"filters.crop",
> >       "bounds":"([734743,735543],[4279000,4279446])",
> >       "tag":"crop_16"
> >     },
> >     {
> >         "inputs":"tile_17",
> >       "type":"filters.crop",
> >       "bounds":"([735543,736343],[4279000,4279446])",
> >       "tag":"crop_17"
> >     },
> >     {
> >         "inputs":"tile_18",
> >       "type":"filters.crop",
> >       "bounds":"([734385,734743],[4281046,4281300])",
> >       "tag":"crop_18"
> >     },
> >     {
> >         "inputs":"tile_19",
> >       "type":"filters.crop",
> >       "bounds":"([734743,735543],[4281046,4281300])",
> >       "tag":"crop_19"
> >     },
> >     {
> >         "inputs":"tile_20",
> >       "type":"filters.crop",
> >       "bounds":"([735543,736343],[4281046,4281300])",
> >       "tag":"crop_20"
> >     },
> >     {
> >         "inputs":"tile_21",
> >       "type":"filters.crop",
> >       "bounds":"([736343,737143],[4279446,4280246])",
> >       "tag":"crop_21"
> >     },
> >     {
> >         "inputs":"tile_22",
> >       "type":"filters.crop",
> >       "bounds":"([736343,737143],[4280246,4281046])",
> >       "tag":"crop_22"
> >     },
> >     {
> >         "inputs":"tile_23",
> >       "type":"filters.crop",
> >       "bounds":"([736343,737143],[4279000,4279446])",
> >       "tag":"crop_23"
> >     },
> >     {
> >         "inputs":"tile_24",
> >       "type":"filters.crop",
> >       "bounds":"([736343,737143],[4281046,4281300])",
> >       "tag":"crop_24"
> >     },
> >     {
> >
> >
> "inputs":["crop_1","crop_2","crop_3","crop_4","crop_5","crop_6","crop_7","crop_8","crop_9","crop_10","crop_11","crop_12","crop_13","crop_14","crop_15","crop_16","crop_17","crop_18","crop_19","crop_20","crop_21","crop_22","crop_23","crop_24"],
> >       "type":"filters.merge",
> >       "tag":"merge_tiles"
> >     },
> >     {
> >         "inputs":"merge_tiles",
> >       "type":"filters.reprojection",
> >       "tag":"reproject_tiles",
> >       "in_srs":"EPSG:26915",
> >       "out_srs":"EPSG:32615"
> >     },
> >     {
> >         "inputs":"reproject_tiles",
> >       "type":"writers.las",
> >       "filename":"C:/data/forest_park/mcc/mcc_merge_UTM (s-1_5,
> t-0_3).laz"
> >     }
> >   ]
> > }
> >
> >
> >
> > On Sun, Apr 29, 2018 at 10:19 AM Howard Butler <howard at hobu.co> wrote:
> >
> >>
> >> On 4/28/18 5:03 PM, Eric Robeck wrote:
> >>> Is there a way within PDAL to merged buffered tiles with a constant
> >> buffer
> >>> width, while filtering out only the buffers from each tile?
> >>>
> >>> For context, I am using an external software to modify a large point
> >> cloud.
> >>> Due to memory constraints, I first tiled the data using the "splitters"
> >>> filter, but included a 10 m buffer to minimize edge effects. Now that
> the
> >>> data are processed, I want to merge them back into a single file.
> >> You could use filters.assign to set a "buffer" value for the points that
> >> are in your buffer ring (or the ones that aren't), and then use
> >> filters.range to cull out points that have the "!buffer" classification
> >> before you go back to merge them altogether. It would be laborious, but
> >> you could get the job done.
> >>
> >> Additionally, Connor Manning of Hobu demonstrated a workflow at FOSS4G
> >> 2017 [1] that is very similar to what you're doing except it is based on
> >> Greyhound and Entwine for the data management (and PDAL for the
> >> processing). The goal is to be able to put back information into an
> >> Entwine tree and not be constrained by a fixed tiling scheme while
> >> processing. It's all very much a prototype at the moment, but dynamic
> >> workflows based on adaptive tiling schemes is something we are actively
> >> working on.
> >>
> >> Howard
> >>
> >>
> >> [1] https://vimeo.com/245073446
> >>
> >>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/pdal/attachments/20180503/76b37eb0/attachment-0001.html>


More information about the pdal mailing list