See https://pdal.io/ for more info
pdal / wrench Goto Github PK
View Code? Open in Web Editor NEWPoint cloud processing made easy!
License: GNU General Public License v3.0
Point cloud processing made easy!
License: GNU General Public License v3.0
See https://pdal.io/ for more info
Hi,
I'm trying to create a VPC from a list of links targeting online COPC point cloud data.
Point clouds are from the French LiDAR-HD open-data project and links to the data are provided by the IGN.
So I have a list of links just like the sample below in a file 'list.txt' :
https://storage.sbg.cloud.ovh.net/v1/AUTH_63234f509d6048bca3c9fd7928720ca1/ppk-lidar/ON/LHD_FXX_0870_6426_PTS_C_LAMB93_IGN69.copc.laz
https://storage.sbg.cloud.ovh.net/v1/AUTH_63234f509d6048bca3c9fd7928720ca1/ppk-lidar/ON/LHD_FXX_0873_6428_PTS_C_LAMB93_IGN69.copc.laz
When running following command to build the VPC :
pdal_wrench build_vpc --output=my_vpc.vpc --input-file-list=list.txt
I get the following error line :
Curl failure: SSL peer certificate or SSH remote key was not OK
Is there any way to bypass this error ?
Thanks!
Hi, I'm building a VPC with the most recent commit of PDAL wrench (43caeb9):
pdal_wrench build_vpc --output=merged.vpc laz_files/*.laz
The output VPC is fine, but I also got the following warning several times (I guess it's printed once for each *.laz
file):
Warning: DayOfYear(2024) is out of range. Defualting to 1.
The *.laz
files have been created today, so "2024" makes sense, while on the other hand the year should not be the argument of a "DayOfYear" function. Also note the typo "Defualting".
Thanks!
Hi,
Thanks for this project. Are there any plans to add the original pdal tile options (https://pdal.io/en/latest/apps/tile.html) to pdal_wrench tile command (origin_x, origin_y, buffer, ...). Would be interested in generating tiles with buffer using VPC and multithreading.
Thanks in advance
Right now pdal_wrench expects that the input VPC is a local file. It would be good to support also remote VPCs (hosted on a HTTP server) where we would download the VPCs first and then read it.
colab version with input files support like *.obj *.ply >>> *.glb << anytime soon !π₯°π₯³π₯³π₯³
like this >>> https://twitter.com/schl26/status/1635730026673971202
ππ»ππ»ππ»ππ»ππ»
Downstream bug: qgis/QGIS#53241
The actual problem: Boundary::finalize()
expects there is readers.las
https://github.com/PDAL/wrench/blob/main/src/boundary.cpp#L151
It may be useful to have a way to dump pipelines that are being run - e.g. for debugging
See pdal::PipelineWriter::writePipeline()
https://github.com/PDAL/wrench/blob/main/src/vpc.cpp#L371-L372
In the creation of a VPC, which is at its core a STAC ItemCollection, Wrench fails to write the required key datetime
if the date cannot be parsed
I think either an exception should be thrown, or a default datetime should be written to the VPC.
STAC Item Schema for reference: https://schemas.stacspec.org/v1.0.0/item-spec/json-schema/item.json
datetime
is defined as
likely the aquisition time
(https://github.com/radiantearth/stac-api-spec/blob/main/stac-spec/item-spec/item-spec.md#datetime)
which is also assumed for vpc creation
// Acquisition time: readers.las and readers.copc provide "creation_year" and "creation_doy"
(https://github.com/PDAL/wrench/blob/main/src/vpc.cpp#L260)
However I am unsure if this is what "creation_year" and "creation_doy" are defined as (see ASPRSorg/LAS#148)
there it simply says
(date) this file was created.
And from my experience this is what providers populate it with, the date at which the file was created after inital processing, so usually this is days to month later than the aquisition date.
In my understanding the definition is unclear and the implementation here is correct, however I am not sure.
Any thoughts on this?
Hello,
I would like to report an issue:
I have a bunch of .laz files which I would like to convert into a raster.
To begin I create a vpc, which works fine:
pdal_wrench build_vpc --output=myterrain.vpc --input-file-list=my-laz-tiles.txt
Then I want to convert the vpc into a raster tif using the raster_tin method:
pdal_wrench to_raster_tin --resolution=0.2 --input=myterrain.vpc --output=myterrain.tif
If I have only a few .laz files in my-laz-tiles.txt, everything works well.
However, if I have more files (let's say 100+), the process starts and begins to create the temporary directory, but after a while it crashes
0...Killed
I tried with different files on several computers, it always crash after a while if there are too many files in the vpc. Sometimes it goes up to 100 but then it stucks creating the final tif (probably because it don't use bigtiff and is over the 4Gb limit of the regular tiffs).
Running QGIS 3.32 on Manjaro Linux, 24 threads available, 128Gb ram.
This usually works great, but today I have been working with a rather large dataset (209 laz files (converted to copc.laz, no problems). Toal file size 9.6 Gb.
When trying to point to the files on disk (which has worked well in all other projects so far), creating stats and boundaries, and exporting to vpc, I get an error saying there is someting wrong with LAYERS (capitalized in error message).
This is repeatable. also tried without computing stats etc, same error.
(sorry, in Norwegian...)
EDIT: Tried the above with a small subsection (28 files), same error message.
But: when trying the same with all copc.laz files loaded in QGIS, i.e. all 9.6 Gb, and creating the vpc with stats, boundaries as well as overview cloud, all works smoothly.
This is possible to view in detail in 2D, crashes in 3D view (expected).
Resulting output from the info-tool on the VPC:
Inndataparametre:
{ 'INPUT' : '/home/.../Skjold_Eggja_Vats/virtuell_skjold.vpc', 'OUTPUT' : 'TEMPORARY_OUTPUT' }PDAL wrench-kommando:/usr/lib/qgis/pdal_wrench info --input=/home/.../Skjold_Eggja_Vats/virtuell_skjold.vpc
VPC 209 files
count 1985328417
extent 305600 6.5946e+06 -408.06
318400 6.60703e+06 685.11
crs ETRS89 / UTM zone 32N + NN2000 (EPSG:25832+5941)
units metre
Hi,
I'm trying to create a vpc file for a large number of copc files (about 9000 tiles). I first created a list of files. Here are some lines of this file:
/gpfs/fs5/nrcan/nrcan_geobase/work/transfer/work/pro/validationlidar/AB/Grande_Prairie_County_2022-08ce/POINTCLOUD_PREP/copc/661319NE.copc.laz
/gpfs/fs5/nrcan/nrcan_geobase/work/transfer/work/pro/validationlidar/AB/Grande_Prairie_County_2022-08ce/POINTCLOUD_PREP/copc/661319NW.copc.laz
/gpfs/fs5/nrcan/nrcan_geobase/work/transfer/work/pro/validationlidar/AB/Grande_Prairie_County_2022-08ce/POINTCLOUD_PREP/copc/661319SE.copc.laz
/gpfs/fs5/nrcan/nrcan_geobase/work/transfer/work/pro/validationlidar/AB/Grande_Prairie_County_2022-08ce/POINTCLOUD_PREP/copc/661319SW.copc.laz
/gpfs/fs5/nrcan/nrcan_geobase/work/transfer/work/pro/validationlidar/AB/Grande_Prairie_County_2022-08ce/POINTCLOUD_PREP/copc/661320NE.copc.laz
/gpfs/fs5/nrcan/nrcan_geobase/work/transfer/work/pro/validationlidar/AB/Grande_Prairie_County_2022-08ce/POINTCLOUD_PREP/copc/661320NW.copc.laz
/gpfs/fs5/nrcan/nrcan_geobase/work/transfer/work/pro/validationlidar/AB/Grande_Prairie_County_2022-08ce/POINTCLOUD_PREP/copc/661320SW.copc.laz
I then ran the following command:
/gpfs/fs5/nrcan/nrcan_geobase/work/transfer/work/pro/validationlidar/AB/Grande_Prairie_County_2022-08ce$ /space/partner/nrcan/geobase/work/opt/miniconda-elevation/envs/qgis332/lib/qgis/**pdal_wrench build_vpc** --output=/gpfs/fs5/nrcan/nrcan_geobase/work/transfer/work/pro/validationlidar/AB/Grande_Prairie_County_2022-08ce/Project_PointCloud.vpc --threads=128 --input-file-list=/gpfs/fs5/nrcan/nrcan_geobase/work/transfer/work/pro/validationlidar/AB/Grande_Prairie_County_2022-08ce/liste_copc.txt
**No input files!**
It does work if I pass a few files on the command line but since I would like to have a single vpc for the entire project, I would prefer to pass a text file.
These two commands crash (each in a different way):
pdal_wrench density -i ign-chambery.vpc -o /tmp/ign-chambery-density.tif --resolution=3
pdal_wrench to_raster -i ign-chambery.vpc -o /tmp/ign-chambery-raster.tif --resolution=3
Here's the input file: ign-chambery.vpc
I was not sure whether to post this in the QGIS issue tracker or here. But since pdal_wrench is doing the work in the background, it might make more sense here:
As of now, the Export to Raster
algorithm in QGIS only supports IDW as an output, whereas writers.gdal has several more options. For generating DTMs IDW is a great default, but for DSMs I would rather opt for the maximum. So it would be great if this could be incorporated in the to_raster
algorithm as well as the QGIS algorithm.
I had a quick look at the source code
Line 150 in f8d5dae
Hi,
I really would like to try this but I got the following error when I ran 'make' after 'cmake ..'. Could you please advise? I install pdal 2.7.1 and I install on AWS EC2 linux2023. Thank you!
[ 86%] Building CXX object CMakeFiles/pdal_wrench.dir/src/tile/TileGrid.cpp.o
[ 91%] Building CXX object CMakeFiles/pdal_wrench.dir/src/tile/ThreadPool.cpp.o
[ 95%] Building CXX object CMakeFiles/pdal_wrench.dir/src/tile/Writer.cpp.o
[100%] Linking CXX executable pdal_wrench
/usr/bin/ld: /workspaces/plhtn_python/.venv/lib/libtiledb.so.2.22: undefined reference to std::__exception_ptr::exception_ptr::_M_release()@CXXABI_1.3.13' /usr/bin/ld: /workspaces/plhtn_python/.venv/lib/libpdalcpp.so.17.0.0: undefined reference to
std::condition_variable::wait(std::unique_lockstd::mutex&)@GLIBCXX_3.4.30'
/usr/bin/ld: /workspaces/plhtn_python/.venv/lib/libazure-storage-blobs.so: undefined reference to std::__atomic_futex_unsigned_base::_M_futex_wait_until_steady(unsigned int*, unsigned int, bool, std::chrono::duration<long, std::ratio<1l, 1l> >, std::chrono::duration<long, std::ratio<1l, 1000000000l> >)@GLIBCXX_3.4.29' /usr/bin/ld: /workspaces/plhtn_python/.venv/lib/libpdalcpp.so.17.0.0: undefined reference to
std::__throw_bad_array_new_length()@GLIBCXX_3.4.29'
/usr/bin/ld: /workspaces/plhtn_python/.venv/lib/libtiledb.so.2.22: undefined reference to std::__cxx11::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >::str() const &@GLIBCXX_3.4.29' /usr/bin/ld: /workspaces/plhtn_python/.venv/lib/libtiledb.so.2.22: undefined reference to
std::__exception_ptr::exception_ptr::_M_addref()@CXXABI_1.3.13'
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/pdal_wrench.dir/build.make:435: pdal_wrench] Error 1
make[1]: *** [CMakeFiles/Makefile2:83: CMakeFiles/pdal_wrench.dir/all] Error 2
make: *** [Makefile:136: all] Error 2
Two crashes while specifying extent. And one example of (almost flawless) execution.
Runnin on Manjaro Linux
QGIS-versjon: 3.32.0-Lima
Qt-versjon: 5.15.10
Python-versjon: 3.11.3
GDAL-versjon: 3.7.0
GEOS-versjon: 3.11.2-CAPI-1.17.2
PROJ-versjon: Rel. 9.2.1, June 1st, 2023
PDAL-versjon: 2.5.5 (git-version: Release)
PDAL wrench-kommando:/usr/lib/qgis/pdal_wrench to_raster --input=/home/.../2023_UTSIRA/copc_merged.laz --output=/home/.../2023_UTSIRA/1M_DEM.tif --attribute=Z --resolution=1 --tile-size=1000 "--filter=Classification == 2" "--bounds=([262722, 268085], [6.57824e+06, 6.58336e+06])" --threads=24
pdal_wrench: /usr/src/debug/pdal/PDAL-2.5.5-src/pdal/util/Bounds.cpp:93: pdal::BOX2D& pdal::BOX2D::grow(double): Assertion `valid()' failed.
Prosessen ble plutselig avsluttet
Execution failed after 0.16 sekunder
PDAL wrench-kommando:/usr/lib/qgis/pdal_wrench to_raster --input=/home/.../2023_UTSIRA/copc_merged.laz --output=/home/.../2023_UTSIRA/1M_DEM.tif --attribute=Z --resolution=1 --tile-size=1000 "--filter=Classification == 2" "--bounds=([262192, 268979], [6.57818e+06, 6.58342e+06])" --threads=24
pdal_wrench: /usr/src/debug/pdal/PDAL-2.5.5-src/pdal/util/Bounds.cpp:93: pdal::BOX2D& pdal::BOX2D::grow(double): Assertion `valid()' failed.
Prosessen ble plutselig avsluttet
Execution failed after 0.15 sekunder
Finally, the same dataset but this time without specifying extent:
Inndataparametre:
{ 'ATTRIBUTE' : 'Z', 'FILTER_EXPRESSION' : 'Classification = 2 ', 'FILTER_EXTENT' : None, 'INPUT' : '/home/.../2023_UTSIRA/copc_merged.laz', 'ORIGIN_X' : None, 'ORIGIN_Y' : None, 'OUTPUT' : '/home/.../2023_UTSIRA/1M_DEM.tif', 'RESOLUTION' : 1, 'TILE_SIZE' : 1000 }
PDAL wrench-kommando:/usr/lib/qgis/pdal_wrench to_raster --input=/home/.../2023_UTSIRA/copc_merged.laz --output=/home/.../2023_UTSIRA/1M_DEM.tif --attribute=Z --resolution=1 --tile-size=1000 "--filter=Classification == 2" --threads=24
(writers.gdal Error) GDAL failure (1) libpodofo.so.0.9.8: cannot open shared object file: No such file or directory
(writers.gdal Error) GDAL failure (1) libpodofo.so.0.9.8: cannot open shared object file: No such file or directory
(writers.gdal Error) GDAL failure (1) libpodofo.so.0.9.8: cannot open shared object file: No such file or directory
(writers.gdal Error) GDAL failure (1) libpodofo.so.0.9.8: cannot open shared object file: No such file or directory
0....10....20....30....40....50....60....70....80....90....100 - done.
Prosessen er fullfΓΈrt
Execution completed in 84.02 sekunder (1 minutt 24 sekunder)
Resultat:
{'OUTPUT': '/home/.../2023_UTSIRA/1M_DEM.tif'}
This - despite the GDAL errors - actually produces a DEM rasterfile in the correct location.
All three were from the same session. Input and output set for first attempt, after that the parameters were changed in the same session.
I'm trying to get pdal_wrench to work on ubuntu 22.04 but am stuck at the following error:
pdal_wrench: symbol lookup error: pdal_wrench: undefined symbol: _ZN4pdal9FileUtils10fromNativeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE
The full output is appended
Thanks for taking a look at this.
Michael
(pdal) /time_trials/wrench2$ cmake ./time_trials/wrench2$ make
-- The CXX compiler identification is GNU 11.4.0
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found GDAL: /home/lefsky/miniconda3/envs/pdal/lib/libgdal.so (found version "3.4.1")
-- Looking for C++ include pthread.h
-- Looking for C++ include pthread.h - found
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success
-- Found Threads: TRUE
-- Pedantic compiler settings enabled
-- Configuring done
-- Generating done
-- Build files have been written to: /home/lefsky/time_trials/wrench2
(pdal) lefsky@lefsky-X10DRi:
[ 4%] Building CXX object CMakeFiles/pdal_wrench.dir/src/main.cpp.o
[ 8%] Building CXX object CMakeFiles/pdal_wrench.dir/src/alg.cpp.o
[ 13%] Building CXX object CMakeFiles/pdal_wrench.dir/src/boundary.cpp.o
[ 17%] Building CXX object CMakeFiles/pdal_wrench.dir/src/clip.cpp.o
[ 21%] Building CXX object CMakeFiles/pdal_wrench.dir/src/density.cpp.o
[ 26%] Building CXX object CMakeFiles/pdal_wrench.dir/src/info.cpp.o
[ 30%] Building CXX object CMakeFiles/pdal_wrench.dir/src/merge.cpp.o
[ 34%] Building CXX object CMakeFiles/pdal_wrench.dir/src/thin.cpp.o
[ 39%] Building CXX object CMakeFiles/pdal_wrench.dir/src/to_raster.cpp.o
[ 43%] Building CXX object CMakeFiles/pdal_wrench.dir/src/to_raster_tin.cpp.o
[ 47%] Building CXX object CMakeFiles/pdal_wrench.dir/src/to_vector.cpp.o
[ 52%] Building CXX object CMakeFiles/pdal_wrench.dir/src/translate.cpp.o
[ 56%] Building CXX object CMakeFiles/pdal_wrench.dir/src/utils.cpp.o
[ 60%] Building CXX object CMakeFiles/pdal_wrench.dir/src/vpc.cpp.o
[ 65%] Building CXX object CMakeFiles/pdal_wrench.dir/src/tile/tile.cpp.o
[ 69%] Building CXX object CMakeFiles/pdal_wrench.dir/src/tile/BufferCache.cpp.o
[ 73%] Building CXX object CMakeFiles/pdal_wrench.dir/src/tile/Cell.cpp.o
[ 78%] Building CXX object CMakeFiles/pdal_wrench.dir/src/tile/FileProcessor.cpp.o
[ 82%] Building CXX object CMakeFiles/pdal_wrench.dir/src/tile/Las.cpp.o
[ 86%] Building CXX object CMakeFiles/pdal_wrench.dir/src/tile/TileGrid.cpp.o
[ 91%] Building CXX object CMakeFiles/pdal_wrench.dir/src/tile/ThreadPool.cpp.o
[ 95%] Building CXX object CMakeFiles/pdal_wrench.dir/src/tile/Writer.cpp.o
[100%] Linking CXX executable pdal_wrench
[100%] Built target pdal_wrench
(pdal) lefsky@lefsky-X10DRi:~/time_trials/wrench2$ pdal_wrench
pdal_wrench: symbol lookup error: pdal_wrench: undefined symbol: _ZN4pdal9FileUtils10fromNativeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE
Are you guys at the point of making proper releases? To be eligible for inclusion in Conda Forge, the software must have actual releases. I would be happy to manage the Conda Forge feedstock of PDAL wrench.
When I build a VPC, I get the boundaries display, but at any zoom level the points are never displayed.
On the other hand, creating an overview works and the points in the overview are displayed.
All treatments and renderings work on individual point clouds.
The data used corresponds to the LIDARHD_1-0_LAZ_GR1-0452_6227-2021.7z tile.
geoservices.ign.fr/lidarhd
Uncompressed with 7z, we obtain 4 point clouds in laz format
Semis_2021_0452_6226_LA93_IGN69.laz
Semis_2021_0452_6227_LA93_IGN69.laz
Semis_2021_0453_6226_LA93_IGN69.laz
Semis_2021_0453_6227_LA93_IGN69.laz
Point clouds have no src declared
I've tried:
change laz format to las
the problem is the same
Assigning a projection (EPSG:2154)
The problem is the same
I've tried a VPC as a temporary file and as a permanent file
The problem is the same
QGis version 3.32
Windows 11 Pro
A declarative, efficient, and flexible JavaScript library for building user interfaces.
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. πππ
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google β€οΈ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.