Search code examples
pythonjsonpdal

How to insert variable value into JSON string for use with PDAL


I'm trying to use the Python extension for PDAL to read in a laz file.

To do so, I'm using the simple pipeline structure as exampled here: https://gis.stackexchange.com/questions/303334/accessing-raw-data-from-laz-file-in-python-with-open-source-software. It would be useful for me, however, to insert the value contained in a variable for the "filename:" field. To do so, I've tried the following, where fullFileName is a str variable containing the name (full path) of the file, but I am getting an error that no such file exists. I am assuming my JSON syntax is slightly off or something; can anyone help?

    pipeline="""{
    "pipeline": [
            {
                    "type": "readers.las",
                    "filename": "{fullFileName}"
                    }
            ]
    }"""

Solution

  • You can follow this code:

    import json
    import pdal
    
    file = "D:/Lidar data/input.laz"
    
    pipeline={
      "pipeline": [
        {
            "type": "readers.las",
            "filename": file
        },
        {
            "type": "filters.sort",
            "dimension": "Z"
        }
      ]
    }
    
    r = pdal.Pipeline(json.dumps(pipeline))
    r.validate()
    points = r.execute()
    print(points)