Professional Documents
Culture Documents
Preface
The contents of this analysis has been presented under the title “Open BIM für Infrastruktur –
mit OKSTRA und IFC-Alignment zur internationalen Standardisierung des Datenaustauschs”
as part of 6th OKSTRA-Symposium (May 20th - 21th 2015) in Cologne (Germany).
Figure 2: UML class diagram that shows the most important innovations of the IFC Alignment extension
Figure 3 shows an overview of the different parameters of the alignment elements used in the
horizontal alignment. As already described, all the alignment elements of the horizontal
alignment have a start point (StartPoint), a start direction (StartDirection) and a length
(SegmentLength). In addition, the arc has a radius (Radius) and an attribute that describes the
orientation of the arc (isCcw). CCW is short for counterclockwise and this attribute is therefore
“true” if the arc is counterclockwise and “false” if not. The clothoid provides a start radius
(StartRadius) which determines the radius of the clothoid at the start point. If the curvature is
0 at the start point then the start radius is infinity. In this case no value is stored for the start
radius. The attribute isCcw of the clothoid describes the orientation of the clothoid, as with the
arc. The attribute isEntry defines if the curvature is increasing or decreasing from the start to
the end point of the clothoid. If the curvature is increasing, then the value of isEntry is “true”, if
not then “false”. The last attribute of the clothoid is a clothoid constant (ClothoidConstant).
Figure 3: Overview of the different parameters of the alignment elements used in the horizontal alignment. From
left to right: IfcLineSegment2D, IfcCircularArcSegment2D and IfcClothoidalArcSegment2D
An alignment (IfcAlignment) is always gap free. To describe a gap between two alignments,
two separate IfcAlignment elements have to be used. This means that an IfcAlignment element
always consists of a connected sequence of horizontal or vertical alignment elements
(horizontal: line, arc, clothoid; vertical: line, parabola, arc). The connectivity between the
continuous horizontal and vertical segments does not necessarily have to be tangential.
Figure 4 shows an alignment where tangential continuity is not fulfilled. The class
IfcAlignment2DSegment has an attribute TangentialContinuity that defines whether two
segments are tangential (true) or not (false). The tangential continuity flag makes it possible to
check whether the calculated end direction of the previous segment matches the provided start
direction of the current segment. IfcAlignment2DHorizontalSegment and
IfcAlignment2DVerticalSegment inherit the attribute from this class and can modify the
corresponding property of the element.
Figure 4: The connectivity between the continuous alignment segments does not necessarily have to be
tangential
Figure 5 shows an example of a vertical alignment. The common basis class of all vertical
alignments is the class IfcAlignment2DVerticalSegment. It has different attributes that are used
to describe the individual segments of the vertical alignment. The attribute StartDistAlong
defines the start station of the corresponding alignment element. In the figure, the line
(IfcAlignment2DVerSegLine) starts at point AA6 and ends at point AA8. The start gradient is
described by the attribute StartGradient and corresponds to the slope of the line through the
points AE6 and AA8 in the illustrated case. The attribute StartHeight defines the height of the
start point of the corresponding vertical alignment element. The horizontal length of a vertical
alignment is described by the attribute HorizontalLength. This is not to be confused with the
ordinary real length of the segment; it describes the horizontal length in the vertical alignment
that relates to the length in the horizontal alignment.
More details to the IFC Alignment data model can be found in (Liebich 2014).
The digital elevation model is mapped on the geometry level to an IfcTriangulatedFaceSet and
is linked on the semantic level with the element IfcGeographicElement. The
IfcGeographicElement entity is used to tag terrain data.
The Trasse (Alignment) class references an element of type Achse (Axis). The Achse (Axis)
class references an ordered set of axis elements of type Achselement (axis element), which
describe horizontal alignment elements. Using those elements an axis element type can be
defined e.g. “Gerade” (line), “Klothoide” (clothoid) or “Kreisbogen, tangential” (arc, tangential).
The OKSTRA standard describes the vertical alignment using a vertical point of intersection
approach (VPI approach) instead of the segment-based approach used by the IFC Alignment
standard. The segment-based approach stores data about the individual segments, e.g. the
start and end point is stored for each line and every parabola. The VPI approach stores only
the points of vertical intersection and the radius of curves. The start and end points of the
individual segments have to be computed explicitly here. Figure 7 shows the VPI approach in
comparison to the segment-based approach. Each of the two approaches can be converted to
the other. The segment-based approach used for the IFC Alignment project was chosen after
intensive discussion within the international community, primarily because the horizontal
alignment also uses a segment-based approach.
The vertical alignment is stored in the Laengsschnitt (longitudinal section) class and is
referenced by the Achse (axis) class. The longitudinal in turn references the gradient (of type
Gradiente = gradient). The gradient consists of points of vertical intersection and optionally
curves and curve types. Navigation through a series of associations is needed to access the
corresponding attributes (Punktfolge, Tangente, Gerade, Tangentenfolge).
A digital elevation model (DEM) can be stored in the form of a triangle description. The class
DGM (short for Digitales-Gelände-Modell = digital elevation model) serves this propose. It
manages a list of triangles of type Dreieck (triangle).
Conversion
To convert horizontal alignment from IFC Alignment to OKSTRA is straightforward since both
standards use a segment-based approach for the horizontal alignment and have a relatively
similar structure. For instance, the property beginnt_bei_Achshauptpunkt can be used to
determine the start point of an alignment element for IFC Alignment. Mapping the different
attributes of both standards is therefore straightforward. Table 1 shows an example of some
conversions:
Table 1: Conversion of the horizontal alignment from IFC Alignment to OKSTRA
IFC Alignment OKSTRA
IfcLineSegment2D.StartPoint Achselement.beginnt_bei_Achshauptpunkt
IfcLineSegment2D.StartDirection Achselement.Richtung
IfcLineSegment2D.SegmentLength = distance(
Achselement.beginnt_bei_Achshauptpunkt
Achselement.endet_bei_Achshauptpunkt)
oder
Achselement.Laenge
IfcCircularArcSegment2D.Radius Achselement.Radius_zu_Beginn
IfcClothoidalArcSegment2D.StartRadius Achselement.Radius_zu_Beginn
IfcClothoidalArcSegment2D.IsEntry 1/Achselement.Radius_am_Beginn <
1/Achselement.Radius_am_Ende
IfcClothoidalArcSegment2D. Achselement.Parameter
ClothoidalConstant
The conversion of the vertical alignment is a bit more difficult. The corresponding conversion
algorithm in pseudo code is shown in Table 2 (this algorithm is written for OKSTRA version
1.014).
Table 2: Algorithm for converting a vertical alignment from OKSTRA to IFC Alignment
In its first pass, the algorithm visits all points of vertical intersection and collects all the available
information. This includes the position values (station and height) and optimally the curve
parameters. In the second pass, all start and end gradients are computed as well as the
parameter 𝑇/2 (see Figure 7). In the last step, the start and end points of the vertical alignment
elements are computed and the IFC Alignment specific alignment segments are created.
OKSTRA version 2.016 introduced several changes to the vertical alignment in comparison to
version 1.014. In particular, the object Laengsschnitt has been removed and the object
LS_Koor has been replaced by the object Grad_Koors. The amendments make it easier to
access parabola parameters. By way of example, Table 3 list some mappings of the vertical
alignment of IFC Alignment elements to the vertical alignment elements of the OKSTRA
(2.016) product data model.
Table 3: Conversion of the vertical alignment from IFC Alignment to OKSTRA 2.016
IFC-Alignment OKSTRA
IfcAlignment2DVerticalSegment Gradiente.hat_Grad_Koor.Station
.StartDistAlong
IfcAlignment2DVerticalSegment Gradiente.hat_Grad_Koor.Station[index+1] -
.HorizontalLength Gradiente.hat_Grad_Koor.Station[index]
IfcAlignment2DVerticalSegment Gradiente.hat_Grad_Koor.Hoehe
.StartHeight
IfcAlignment2DVerticalSegment Gradiente. hat GradKoor . Hoehe[index + 1] − Gradiente. hat_Grad_Koor. Hoehe[index]
.StartGradient Gradiente. hat GradKoor . Station[index + 1] − Gradiente. hat_Grad_Koor. Station[index]
IfcAlignment2DVerSegParabolicArc = abs(FocalLength * 2)
.ParabolaConstant FocalLength = Distance between focus and apex = 1.0 / (4.0 * a)
with a = 0.5 * ((slopeAtEnd – slopeAtEnd) / (endStation - startStation)
Start and end station can be determined using
Gradiente.hat_Grad_Koor.Station.
Slope at start: see IfcAlignment2DVerticalSegment
.StartGradient
Slope at end: Analog to IfcAlignment2DVerticalSegment
.StartGradient
IfcAlignment2DVerSegParabolicArc If FocalLength * 2.0 < 0 then IsConvex = false otherwise true.
.IsConvex
IfcAlignment2DVerSegCircularArc Arcs within the vertical alignment are not supported by OKSTRA
.Radius
IfcAlignment2DVerSegCircularArc Arcs within the vertical alignment are not supported by OKSTRA
.IsConvex
In addition to the 2D-based approach using a vertical and horizontal alignment, it is also
possible to store a pure 3D-based alignment within IFC Alignment, but the preferred option
within IFC Alignment is the 2D-based approach. Furthermore, OKSTRA does not support pure
3D-based alignments.
The decision to favor 2D representation within IFC Alignment is a product of the fact this is
also used to store the original engineering parameters of the alignment (curvature, radius,
slope, etc.). This means such information is directly accessible, verifiable and easier to
manipulate. If needed, a 3D-based alignment can always be computed from the 2D base
alignment. The other way around would only be possible to a very limited extent. That said, it
is also possible to store a pure 3D-based alignment using IFC Alignment. This ensures that
viewers without alignment processing are able to display an alignment correctly. A limitation in
this respect is that the redundant storage of a 2D and 3D alignment can lead to inconsistencies.
IFC Alignment will serve as a basis for IFC Bridge, IFC Tunnel, etc. The components defined
therein will in any case be modelled primary as 3D geometry.
Cross sections or the pavement design specifications are not covered by IFC Alignment as the
purpose of IFC Alignment is purely to describe the alignment in its horizontal and vertical
components. However, proposals for handling cross sections already exist such as (Amann et
al. 2015) or (Singer et al. 2014). The proposal for extending IFC Alignment described in
(Amann et al. 2015) is visualized in Figure 8.
Figure 8: Proposal for extending IFC Alignment with cross sections
More details to this extension can be found in (Amann et al. 2015) and (Singer et al. 2014).
Cross sections and pavement design specifications will be considered in buildingSMART’s IFC
Road project in the future. As part of buildingSMART’s INFRA Room, other possibilities of
adding road bodies have also been discussed, such as the Line String approach (see
Inframodel.fi 2014) as used by the Finnish road standard. It is currently not clear which
approach will prevail in the end or if a hybrid approach will be taken.
Figure 9: File conversion possibilities within the TUM Open Infra Platform
The program can be used for free and can be downloaded from the website
https://www.cms.bgu.tum.de/oip. The website contains more information about the system
requirements, installation instructions as well as documentation of the different features.
Figure 10 shows a screenshot of the TUM Open Infra Platform.
Figure 11 shows an import of digital elevation model (Figure 11, left) data in the XYZ format.
Additionally, an import of laser scan data in the LAS format is shown (Figure 11, right).
Tests performed
In our software test, we created 50 test files in the IFC Alignment data format. Using the TUM
Open Infra Platform we then converted these files to the OKSTRA data format and did a visual
check. In the same manner we also converted the OKSTRA data file to the IFC alignment data
format and checked them visually. Figure 12 shows three examples of our visual tests. The
first column shows IFC alignment files and the second one shows the corresponding OKSTRA
files. The generated OKSTRA files were also validated using the OKSTRA tool (Werkzeug),
Version 1.3.0.25.
Figure 12: Visual checking of converted files
The TUM Open Infra Platform uses floating point numbers with single precision (Float32) and
double precision (Float64) according to IEEE 754. Those provide only a limited accuracy as
demonstrated in Code Snippet 1.
#include <iostream>
int main() {
if (0.362 * 100.0 != 36.2)
std::cout << "different" << std::endl;
return 0;
}
Code Snippet 1: A C++ program that returns the output "different" and "also different"
Since the conversion from IFC Alignment to OKSTRA uses also arithmetic operations based
on double precision, the conversion can lead to small differences.
To assess the differences that can occur when converting an IFC Alignment file to OKSTRA
and vice versa, we implemented a simple test. This test converts an IFC Alignment file
(orginal.ifc) to an OKSTRA file. Subsequently the OKSTRA file is then converted back to an
IFC Alignment file. This process corresponds to one conversion cycle in our test. We repeated
this conversion cycle 10 times and examined the resulting differences as shown in Figure 13.
The difference in the end curvature amounts to 6.0 × 10-18 and is therefore nearly 0. The start
and end positions have greater differences, but are also within acceptable limits.
The numerical stability of our conversion algorithm can, of course, be optimized, but the
resulting differences are acceptable.
References
Amann, J.; Borrmann, A,; Hegemann, F.; Jubierre, J.R.; Flurl, M.; Koch, C.; König, M.: A Refined Product
Model for Shield Tunnels Based on a Generalized Approach for Alignment Representation, In: Proc. of
the ICCBEI 2013, Tokyo, Japan, 2013
Amann, J., Borrmann, A., Chipman, T., Lebegue, E., Liebich, T., Scarponcini, P., P6 IFC Alignment –
Conceptual Model, http://www.buildingsmart-tech.org/downloads/ifc/ifc5-extension-projects/ifc-
alignment/ifcalignment-conceptualmodel-cs, 2014, buildingSMART
Amann, J.; Singer, D.; Borrmann, A.: Extension of the upcoming IFC alignment standard with cross
sections for road design, In: Proc. of the ICCBEI 2015, Tokyo, Japan, 2015
Borrmann, A., König, M., Koch, C., Beetz, J. (Hrsg.): Building Information Modeling – Technologische
Grundlagen und industrielle Praxis, Springer Vieweg, 2015
Eastman, C., Teicholz, P., Sacks, R., Liston, K., BIM Handbook: A Guide to Building Information
Modeling for Owners, Managers, Designers, Engineers and Contractors, Wiley Publishing, 2008
Lebegue, E., Fiês, B. and Gual, J., (2012). IFC-Bridge V3 Data Model – IFC 4, Edition R1
Singer, D.; Amann, J.: Erweiterung von IFC Alignment um Straßenquerschnitte In: Proc. of the 26th
Forum Bauinformatik, Darmstadt, Deutschland, 2014
Yabuki, N., Azumaya, Y., Akiyama, M., Kawanai Y., Miya, T. (2007): Fundamental Study on
Development of a Shield Tunnel Product Model. Journal of Civil Engineering Information Application
Technology 16, pp. 261-268
Yabuki, N. (2008). Representation of caves in a shield tunnel product modeling. In Proc. of the 7th
European Conference on product and Process Modeling. Sophia Antipolis, France.