How is the real world placement stored in a IFC file?

Hi There, I would like to get some more information about how models get georeferenced in ifc? In serveral shared sample models I see different approaches with different outcomes.

#93= IFCPOSTALADDRESS($,$,$,$,$,$,‘Purmerend’,$,$,$);
#104= IFCSITE(‘20FpTZCqJy2vhVJYtjuIce’,#30,‘Site’,$,$,#101,$,$,.ELEMENT.,(52,30,38,600000),(4,56,24,500000),0.,$,#93);
#128= IFCPOSTALADDRESS($,$,$,$,$,$,‘Purmerend’,$,$,$);

Bold is lat lon of the origin, Could the rotation of the design in relation to north be stored?

#63= IFCPOSTALADDRESS($,$,$,$,$,$,‘Nijmegen’,$,$,$);
#74= IFCSITE(‘20FpTZCqJy2vhVJYtjuIce’,#25,‘Site’,$,$,#71,$,$,.ELEMENT.,(

What is the function of these 0 values?


Hi @Hans_Lammerts ,

In IfcSite, you only have limited georeferencing possibilities: you can add georeferencing coordinates based on the WGS84 system.
(the zeros are for millionths of seconds)
The geographic coordinates are assumed to refer to the IfcSite origin.

In IFC2x3, that was the only way to georeference your model. (unless you use a not-much-used workaround with custom properties)
From IFC4 on, you have IfcCoordinateReferenceSystem combined with IfcMapConversion to georeference your model using a specific CRS + use the IfcGeometricRepresentationContext origin as reference point for your geolocation.

Concerning the true north: that can be stored in IfcGeometricRepresentationContext (IFC2x3), or, IfcMapConversion (from IFC4 onwards)

Hope this helps



I most definitely helps for understanding, but i know this isn’t easy stuff for most bim users. I know in many infra cases ifc geometry is passed thought using the ‘model in real coordinates’ method (for the Neterlands : RD). In BricsCAD : Move it to the right spot, and hit the option export. Using Revit: make a IFC export using the option with ‘shared coordinates’ turned on. This give you files in national local grid without WGS84 parameters. And so avoids a difficult (flat) CRS tot lat lon calculation. (At least i…) need for some testing needs to be done to understand how this will work out in practice. Like how to set parameters in Revit so this works it suppose to.
2B continued.