Question

Offset a line with variable roll values

  • 16 December 2022
  • 6 replies
  • 4 views

Badge +4

Hi,

 

I have a line which I want to offset. It the centre of a rail line, which I made from a group of points spaced every 0.1m ish along the track. 1Hz trajectory values from a liDAR scanner for those of you playing at home.

 

At each point in the initial file there is a timestamp, XYZ coordinates, and roll/pitch/yaw values. The line I made only uses the XYZ values and would lose all the other information

 

So, I have a centre line I can offset left and right to estimate the actual rails of the train line. I would like to include the roll values from the original points into this offset so the offset rails are more accurate. These roll/pitch/yaw values are not consistent over the site though so I cannot plug them into the offsetter transformer on the centre line.

 

Does anyone have any ideas how I can do this?

 

Any help would be appreciated thanks


6 replies

Userlevel 3
Badge +26

With the values being variable among the points, I think a list will be your best bet. Assuming you used LineBuilder for the line construction, you can use the Generate List parameters in the transformers to retain the roll/pitch/yaw.

Badge +2

@james_c_452​ how you deal with it probably depends on what you want to do with the data or store it. Making a list as @dustin​ is one option - but at 0.1m intervals, this will be a very long list. My guess is that it's more of an LRS problem with each roll/pitch/yaw at some measure along your track line and saved as a point event

 

Badge +4

Thanks for the reply @Mark Stoakes​ @dustin​ 

Overall what I would like to do is offset the line in the centre of the rail I have made from the input trajectory/coordinate points by 0.75m left and right (Which I can do).

As part of the offset I was hoping to include the roll values to adjust the height to be more representative of what the height of the left and right rails should actually be.

I'm not really sure how I could do this that is variable based on the roll value (or a median roll value in an area) at the source points. The Offsetter can do it as a constant it seems

Badge +2

@james_c_452​ I think you might be able to make use of the 2DVectorCalculator CrossSectionsCreator from FME HUB. Apply your roll/pitch/yaw to those, then rebuild the 'offset' lines from the end points of the vectors. If you can attach a small example of the data we might be able to play around with that.

Badge +4

Hi @markatsafe (Safer)​, I'll give that a try after when I next get a free time to fix it (In a few weeks). I have attached a snipped on my input data, as well as the line I created from it (they are smoothed and sampled to 0.5m)

Badge +2

@james_c_452​ thanks for adding the data. Above I had meant the CrossSectionsCreator not the 2DVectorCalculator.

I've attached a workspace as a starting point. It creates the perpendicular vectors and grabs the nearest lidar point. I'll leave the pitch/yaw/roll math to you. I made a few edits in the original CrossSectionsCreator transformer. (FME 2022.2)

Reply