[pdal] PDAL Python working with an specific dimension (classification)
Andrew Bell
andrew.bell.ia at gmail.com
Thu May 14 18:29:53 PDT 2020
On Thu, May 14, 2020 at 6:50 PM Miguel Guerrero <
g.miguel.guerrero.m at gmail.com> wrote:
> Thanks for the prompt reply!
> I understand. Here is another question: I stored the Coplanarity values (0
> and 1) in the UserData dimension. Is there any way to "assign"/"reclassify"
> the UserData dimension to the Classification dimension?
> Example:
> UserData = 0 => Classification = class 16
> UserData = 1 => Classification = class 17
>
You can do this with the assign filter:
{
"type" : "filters.assign",
"assignment": "Classification[:]=16",
"condition":"UserData[0:0]"
},
{
"type" : "filters.assign",
"assignment": "Classification[:]=17",
"condition":"UserData[1:1]"
},
>
> Thanks in advance for your help
>
> Miguel
>
> On Thu, May 14, 2020 at 1:01 PM Andrew Bell <andrew.bell.ia at gmail.com>
> wrote:
>
>> filters.csf is a ground filter, so it classifies everything as either
>> ground or unclassified.
>>
>> On Thu, May 14, 2020 at 3:41 PM Miguel Guerrero <
>> g.miguel.guerrero.m at gmail.com> wrote:
>>
>>> Hello,
>>> I hope this email finds you well.
>>> First off, thanks for a great job implementing the PDAL for Python.
>>> I have a LiDAR dataset in LAS format that has been pre-classified. I
>>> want to apply some filters to one or multiples classes. I followed the
>>> samples shown on https://pdal.io/stages/filters.html and
>>> https://github.com/PDAL/python. I am able to get the filters to work
>>> but the final output only contains the classes 1 and/or 2, when in reality
>>> I would like to get the rest of the classes that were not used in the
>>> filtering process.
>>> Any direction or suggestion would be greatly appreciated.
>>>
>>> My best regards,
>>>
>>> Miguel
>>>
>>> Here is my code:
>>>
>>> import os
>>>
>>> # Input and validation of source directory
>>> while True:
>>> srcDirectory = os.path.normpath(input("Enter directory containing LAS files: "))
>>> if os.path.exists(srcDirectory) is True and srcDirectory != ".":
>>> break
>>> else:
>>> print(srcDirectory, "is not a valid directory")
>>>
>>> # Input and validation of destination directory
>>> while True:
>>> dstDirectory = os.path.normpath(input("Enter directory to store processed files: "))
>>> if os.path.exists(dstDirectory) is True and dstDirectory != ".":
>>> break
>>> else:
>>> print (dstDirectory, "is not a valid directory")
>>>
>>> print ("")
>>>
>>> # Change the working directory to the source directory
>>> os.chdir(srcDirectory)
>>> print ("Working directory is" + " " + os.getcwd())
>>>
>>> # Blank line for better visualization
>>> print ("")
>>>
>>> # Create list of files in source directory
>>> filesList = os.listdir(srcDirectory)
>>>
>>> for file in filesList:
>>> if file.endswith('las'):
>>> fileIn = (srcDirectory + "\\" + file).replace('\\', '/')
>>> fileOut = (dstDirectory + "\\" + file).replace('\\', '/')
>>>
>>> json = """
>>> {
>>> "pipeline": [
>>> {
>>> "type": "readers.las",
>>> "filename": "%s"
>>> }
>>> ]
>>> }"""
>>>
>>> import pdal
>>> import numpy as np
>>> pipeline = pdal.Pipeline(json % fileIn)
>>> count = pipeline.execute()
>>>
>>> arr = pipeline.arrays[0]
>>> print(len(arr))
>>>
>>> lasClass26 = arr[arr['Classification'] == 26]
>>> print(len(lasClass26))
>>>
>>> clamp = u"""{
>>> "pipeline":[
>>> {
>>> "type":"filters.csf"
>>> },
>>> {
>>> "type":"filters.range",
>>> "limits":"Classification[0:30]"
>>> },
>>> "%s"
>>> ]
>>> }""" % (fileOut)
>>>
>>> p = pdal.Pipeline(clamp, [lasClass26])
>>> count = p.execute()
>>> clamped = p.arrays[0]
>>> print(count)
>>>
>>> _______________________________________________
>>> pdal mailing list
>>> pdal at lists.osgeo.org
>>> https://lists.osgeo.org/mailman/listinfo/pdal
>>
>>
>>
>> --
>> Andrew Bell
>> andrew.bell.ia at gmail.com
>>
>
--
Andrew Bell
andrew.bell.ia at gmail.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/pdal/attachments/20200514/718835f8/attachment.html>
More information about the pdal
mailing list