Skip to main content
Solved

Generate simple trees from Point Cloud (LIDAR)

  • February 22, 2018
  • 7 replies
  • 420 views

Hello,

I want to create simple mesh trees from Point Cloud (LIDAR) in FME.

 

And the closest thing I came to was with the "PointCloudSurfaceBuilder" transformer.

Can anybody help me with this, please.

 

The file is the way I want the final trees look like (it seems like it is about 8 piece of pentagon polygons for each tree).

And the file is the closest I came in FME.

I attach the FME-Workbench file and the input LAS file (and it looks like this ).

Best regards,

Jonas

Best answer by redgeographics

If you turn the point cloud into individual points (PointCloudCoercer) you can buffer/dissolve them to create an outline that more or less confirms to the tree shape. Using a CoordinateExtractor before the buffering gives you the coordinate values, you can then have the Dissolver create a list of the z-values and use a ListRangeExtractor to get the min and max height out of the tree. For the diameter it's a bit trickier but getting the bounds from the tree shape (minus a bit to account for the buffering) and then get the average of the x and y difference should give you a relatively accurate estimate (unless the tree is awkwardly shaped). From there you could start building your idealised version.

I don't usually work with AutoCAD so I'm not sure either how a block would be used, but it sounds like a viable approach.

View original
Did this help you find an answer to your question?

7 replies

redgeographics
Celebrity
Forum|alt.badge.img+49

Your point cloud is waaaaaay too detailed. You could try thinning it (PointCloudThinner) but I doubt you'd get to the desired result.

One idea I had when I was looking into this a while ago was try and represent a tree by several stacked cylinders. So at x cm vertical intervals lump the points together (buffer them and dissolving the buffers, find all points that intersect the buffer and create a hull for those, determine the diameter of the hull and then place a cylinder with that diameter and thickness centered on the centerpoint. Still clunky but it might just work. I don't think I have a workspace that shows that though.


  • Author
  • February 27, 2018
redgeographics wrote:

Your point cloud is waaaaaay too detailed. You could try thinning it (PointCloudThinner) but I doubt you'd get to the desired result.

One idea I had when I was looking into this a while ago was try and represent a tree by several stacked cylinders. So at x cm vertical intervals lump the points together (buffer them and dissolving the buffers, find all points that intersect the buffer and create a hull for those, determine the diameter of the hull and then place a cylinder with that diameter and thickness centered on the centerpoint. Still clunky but it might just work. I don't think I have a workspace that shows that though.

Hi redgeographics,

 

Okay, thanks for checking this out.

 

Yes, maybe that is working, I dont know.

 

I am sorry but I need every detailed help I can get in this case...

 

How about a AutoCAD blocksymbol that replace the height and width of the trees LAS data? But how do I do that in FME?

 

Thanks in advance!

 

Best regards,

 

Jonas

redgeographics
Celebrity
Forum|alt.badge.img+49
  • Celebrity
  • Best Answer
  • February 27, 2018

If you turn the point cloud into individual points (PointCloudCoercer) you can buffer/dissolve them to create an outline that more or less confirms to the tree shape. Using a CoordinateExtractor before the buffering gives you the coordinate values, you can then have the Dissolver create a list of the z-values and use a ListRangeExtractor to get the min and max height out of the tree. For the diameter it's a bit trickier but getting the bounds from the tree shape (minus a bit to account for the buffering) and then get the average of the x and y difference should give you a relatively accurate estimate (unless the tree is awkwardly shaped). From there you could start building your idealised version.

I don't usually work with AutoCAD so I'm not sure either how a block would be used, but it sounds like a viable approach.


  • Author
  • February 27, 2018
redgeographics wrote:

If you turn the point cloud into individual points (PointCloudCoercer) you can buffer/dissolve them to create an outline that more or less confirms to the tree shape. Using a CoordinateExtractor before the buffering gives you the coordinate values, you can then have the Dissolver create a list of the z-values and use a ListRangeExtractor to get the min and max height out of the tree. For the diameter it's a bit trickier but getting the bounds from the tree shape (minus a bit to account for the buffering) and then get the average of the x and y difference should give you a relatively accurate estimate (unless the tree is awkwardly shaped). From there you could start building your idealised version.

I don't usually work with AutoCAD so I'm not sure either how a block would be used, but it sounds like a viable approach.

Hi again redgeographics,

 

I have tested your suggestion now and it worked great but I cannot figure out the last part that replace the centerpoint with a symbol that I can scale in size (I tried the Pointstyler without success).

 

Is there someone else out there how can help with this?

 

Thanxs alot redgeographics!

 

Best regards,

 

Jonas

  • Author
  • February 28, 2018
redgeographics wrote:

If you turn the point cloud into individual points (PointCloudCoercer) you can buffer/dissolve them to create an outline that more or less confirms to the tree shape. Using a CoordinateExtractor before the buffering gives you the coordinate values, you can then have the Dissolver create a list of the z-values and use a ListRangeExtractor to get the min and max height out of the tree. For the diameter it's a bit trickier but getting the bounds from the tree shape (minus a bit to account for the buffering) and then get the average of the x and y difference should give you a relatively accurate estimate (unless the tree is awkwardly shaped). From there you could start building your idealised version.

I don't usually work with AutoCAD so I'm not sure either how a block would be used, but it sounds like a viable approach.

Hi again,

 

Now I have help with the DWG Symbol solution at https://knowledge.safe.com/questions/64958/replace-point-with-symbol-from-a-dwg.html?

 

So I close this question.

 

Best regards,

 

Jonas

 

 


  • April 12, 2023

Hi this is a similar problem i have - but i want to export powerline lidar points into linear strings of best fit and write a dxf - any ideas

thanks

 


caracadrian
Contributor
Forum|alt.badge.img+23
  • Contributor
  • April 13, 2023
maros wrote:

Hi this is a similar problem i have - but i want to export powerline lidar points into linear strings of best fit and write a dxf - any ideas

thanks

 

You can classify the points belonging to powerlines (lasstools), filter just that class, 3D buffer points, dissolve and extract centerline.


Reply


Cookie policy

We use cookies to enhance and personalize your experience. If you accept you agree to our full cookie policy. Learn more about our cookies.

 
Cookie settings