New alignment and need for stations and offsets

@stefan.markic @Benzcly
In the US, road infrastructure is based on stations and offsets relative to the alignment. How is that now handled in the changes made in RC2?

If you mean how to specify such geometry, I’d suggest using IfcSectionedSurface or IfcSectionedSolidHorizontal. Note, though, that these are still in the finalization stage.

If you mean positioning elements along the alignment, I’d use IfcLinearPlacement.

I’m newbie at IFC but I’ll give a response I think is helpful.

The IfcAlignment2DHorizontal (4x1) and IfcAlignmentHorizontal (4x3rc2) have a StartDistAlong attribute. My guess is this attribute is defines starting station of the alignment.

Since an alignment is a distance along/offset coordinate system the range of distance along values is StartDistAlong to StartDistAlong+Sum of length of each IfcAlignment2DHorizontalSegment.

I’ve been working with alignments and positioning elements along an alignment with IfcLinearPlacement and it doesn’t seem to work as specified (or at least my interpretation of the spec).

For example, I have a horizontal alignment defined with IfcAlignment2DHorizontal.StartDistAlong = 500. Let’s say that the sum of the alignment segment lengths is 3000ft. That would make the range of IfcDistanceExpression.DistanceAlong ordinate be 5+00 to 35+00 (US Stationing) relative to the basis curve.

To place an object at Station 15+00 I would use an IfcLinearPlacement with IfcDistanceExpression.DistanceAlong = 1500. This should place the object 1500-500=1000ft from the start of the alignment.

Using ODA’s Open IFC Viewer 22.5, this is not the case. The object is placed 1500ft from the start of the alignment curve.

What is the correct interpretation of the specifications - IfcDistanceExpression.DistanceAlong is relative to 0.0 or IfcDistanceExpression.DistanceAlong is the distance relative to IfcAlignment2DHorizontal.StartDistAlong?

If it’s the former, what is the purpose of IfcAlignment2DHorizontal.StartDistAlong?

The ODA’s interpretation is correct. If you check IFC4.3_RC4, you will find that IfcAlignmentHorizontal.StartDistAlong is removed.
IfcPointByDistanceExpression.DistanceAlong defines the geometric measurement, which is independent from Stationing.
The Station is considered as semantic information that is defined using IfcReferent.PredefinedType=STATION.
The start station of an alignment is defined by positioning an IfcReferent.PredefinedType=STATION at the start of alignment through IfcLinearPlacement. The station value is defined using the property set Pset_Stationing. The conventional representation of station can be defined in Name of IfcReferent.
In your case that start station is 5+00, to place an object at Station 15+00, then IfcPointByDistanceExpression.DistanceAlong should be 1000.

Also see an example here:
https://github.com/IFCRail/IFC-Rail-Sample-Files/blob/main/2_Linear%20Placement%20(LP)/UT_LP_8/IFC%20reference%20files/Draft/UT_LP_8.ifc

#353= IFCREFERENT('3BUzbYwl5EpBNC4iYC$56f',#359,'DK1+000.000',$,$,#352,$,.STATION.,$);

2 Likes

Thanks. This is great information. I’ve been looking for an example of defining stationing on a highway alignment.