Closed
Description
The following pipeline fails in native code during the call to execute. But the same pipeline works when called using pdal tool from command line.
Pipeline:
{
"type": "readers.stac",
"filename": "https://usgs-lidar-stac.s3-us-west-2.amazonaws.com/ept/item_collection.json",
"reader_args": [
{
"type": "readers.ept",
"bounds": "([-71.1356958302804, -71.1354910531836], [42.4274301810906, 42.4277093379612], [0, 30])/EPSG:4326",
"threads": "3"
}
],
"item_ids": ["MA_CentralEastern_1_2021", "MA_CentralEastern_2_2021"],
"properties": {
"pc:type": ["lidar","sonar"],
"pc:encoding": "ept"
},
"asset_names": ["ept.json"]
},
{
"type": "filters.range",
"limits": "Classification[0:15]"
},
{
"type": "writers.text",
"format": "csv",
"order": "X,Y,Z",
"keep_unspecified": "false",
"filename": "output.csv"
} }
The result in running it from Java is the following failure in native code:
Problematic frame:
C [libpdalcpp.16.3.0.dylib+0x2dafde] pdal::connector::Connector::get(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) const+0x1e
Here is the stack call:
C [libpdalcpp.16.3.0.dylib+0x2dafde] pdal::connector::Connector::get(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) const+0x1e
C [libpdalcpp.16.3.0.dylib+0x2db165] pdal::connector::Connector::getJson(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) const+0x2f
C [libpdalcpp.16.3.0.dylib+0x161e76] pdal::EptReader::overlaps()+0x154
C [libpdalcpp.16.3.0.dylib+0x162777] pdal::EptReader::ready(pdal::BasePointTable&)+0x1d9
C [libpdalcpp.16.3.0.dylib+0x291933] pdal::Stage::execute(pdal::BasePointTable&, std::__1::set<std::__1::shared_ptr<pdal::PointView>, pdal::PointViewLess, std::__1::allocator<std::__1::shared_ptr<pdal::PointView> > >&)+0x1c1
C [libpdalcpp.16.3.0.dylib+0x290dae] pdal::Stage::execute(pdal::BasePointTable&)+0x2ac
C [libpdalcpp.16.3.0.dylib+0x26fde4] pdal::PipelineManager::execute(pdal::ExecMode)+0x9c
C [libpdalcpp.16.3.0.dylib+0x26ff31] pdal::PipelineManager::execute()+0xb
C [libpdaljni.2.6.dylib+0x4e22] libpdaljava::PipelineExecutor::execute()+0x12
C [libpdaljni.2.6.dylib+0xafa0] Java_io_pdal_Pipeline_execute+0x40
j io.pdal.Pipeline.execute()V+0
I am using the following libraries:
pda_2.13-2.6.1
pdal-native-2.6.1
pdal-scala_2.13-2.6.1
The Java code intializes the pipeline and ensure that the pipeline .validate() returns true.
The same pipeline works when called from the command line as follows:
pdal pipeline --input inputFile.json
Where inputFile.json contains the pipeline above