Converting IFC to IMDF

Liz Sanderson
Liz Sanderson
  • Updated

FME Version

  • FME 2018.x


IFC is a common format to transform into an IMDF dataset. This article is designed to highlight some of the IFC features and ask questions about your data so you can create your own workflow. The main points of the downloadable workspace will be covered, but this article will not go into the details about how it is built. To learn more about each step, open up the workspace.




Step-by-step Instructions

For this example, we will be using the Clinic_A_20110906.ifc from the National Institute of Building Sciences COBie sample page. Download the data and follow along with the Workspace.


To help guide you through creating an IMDF file with your own IFC data the following steps have questions to consider.


1. Selecting a source

Questions to consider:

  • IfcSpaces versus IfcSlab, which contains the key information? (This varies between datasets)

  • What are the attributes and does more information need to be added from an external source?


Open the IFCtoIMDF.fmw workspace in FME Workbench. Update the SourceDataset_IFC published parameter to the Clinic_A_20110906.ifc dataset that you have already downloaded.



Update the file path using the SourceDataset_IFC Published Parameter


Once the file path is updated, click on any of the Reader Feature Types and click Inspect to open the IFC file in FME Data Inspector.


Typically either IfcSlab or IfcSpaces will have the key information we will need about the building. Unselect all of the features in FME Data Inspector except for IfcSlab or IfcSpace, then in turn, enable and disable IfcSlab and IfcSpace. Doing this you will see that IfcSpace has the most information so it will be used as the main building block. Inspect the remainder of the features to get familiar with the data, then move back to FME Workbench. To learn more about IFC specifics, see the BIM Tutorial or the IFC Documentation.


After examining the source IFC file in Data Inspector, we decided to use the Spaces as the key building block of the IMDF file, with the Walls used to fill in the coverage required to create the levels. Other IFC datasets may require a different method (i.e. using the IfcSlab to define the level boundaries).



IfcSlab has more features and attributes than IfcSpaces in this dataset, your data may be different.


2. Clean up attributes

Questions to consider:

  • Which attributes are needed in the final output?

  • Do we need some attributes now that can be removed later?


Once you have a general idea of which IMDF layer you will write each IFC layer to, you can determine the correct attributes needed and then remove the unnecessary attributes. This is just the preliminary attribute clean up to help keep the workspace tidy and efficient. There will be a final attribute clean up to ensure the attributes follow the correct naming convention and the required attributes are present.


For this example, we are converting ifc_unique_id and ifc_parent_unique_id to UUIDs and depending on the input feature type keeping only certain attributes. For the details on which attributes are used, see the AttributeKeeper and AttributeExposer transformers in the workspace.



One of the examples of using converting attributes to UUID as well as keeping or exposing attributes.


3. Merge data

Questions to consider:

  • Do datasets need to be merged?

  • Are geometry and/or attributes being merged?


Some of the IMDF layers require input from a couple of different IFC feature types. To merge these layers together several FeatureMerger transformers are used.


In this example, a copy of the Spaces are merged with the Wall, WallStandardCase and CurtainWall features from the same Storey, then cleaned up to make the IMDF level polygons.



Example of the FeatureMerger merging CurtainWalls and Members with Storey.


4. Clean up geometry

Questions to consider?

  • Are there lines, like wall boundaries, that overlap?

  • Can the geometry be simplified?

  • Are there holes or slivers in the geometry?


When the layers are merged together, it is a good idea to clean up the geometry and remove any overlapping lines and dissolve any boundaries to create solid polygons. These polygons can be simplified further to remove any holes in the geometry.


In this example, the 3D solid IFC geometries are converted to 2D polygons using the SurfaceFootprinter transformer.


The Spaces are then used to clip a copy of the level polygon in order to create the structure IMDF unit polygons. This gives better results than dissolving the wall polygons since small voids used for wiring/pipe runs are incorporated into the structure units.


Spaces are dissolved with adjoining Openings to create the non-structure unit polygons. The lines where these units about each other are extracted to form the IMDF opening lines.


The level polygons are dissolved together to create the IMDF footprint and venue polygons.



Example of geometry clean up, by snapping polygons, dissolving walls and removing donut holes.


5. Final attribute clean up

Questions to consider:

  • Are there any extra attributes to remove?

  • Do the attributes match the IMDF naming convention?


Finally, before writing out to IMDF, it is a good idea to remove any additional attributes that were created with the various transformers in the workflow. Also, now is the time to confirm IMDF naming convention and capitalization of attributes, for the correct attributes see IMDF Resources documentation.



Example of final attribute clean up. Mapping IFC categories to IMDF categories, and creating IMDF attributes.


6. Write out to IMDF

Questions to consider:

  • Is everything ready to be written out?

  • When you inspect the final output, does everything look correct?


When adding an IMDF writer, it provides the features types needed with the correct naming convention. Which feature types you choose to include is your choice, but the more, the better when helping your customers navigate your building. The required ones are address and venue. For more information output feature types see the IMDF Reference Documentation. The final output file will be zipped.



The final IMDF output inspected in FME Data Inspector.


7. Validate IMDF file

Questions to consider:

  • Does the data pass validation?

  • If yes, are there warnings that could be resolved?

  • If no, what needs to be fixed?


The final step is to validate the IMDF file. To do this you can either use the IMDFValidator custom transformer within your workspace or upload the zipped file to our online validator tool. For more information of validation see the Validating IMDF Datasets article.


The validation report for the output file from the attached workspace only has some warnings. If possible, fix these warnings. Any errors will be listed first in the report and will need to be fixed


Source Data Overview

The source data is a sample IFC dataset of a medical clinic downloaded from the National Institute of Building Sciences COBie sample page. This dataset was chosen because it is a building offering services to the public, and it has a comprehensive Space coverage of the interior. This is important since the Spaces will be used to create the unit output. The file can be downloaded directly from here.


The Category Description property of the Pset_Revit_Other property set is used to map the Spaces category to IMDF. As well, the Level and Upper Limit properties from the Pset_Revit_Constraints property set are used to determine the elevator range. This information may be in different property sets in other IFC datasets.

Was this article helpful?



Please sign in to leave a comment.