Per Feature Data - CAD/BIM Models

Hi Cesium Team,

We are trying to work on a project where we can import per-feature data for infrastructure from a model (towers/poles - to be exact)

We have seen read both of of the below issues and followed them -

Have also seen this post about supporting per feature data on import to ION - https://cesium.com/blog/2020/04/09/kml-collada-metadata/

At the moment - our workflow is Revit > export to DAE (with plugin) > Sketchup - Export as KMZ.

When we import into ION we now can click on the asset and bring up a table (which we can add data to in the extendeddata tab of the KML.

What we haven’t been able to work out yet is how to do this at a per feature level (IE for individual aspects of the tower) and if this is possible. Is there a better workflow here that we are missing?

Based on the announcement above - it seems that if you are uploading collada files, they need to be accompanied by an KML with the relevant feature information, and if you use the DAE file itself no data is pulled in?

Is there a specific way (or documentation) as to how the data needs to be imported at a per feature level?

Another interesting thing when importing as KMZ which we haven’t seen is the base of the asset sits below the terrain. We haven’t seen this when importing as DAE, OBJ or otherwise - and we can’t adjust the position of the KML. Screenshot below.

Screen Shot 2020-12-09 at 7.43.29 am

The asset ID is - 214099

Thank you.

Welcome to the Cesium community!

Based on the announcement above - it seems that if you are uploading collada files, they need to be accompanied by an KML with the relevant feature information, and if you use the DAE file itself no data is pulled in?

This is correct. Each feature would need to be a separate DAE file. So if you had 2 pipes that you wanted to be store information on each one, highlight them separately etc, the KML can be as follows:

<Placemark>
  <name>Pipe 1</name>
  <Model>
    <Link><href>pipe_1.dae</href></Link>
  </Model>
  <ExtendedData>                       
    <Data name="material">
      <value>Material A</value>
    </Data>
  </ExtendedData> 
</Placemark>
<Placemark>
  <name>Pipe 2</name>
  <Model>
    <Link><href>pipe_2.dae</href></Link>
  </Model>
  <ExtendedData>                       
    <Data name="material">
      <value>Material B</value>
    </Data>
  </ExtendedData> 
</Placemark>

Cesium ion can similarly get per-feature data for CityGML exports. We do want to support additional ways of tiling per-feature data for 3D models like this in the future.

Another interesting thing when importing as KMZ which we haven’t seen is the base of the asset sits below the terrain. We haven’t seen this when importing as DAE, OBJ or otherwise - and we can’t adjust the position of the KML.

When tiling as KML/COLLADA you should see an option to clamp to the underlying terrain layer. This is mentioned here: https://cesium.com/docs/tutorials/import-3d-buildings/

Select the Clamp to terrain option to move individual buildings down to the underlying ground height during tiling. Use this option to get accurate real-world building heights, or if you are visualizing your buildings on top of a 3D terrain layer.

You can disable this if needed while uploading.

2 Likes

Thank you Omar for the quick response! Will take a good look at this and come back if any issues. Appreciate your help.

1 Like

Hi @omar I am part of the same team doing this. This may be a bit beyond the scope of cesium but do you happen to know of any way or any software we can use to export a kmz/kml with separate placemarks for each component in the 3D model? For instance the BIM example in cesium sandcastle, that wasn’t done by editing the kml manually was it? cheers