Skip to main content
Solved

How to identify spots where water pipe polylines get above the ground surface and add extra vertices with Z-coordinates to make sure the pipe stays at ~1 meter below the ground surface? I have a LAS of the ground surface and the polylines have Z valu

  • December 7, 2022
  • 2 replies
  • 18 views

Forum|alt.badge.img

I have polylines that have Z coordinates on each vertex. The polylines represent water pipes and are below the ground surface ~1 meter. I have a LAS of the ground surface which can be converted to a raster to create a surface. The situation can occur where the polylines get above the ground surface in between the vertices due to variation in terrain and lack of vertices with X, Y, Z values in the polylines. How can I identify those locations and add an extra vertex so the polylines will stay below the ground surface?

Best answer by nielsgerrits

One way to do this:

Generate unique ids for lines. Counter or uuidgenerator.

Densify the lines to get more points. Densifier.

Chop the lines to points. Chopper.

Generate point order per line. Counter, group by line id.

Extract the z values to an attribute. Coordinateextractor.

Compare the points to the surface. Pointonrasteroverlayer or surfacedraper.

Extract the z values to another attribute. Cooordinateextractor.

Check original z vs surface z. Tester.

Correct point height when needed. 3DForcer or Vertexcreator.

Sort the points to get the original order. Sorter, line id, point number.

Rebuild lines from points. Linebuilder, group by line id.

 

 

This post is closed to further activity.
It may be an old question, an answered question, an implemented idea, or a notification-only post.
Please check post dates before relying on any information in a question or answer.
For follow-up or related questions, please post a new question or idea.
If there is a genuine update to be made, please contact us and request that the post is reopened.

2 replies

nielsgerrits
VIP
Forum|alt.badge.img+60
  • 2938 replies
  • Best Answer
  • December 8, 2022

One way to do this:

Generate unique ids for lines. Counter or uuidgenerator.

Densify the lines to get more points. Densifier.

Chop the lines to points. Chopper.

Generate point order per line. Counter, group by line id.

Extract the z values to an attribute. Coordinateextractor.

Compare the points to the surface. Pointonrasteroverlayer or surfacedraper.

Extract the z values to another attribute. Cooordinateextractor.

Check original z vs surface z. Tester.

Correct point height when needed. 3DForcer or Vertexcreator.

Sort the points to get the original order. Sorter, line id, point number.

Rebuild lines from points. Linebuilder, group by line id.

 

 


Forum|alt.badge.img
  • Author
  • 17 replies
  • December 14, 2022

Thank you, I will look into this