[pdal] Filters.assign: not all filters applied

Eric Robeck erobeck at gmail.com
Sat Apr 14 18:15:28 PDT 2018


All,

I answered my last question above:

*However, I can't set the values of Window and Slope* - even if they are
> last. (I don't care about the others - they are just for testing.) Why
> can't I assign values to my newly created dimensions? Is it because I don't
> specify their type until the writer stage?
>

By transferring existing fields with the desired formats with
filters.ferry, instead of creating them from scratch, I was able to get
them to keep the values subsequently assigned to them using filters.assign.
Do I need to force the dimension format (uint8, float, etc.) before it can
be assigned values?

However, the same issue still applies: I can only assign values to the last
dimension in each filters.assign stage. To assign multiple dimensions, I
have to create separate stages for each. This doesn't appear to be an issue
in the PDAL.io example (
https://www.pdal.io/stages/filters.assign.html#filters-assign).

Thanks, everyone! I'll get back to work and stop spamming your inboxes.

Regards,
Eric


On Sat, Apr 14, 2018 at 7:38 PM, Eric Robeck <erobeck at gmail.com> wrote:

> PDAL team -
>
> I mentioned this in an earlier email but thought it would be better in its
> own thread. I wrote a pipeline to assign two SMRF variables (window and
> slope) to separate dimensions, as I eventually want to combine them into a
> single Postgres database and compare the effectiveness of each iteration.
>
> My pipeline has several stages, as shown below. First I read the file,
> capturing the non-standard dimensions I created earlier, then I ferry the
> two new fields. Next reset the classifications (before running SMRF) and
> assign per-file values to Window and Slope. This is where the process
> breaks down. Only the last assignment is made. In the pipeline below, I
> added GpsTime and Red for testing purposes. As shown in the *info --stats*
> output (bottom, highlighted text), no changes were made to Window, Slope or
> GpsTime, but Red is assigned a value of 255. When I remove the Red
> assignment, GpsTime is assigned the correct value of 3000, but Window and
> Slope are still unchanged.
>
> If I insert more *filters.assign* stages in the pipeline, I can set
> values multiple dimensions, but only if they are the last listed in each
> stage.
>
> *However, I can't set the values of Window and Slope* - even if they are
> last. (I don't care about the others - they are just for testing.) Why
> can't I assign values to my newly created dimensions? Is it because I don't
> specify their type until the writer stage?
>
> Thanks in advance.
>
> Regards,
> Eric
>
>
> *Pipeline (limited to the first 100,000 points for testing). File is LAZ
> 1.4 format:*
>
> {
>   "pipeline":
>   [
>     {
>       "filename":"C:/data/forest_park/forest_park_orig_dtm.laz",
>       "type":"readers.las",
>       "extra_dims":"OldClassification=uint8, DTM=float",
>       "count":100000
>     },
>     {
>       "type":"filters.ferry",
>       "tag":"filtersferry",
>       "dimensions":"=>Window, =>Slope"
>     },
>     {
>       "inputs":"filtersferry",
>       "type":"filters.assign",
>       "tag":"filtersassign",
>       "assignment":"Classification[:]=0",
>       "assignment":"Window[:]=12",
>       "assignment":"Slope[:]=0_50",
>       "assignment":"GpsTime[:]=3000",
>       "assignment":"Red[:]=255"
>     },
>     {
>       "inputs":"filtersassign",
>       "type":"filters.smrf",
>       "tag":"filterssmurf",
>       "cell":1.00,
>       "cut":0,
>       "scalar":1.25,
>       "slope":0.05,
>       "threshold":0.50,
>       "window":12
>     },
>     {
>         "inputs":"filterssmurf",
>       "type":"writers.las",
>       "minor_version":"4",
>       "compression":"true",
>       "extra_dims":"OldClassification=uint8, DTM=float, Window=uint8,
> Slope=float",
>       "scale_x":"0.01",
>       "scale_y":"0.01",
>       "scale_z":"0.01",
>       "offset_x":"auto",
>       "offset_y":"auto",
>       "offset_z":"auto",
>       "filename":"C:/data/forest_park/smrf/forest_park (window-12,
> slope-0_05).laz"
>     }
>   ]
> }
>
> *info -stats JSON output:*
>
> {
>   "filename": "C:\\data\\forest_park\\smrf\\forest_park (window-12,
> slope-0_05).laz",
>   "pdal_version": "1.7.1 (git-version: Release)",
>   "stats":
>   {
>     "bbox":
>     {
>       "EPSG:4326":
>       {
>         "bbox":
>         {
>           "maxx": -90.26228629,
>           "maxy": 38.63885582,
>           "maxz": 231.3,
>           "minx": -90.26674834,
>           "miny": 38.63740345,
>           "minz": 146.26
>         },
>         "boundary": {
>    "coordinates" : [
>       [
>          [ -90.266748340000007, 38.637506649999999 ],
>          [ -90.266697059999998, 38.638855820000003 ],
>          [ -90.262286290000006, 38.638752609999997 ],
>          [ -90.262337650000006, 38.637403450000001 ],
>          [ -90.266748340000007, 38.637506649999999 ]
>       ]
>    ],
>    "type" : "Polygon"
> }
>
>       },
>       "native":
>       {
>         "bbox":
>         {
>           "maxx": 738284.32,
>           "maxy": 4280246,
>           "maxz": 231.3,
>           "minx": 737900.01,
>           "miny": 4280096.12,
>           "minz": 146.26
>         },
>         "boundary": {
>    "coordinates" : [
>       [
>          [ 737900.01000000001, 4280096.1200000001 ],
>          [ 737900.01000000001, 4280246 ],
>          [ 738284.31999999995, 4280246 ],
>          [ 738284.31999999995, 4280096.1200000001 ],
>          [ 737900.01000000001, 4280096.1200000001 ]
>       ]
>    ],
>    "type" : "Polygon"
> }
>
>       }
>     },
>     "statistic":
>     [
>       {
>         "average": 738047.8528,
>         "count": 100000,
>         "kurtosis": -1.058617353e+21,
>         "maximum": 738284.32,
>         "minimum": 737900.01,
>         "name": "X",
>         "position": 0,
>         "skewness": 5.819331476e+21,
>         "stddev": 2335.463392,
>         "variance": 5454389.253
>       },
>       {
>         "average": 4280180.736,
>         "count": 100000,
>         "kurtosis": 1.110237075e+20,
>         "maximum": 4280246,
>         "minimum": 4280096.12,
>         "name": "Y",
>         "position": 1,
>         "skewness": 5.833279928e+21,
>         "stddev": 13535.46299,
>         "variance": 183208758.5
>       },
>       {
>         "average": 172.814753,
>         "count": 100000,
>         "kurtosis": -1.151862193e+17,
>         "maximum": 231.3,
>         "minimum": 146.26,
>         "name": "Z",
>         "position": 2,
>         "skewness": 4.786721963e+16,
>         "stddev": 24.75900268,
>         "variance": 613.0082139
>       },
>       {
>         "average": 13627.78624,
>         "count": 100000,
>         "kurtosis": -9.799196037e+11,
>         "maximum": 65520,
>         "minimum": 48,
>         "name": "Intensity",
>         "position": 3,
>         "skewness": 2.271591546e+11,
>         "stddev": 11494.12826,
>         "variance": 132114984.4
>       },
>       {
>         "average": 1.16788,
>         "count": 100000,
>         "kurtosis": -3.136035307e+15,
>         "maximum": 7,
>         "minimum": 1,
>         "name": "ReturnNumber",
>         "position": 4,
>         "skewness": 2.081955413e+15,
>         "stddev": 0.4458118459,
>         "variance": 0.198748202
>       },
>       {
>         "average": 1.33647,
>         "count": 100000,
>         "kurtosis": 2.44020564e+16,
>         "maximum": 7,
>         "minimum": 1,
>         "name": "NumberOfReturns",
>         "position": 5,
>         "skewness": 5.819448528e+15,
>         "stddev": 0.6329627186,
>         "variance": 0.4006418031
>       },
>       {
>         "average": 0.50087,
>         "count": 100000,
>         "kurtosis": -2.000079167,
>         "maximum": 1,
>         "minimum": 0,
>         "name": "ScanDirectionFlag",
>         "position": 6,
>         "skewness": -0.003486625756,
>         "stddev": 0.5000250321,
>         "variance": 0.2500250328
>       },
>       {
>         "average": 0,
>         "count": 100000,
>         "maximum": 0,
>         "minimum": 0,
>         "name": "EdgeOfFlightLine",
>         "position": 7,
>         "stddev": 0,
>         "variance": 0
>       },
>       {
>         "average": 1.69919,
>         "count": 100000,
>         "kurtosis": -1.16609259e+16,
>         "maximum": 2,
>         "minimum": 1,
>         "name": "Classification",
>         "position": 8,
>         "skewness": 1.912221988e+15,
>         "stddev": 0.4586301939,
>         "variance": 0.2103416548
>       },
>       {
>         "average": -2.09112,
>         "count": 100000,
>         "kurtosis": 6.331454949e+15,
>         "maximum": 6,
>         "minimum": -7,
>         "name": "ScanAngleRank",
>         "position": 9,
>         "skewness": -1.275371659e+15,
>         "stddev": 3.14954445,
>         "variance": 9.919630242
>       },
>       {
>         "average": 0,
>         "count": 100000,
>         "maximum": 0,
>         "minimum": 0,
>         "name": "UserData",
>         "position": 10,
>         "stddev": 0,
>         "variance": 0
>       },
>       {
>         "average": 45,
>         "count": 100000,
>         "kurtosis": 99997,
>         "maximum": 45,
>         "minimum": 45,
>         "name": "PointSourceId",
>         "position": 11,
>         "skewness": 5.833372669e+21,
>         "stddev": 0.1423032062,
>         "variance": 0.0202502025
>       },
>       {
>         "average": 255,
>         "count": 100000,
>         "kurtosis": 99997,
>         "maximum": 255,
>         "minimum": 255,
>         *"name": "Red",*
>         "position": 12,
>         "skewness": 5.833372669e+21,
>         "stddev": 0.8063848353,
>         "variance": 0.6502565026
>       },
>       {
>         "average": 0,
>         "count": 100000,
>         "maximum": 0,
>         "minimum": 0,
>         "name": "Green",
>         "position": 13,
>         "stddev": 0,
>         "variance": 0
>       },
>       {
>         "average": 0,
>         "count": 100000,
>         "maximum": 0,
>         "minimum": 0,
>         "name": "Blue",
>         "position": 14,
>         "stddev": 0,
>         "variance": 0
>       },
>       {
>         "average": 172254001,
>         "count": 100000,
>         "kurtosis": -3.202512756e+16,
>         "maximum": 172254002.3,
>         "minimum": 172253999.8,
>         *"name": "GpsTime",*
>         "position": 15,
>         "skewness": 5.833372669e+21,
>         "stddev": 544717.7005,
>         "variance": 2.967173733e+11
>       },
>       {
>         "average": 0,
>         "count": 100000,
>         "maximum": 0,
>         "minimum": 0,
>         "name": "ScanChannel",
>         "position": 16,
>         "stddev": 0,
>         "variance": 0
>       },
>       {
>         "average": 0,
>         "count": 100000,
>         "maximum": 0,
>         "minimum": 0,
>         "name": "ClassFlags",
>         "position": 17,
>         "stddev": 0,
>         "variance": 0
>       },
>       {
>         "average": 18.01678,
>         "count": 100000,
>         "kurtosis": -1.884682428e+10,
>         "maximum": 66,
>         "minimum": 1,
>         "name": "OldClassification",
>         "position": 18,
>         "skewness": 7910529149,
>         "stddev": 28.56978029,
>         "variance": 816.2323461
>       },
>       {
>         "average": 153.4204378,
>         "count": 100000,
>         "kurtosis": -3.477613714e+20,
>         "maximum": 156.4029999,
>         "minimum": 146.477005,
>         "name": "DTM",
>         "position": 19,
>         "skewness": 1.411306933e+20,
>         "stddev": 1.666234469,
>         "variance": 2.776337307
>       },
>       {
>         "average": 0,
>         "count": 100000,
>         "maximum": 0,
>         "minimum": 0,
>         *"name": "Window",*
>         "position": 20,
>         "stddev": 0,
>         "variance": 0
>       },
>       {
>         "average": 0,
>         "count": 100000,
>         "maximum": 0,
>         "minimum": 0,
>         *"name": "Slope",*
>         "position": 21,
>         "stddev": 0,
>         "variance": 0
>       }
>     ]
>   }
> }
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/pdal/attachments/20180414/73649e4e/attachment-0001.html>


More information about the pdal mailing list