From ec2907359b1563323274130e22edc0e69248a30e Mon Sep 17 00:00:00 2001 From: Josafat-Mattias Burmeister Date: Sat, 1 Mar 2025 20:44:13 +0100 Subject: [PATCH] fix: DTM generation when some raster cells are empty --- src/pcdPointTreeseg2txt.cpp | 2 +- src/pcdPointXYZRGB2txt.cpp | 1 + src/treeseg.cpp | 25 ++++++++++++++----------- src/txtPointTreeseg2pcd.cpp | 1 + 4 files changed, 17 insertions(+), 12 deletions(-) diff --git a/src/pcdPointTreeseg2txt.cpp b/src/pcdPointTreeseg2txt.cpp index b189e55..8f979cd 100644 --- a/src/pcdPointTreeseg2txt.cpp +++ b/src/pcdPointTreeseg2txt.cpp @@ -1,5 +1,5 @@ #include "treeseg.h" - +#include #include int main (int argc, char **argv) diff --git a/src/pcdPointXYZRGB2txt.cpp b/src/pcdPointXYZRGB2txt.cpp index 9fd1520..f99458f 100644 --- a/src/pcdPointXYZRGB2txt.cpp +++ b/src/pcdPointXYZRGB2txt.cpp @@ -1,4 +1,5 @@ #include +#include int main (int argc, char **argv) { diff --git a/src/treeseg.cpp b/src/treeseg.cpp index a7a0fd3..e666d3e 100644 --- a/src/treeseg.cpp +++ b/src/treeseg.cpp @@ -39,6 +39,7 @@ #include #include #include +#include //File IO @@ -833,17 +834,19 @@ std::vector> getDtmAndSlice(const pcl::PointCloudpoints.begin(),tile->points.end(),sortCloudByZ); - int idx = (percentile / 100) * tile->points.size(); - float ground = tile->points[idx].z; - result.push_back(x); - result.push_back(y); - result.push_back(ground); - dem.push_back(result); - spatial1DFilter(tile,"z",ground+zmin,ground+zmax,tileslice); - *slice += *tileslice; - result.clear(); - tile->clear(); - tileslice->clear(); + if (tile->points.size() > 0) { + int idx = (percentile / 100) * tile->points.size(); + float ground = tile->points[idx].z; + result.push_back(x); + result.push_back(y); + result.push_back(ground); + dem.push_back(result); + spatial1DFilter(tile,"z",ground+zmin,ground+zmax,tileslice); + *slice += *tileslice; + result.clear(); + tile->clear(); + tileslice->clear(); + } } tmpcloud->clear(); } diff --git a/src/txtPointTreeseg2pcd.cpp b/src/txtPointTreeseg2pcd.cpp index cf8b2a0..04abfbe 100644 --- a/src/txtPointTreeseg2pcd.cpp +++ b/src/txtPointTreeseg2pcd.cpp @@ -1,6 +1,7 @@ #include "treeseg.h" #include +#include int main (int argc, char **argv) {