Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
Howard Butler
@hobu
yeah. I usually wait for Connor to do it
Guilhem Villemin
@gui2dev
one does not simply update arbiter
Guilhem Villemin
@gui2dev
I managed to merge the files but I'm not sure how to test the arbiter in pdal.
antoine
@antoinebio
image.png
Hi all, I want to read and do further process on a E57 file with PDAL... but something wierd happens when I read the file , error 13 is returned... I though it was a corrupted file but that e57 file is however well read by CloudCompare
what does that " flags = 32768 " stand for ?
Andrew Bell
@abellgithub
@antoinebio : No idea. If you want to open an issue and provide your input, I can look. Make sure to note the PDAL version you're using.
antoine
@antoinebio
@abellgithub i think I got it. Point clouds stored in spherical format are not supported....
I think it could be nice to explicitly return that kind of error in the console as long as PDAL doesn't support structured Pointcloud in E57
Alex Knoll
@arknoll
I am trying to figure out how to reproject lidar data with pdal both in the horizontal and vertical. I'm having no issue with horizontal, but vertical is giving me issues. Ellipsoid (WGS84) to orthometric height. Has anyone gotten this to work?
LiDAR data is in EPSG: 32610 and vertical is WGS84
I want to project into EPSG:2227+6360
Alex Knoll
@arknoll

I've tried allowing PDAL to read the projection information from the inputted laz file and then:
{
"type": "filters.reprojection",
"out_srs": "EPSG:2227+6360"
}

But, my heights are off by about 1,000 feet as compared to using NOAA's Vertical Datum Transformation tool.

I have also tried to specify "in_srs": "EPSG:32610" and not specifying the vertical
I have not found a way to specify the WGS84 ellipsoid as the vertical like this:
"in_srs": "EPSG:32610+????"
I'm sure it is something pretty simple...
GeorgeR
@GeorgeR
hey guys, late-ish last year i attempted to update PDAL on vcpkg from 1.7 to 2.2, and it's been mostly ok but i've run in to some cmake issues that are simply out of my skillset - i was wondering if anyone could help
Here's the PR:
microsoft/vcpkg#14055
The primary issue is when I try to build it as static, I get this:
CMake Error: install(EXPORT "PDALTargets" ...) includes target "pdalcpp" which requires target "pdal_arbiter" that is not in any export set.
CMake Error: install(EXPORT "PDALTargets" ...) includes target "pdalcpp" which requires target "pdal_kazhdan" that is not in any export set.
Andrew Bell
@abellgithub
@GeorgeR : I don't understand why you'd get this. Both of those libraries are statically linked to PDAL and are listed as private dependencies, though I have no idea what vcpkg is or what it's doing. This is more of a cmake issue than a PDAL issue.
@arknoll : You need to be more specific about your problem. Are you getting errors, or are the results not what you expect? If you're getting errors, you need to provide them.
GeorgeR
@GeorgeR
anyone here try to compile 2.2 in msvc v142 and get a few C2678 errors (called from insertion sort)?
v141 is fine
2>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.28.29333\include\algorithm(7419,1): error C2678: binary '=': no operator found which takes a left-hand operand of type 'const pdal::PointViewIter::reference' (or there is no acceptable conversion) (compiling source file Q:\_dev\PDAL\src\filters\SortFilter.cpp)
2>Q:\_dev\PDAL\src\pdal/PointRef.hpp(68,15): message : could be 'pdal::PointRef &pdal::PointRef::operator =(const pdal::PointRef &)' (compiling source file Q:\_dev\PDAL\src\filters\SortFilter.cpp)
2>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.28.29333\include\algorithm(7419,1): message : while trying to match the argument list '(const pdal::PointViewIter::reference, pdal::PointRef)' (compiling source file Q:\_dev\PDAL\src\filters\SortFilter.cpp)
2>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.28.29333\include\algorithm(7981): message : see reference to function template instantiation '_BidIt std::_Insertion_sort_unchecked<_BidIt,_Fn>(const _BidIt,const _BidIt,_Pr)' being compiled
2>        with
2>        [
2>            _BidIt=pdal::PointViewIter,
2>            _Fn=pdal::SortFilter::filter::<lambda_0bf86f63a908ff4cfdf6a4df2084284f>,
2>            _Pr=pdal::SortFilter::filter::<lambda_0bf86f63a908ff4cfdf6a4df2084284f>
2>        ] (compiling source file Q:\_dev\PDAL\src\filters\SortFilter.cpp)
2>Q:\_dev\PDAL\src\filters\SortFilter.cpp(74): message : see reference to function template instantiation 'void std::stable_sort<pdal::PointViewIter,pdal::SortFilter::filter::<lambda_0bf86f63a908ff4cfdf6a4df2084284f>>(const _BidIt,const _BidIt,_Pr)' being compiled
2>        with
2>        [
2>            _BidIt=pdal::PointViewIter,
2>            _Pr=pdal::SortFilter::filter::<lambda_0bf86f63a908ff4cfdf6a4df2084284f>
2>        ]
2>PointView.cpp
2>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.28.29333\include\algorithm(7419,1): error C2678: binary '=': no operator found which takes a left-hand operand of type 'const pdal::PointViewIter::reference' (or there is no acceptable conversion) (compiling source file Q:\_dev\PDAL\src\filters\SkewnessBalancingFilter.cpp)
2>Q:\_dev\PDAL\src\pdal/PointRef.hpp(68,15): message : could be 'pdal::PointRef &pdal::PointRef::operator =(const pdal::PointRef &)' (compiling source file Q:\_dev\PDAL\src\filters\SkewnessBalancingFilter.cpp)
2>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.28.29333\include\algorithm(7419,1): message : while trying to match the argument list '(const pdal::PointViewIter::reference, pdal::PointRef)' (compiling source file Q:\_dev\PDAL\src\filters\SkewnessBalancingFilter.cpp)
2>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.28.29333\include\algorithm(7541): message : see reference to function template instantiation '_BidIt std::_Insertion_sort_unchecked<_RanIt,_Pr>(const _BidIt,const _BidIt,_Pr)' being compiled
2>        with
2>        [
2>            _BidIt=pdal::PointViewIter,
2>            _RanIt=pdal::PointViewIter,
2>            _Pr=pdal::SkewnessBalancingFilter::processGround::<lambda_81608c5aef01fe2a6312a5cdd5a81a5f>
2>        ] (compiling source file Q:\_dev\PDAL\src\filters\SkewnessBalancingFilter.cpp)
GeorgeR
@GeorgeR
to answer my own question: PDAL/PDAL@0f319a5
Preston Hartzell
@pjhartzell
I'm experimenting with adding a filter stage to PDAL for converting GPS time between the different standards. I've successfully built this as a plugin using the examples on pdal.io as a guide. I also created tests using Google Test. I'm now looking at adding the new filter as a static stage, so I forked PDAL, added the cpp and hpp files to the filters directory, and it builds fine. I can use my new stage in a pipeline. I'd like to add my tests now. But adding a cpp file into the test/unit/filters directory isn't cutting it. My test file isn't getting built. What am I missing? Here's my includes and first test:
#include <pdal/pdal_test_main.hpp>

#include <pdal/Options.hpp>
#include <io/BufferReader.hpp>
#include <filters/GpsTimeConvert.hpp>

namespace pdal
{

void checkTime(PointViewPtr view, int index, double expected)
{
    double actual = view->getFieldAs<double>(Dimension::Id::GpsTime, index);
    EXPECT_DOUBLE_EQ(expected, actual);
}

TEST(ws2gtTest, HandlesWrappedWeekSeconds)
{
    using namespace Dimension;

    PointTable table;
    table.layout()->registerDims({Id::GpsTime});

    PointViewPtr inView(new PointView(table));
    inView->setField(Id::GpsTime, 0, 604799.5);
    inView->setField(Id::GpsTime, 1, 0.5);

    BufferReader reader;
    reader.addView(inView);

    Options options;
    options.add("conversion", "ws2gt");
    options.add("start_date", "2020-12-12");
    options.add("wrapped", "True");

    GpsTimeConvert filter;
    filter.setOptions(options);
    filter.setInput(reader);
    filter.prepare(table);

    PointViewSet viewSet = filter.execute(table);
    PointViewPtr outView = *viewSet.begin();

    checkTime(outView, 0, 1291852799.5);
    checkTime(outView, 1, 1291852800.5);
}
Andrew Bell
@abellgithub
Did you add your test to the appropriate CMakeLists.txt file?
Preston Hartzell
@pjhartzell
Nope. It's sitting right there. Sheesh. Thanks.
Preston Hartzell
@pjhartzell
Yay!
        Start  71: pdal_filters_gpstimeconvert_test
 71/117 Test  #71: pdal_filters_gpstimeconvert_test .......   Passed    0.03 sec
katze0809
@katze0809

Hi everyone, I'm new to PDAL.
I'm trying to generate multiple DSM files from 20 LAZ files, so I followed the tutorial on Batch processing (using on Powershell command). My command is like this:
Get-ChildItem .\LAZ\*.laz | foreach {pdal pipeline .\jardim.json --readers.las.filename=.LAZ/$($_.BaseName).laz --writers.gdal.filename=./DSM/$($_.BaseName).tif}

json file:

{
    "pipeline": [
        {
            "type":"readers.las"
        },
        {
            "gdaldriver":"GTiff",
            "output_type":"max",
            "resolution" :"0.5",
            "type": "writers.gdal"
        }
    ]
}

However, I got this error Unable to open stream for '.LAZ/MDS_color_3314-332.laz' with error 'No error' . What did I do wrong?

Andrew Bell
@abellgithub
The file can't be opened. Did you verify that the name is correct? I've seen the 'No error' thing before but I don't know why that's showing (that's the error from the O/S). I may look into it next week, but the bottom line is that the file couldn't be found or bad permissions or something like that.
losbaltica
@losbaltica

It is the continuation of PDAL/CAPI#14 originally raised against CAPI. They suggest contacting directly to PDAL team as it might be .dll bug.
I am currently writing a small C# program to upload las to Postgres database using PDAL writers.pgpointcloud.
My JSON pipeline:

{
  "pipeline": [
    {
      "type": "readers.las",
      "filename": "sample.laz",
      "extra_dims": "HeightAboveGround=float32"
    },
    {
      "type": "filters.range",
      "limits": "Classification[5:5], Classification[10:10], Classification[14:14], Classification[17:17]"
    },
    {
      "type": "filters.chipper",
      "capacity": 600
    },
    {
      "type": "writers.pgpointcloud",
      "connection": "host='localhost' dbname='test' user='postgres' password='123456' port='5432' ",
      "schema": "test",
      "table": "sample",
      "compression": "dimensional",
      "output_dims": "X, Y, Z, Classification, GpsTime, HeightAboveGround"
    }
  ]
}

When executing Pipeline through EXE I am getting a different number of dimensions to compare to executing pipeline from CAPI (direct .dll call).
image

Other pipelines which I was testing was working fine. Is just something with Postgres import. Not sure if the issue is with CAPI or maybe is deeper in PDAL.dll's. However, when I run pdal.exe from the same folder with pdal.dlls, with the same pipeline, dimensions seem to not be duplicated. The other interesting behaviour I noticed is that when I query for a single dimension in PG, I am getting a single correct result. A number of points are correct too. Maybe there is some metadata underneath which gets corrupted when calling pipeline directly from CAPI or rather dll.

SELECT pc_get(PC_Explode(pa), 'HeightAboveGround') pt
FROM test.sample LIMIT 1;

image

Does anyone know the reason why the dimensions get duplicated or observe similar behave?

Christopher Nuth
@chrisnuth

Hey, I have a question about the CSFilter. I am working on a Windows 10 machine, and pdal (2.2.0) pdal-python through conda. When i run CSF for ground classification, it consumes all the memory (32G), and spits out out a memory allocation error.

I tried to downgrade to pdal=2.1, which eventually worked without using very much memory at all, but took a long time (>10min) for the 7MB file....

I see there has been some maintenance done on this filter (PDAL/PDAL#3250 and a few posts in September on this forum). Is this update pushed to master and further to conda-forge? Just wanted to double check before I consider trying to compile [version 2.2-maintence] myself. Thanks in advance!

Andrew Bell
@abellgithub
@chrisnuth That change is in master and 2.2-maintenance. Apparently, the conda release is not up to date with 2.2-maintenance.
Christopher Nuth
@chrisnuth
@abellgithub Thanks for your fast response... I just manually compiled from master and will hopefully test soon whether that bug was the reason for the slow performance.... But should the conda-forge release be the same as master?
Adam Steer
@adamsteer
@chrisnuth can confirm that a build from current master will not have CSF performance woes ;). I just assumed it will get to conda-forge with a new point release...
Guilhem Villemin
@gui2dev
Hi everyone,
I was just wondering if there could be some caching behaviour for the arbiter
Especially for ept reader
Andrew Bell
@abellgithub
@gui2dev : What do you mean, exactly?
Guilhem Villemin
@gui2dev
To use some cache folder to temporary store files so they are not downloaded again.
Andrew Bell
@abellgithub
Until when?
Like a permanent local cache?
Guilhem Villemin
@gui2dev
Something like that
As a browser would do, but the scope of the cache could also be different
Andrew Bell
@abellgithub
I don't think it belongs in arbiter, but if you want to do something like this, we can have a discussion on how to go about it.
Guilhem Villemin
@gui2dev
I was looking for such mechanism in curl but there is none
But yeah, that also could be implemented somewhere else
Guilhem Villemin
@gui2dev
What would you suggest @abellgithub ?
Andrew Bell
@abellgithub

There's a class in io/private/ept called Connector. I think I'd modify that a bit. It would check the cache first before it fetched anything.

getLocalHandle() can go away - it's just used to call localPath().

Guilhem Villemin
@gui2dev
Ok, I'll look into that
It sounds great