Skip to main content
Solved

Point cloud source ID from distinct time groups

  • May 20, 2026
  • 2 replies
  • 84 views

james_c_452
Enthusiast
Forum|alt.badge.img+10

Hi,

So I would like to try to work out a point source ID for point clouds based on continuous chunks of time. Basically separating out flightlines. 

For example, a point should has 30 points. The first 10 are collected in the first 10 seconds, then there is a gap of 1 minute before capture, and then another 10 are collected, then another minute gap, then the last points. So in this case I would like to determine a unique component value for each of the 3 time related groups.

I think I can do this if I coerce the cloud to points. But that really isn’t efficient for billions of points.

I also won’t know beforehand how many different continuous capture periods there are.

Can anyone think of a way to do this? It’s pretty easy to do in lastools. But in this case I’d like to do it in FME. I don’t know any python which I presume could do it.

I am ideally wanting this to work in version 2022, but I’m open to a newer version if that is the only chance of doing this.

Thanks

Best answer by james_c_452

Thanks ​@antoine ,

The FME version you suggest appears to work. However, my situation is the more complicated option. I want I timestamp of 59 to end up in the same flightline as a timestamp of 61. 

I think I may have worked out way. I first made a copy of the xy components and then replaced them with the timestamp. Then I used the PointCloudDensityCalculator with a spacing of a few seconds (the point cloud should be a diagonal line now). Then I used the RasterCellCoercer to turn cells that contained a timestamp into points. I buffered/dissolved them to get time separate regions. I counted them to get an flightline attribute, and then used a Clipper to get the attribute onto the relevant cloud. I added the flightline attribute as a component, replaced the xy back to what it originally was, and then merged the whole cloud it back together

2 replies

antoine
Enthusiast
Forum|alt.badge.img+7
  • Enthusiast
  • May 22, 2026

Hi,

If it is simple, in pure FME:
In PointCloudExpressionEvaluator compute some kind of unique value per n sec like :
“tosplit” = @floor(@Component(timestamp)/30)*30
Then use PointCloudSplitter with “tosplit” by unique value.
You can also compute statistics on the output to get the gaps.
If you have a none regular time split, you need to somehow cluster points by time proximity first.
I would here use external tool like laspy, pdal etc.. You can call them in the middle of your project with featurereader, systemcaller and featurewriter.


Good luck.


james_c_452
Enthusiast
Forum|alt.badge.img+10
  • Author
  • Enthusiast
  • Best Answer
  • May 25, 2026

Thanks ​@antoine ,

The FME version you suggest appears to work. However, my situation is the more complicated option. I want I timestamp of 59 to end up in the same flightline as a timestamp of 61. 

I think I may have worked out way. I first made a copy of the xy components and then replaced them with the timestamp. Then I used the PointCloudDensityCalculator with a spacing of a few seconds (the point cloud should be a diagonal line now). Then I used the RasterCellCoercer to turn cells that contained a timestamp into points. I buffered/dissolved them to get time separate regions. I counted them to get an flightline attribute, and then used a Clipper to get the attribute onto the relevant cloud. I added the flightline attribute as a component, replaced the xy back to what it originally was, and then merged the whole cloud it back together