Skip to main content

I have a CAD file that I want to convert to CityGML LOD2 with Xlink using a provided template. To automatically generate unique surface IDs using SurfID_@UUID(), I need to first deagregate the CAD file into individual surfaces. If I don't do this, I get errors about non-unique IDs. However, separating the surfaces in this way causes the roof, walls, and ground surfaces of the building to be split into multiple surfaces and IDs. I would prefer to have each incoming surface represented by a single GML ID, but I've tried several options and haven't been successful. I'm not sure if I'm missing something or if there's another approach I could try. Could anyone please be so kind take a look to the tample and smaple CAD file.

There can be a distinction between a feature and geometry. For example a Building and a Wall can share geometry. So a building with gmlid "building_1" can be made up of all the surfaces and a Wall feature with gmlid wall_1 might be made up of several geoemetries.

 

Here the geometries and the features have separate gmlid's.

 

So you can create a unique ID for each Face and then create a NEW gmlid for the wall which is made up of several faces. You just need to re-aggregate the Walls, Roof etc back into the Composite surfaces you want. You can then give them new ids (e.g., Wall_@UUID(), Roof_@UUID(), Ground@UUID() )

 

You can also group your installations as you like (FME will just create ID's automatically where it needs to)


There can be a distinction between a feature and geometry. For example a Building and a Wall can share geometry. So a building with gmlid "building_1" can be made up of all the surfaces and a Wall feature with gmlid wall_1 might be made up of several geoemetries.

 

Here the geometries and the features have separate gmlid's.

 

So you can create a unique ID for each Face and then create a NEW gmlid for the wall which is made up of several faces. You just need to re-aggregate the Walls, Roof etc back into the Composite surfaces you want. You can then give them new ids (e.g., Wall_@UUID(), Roof_@UUID(), Ground@UUID() )

 

You can also group your installations as you like (FME will just create ID's automatically where it needs to)

"I appreciate your solution and will review it as soon as possible. I've been working tirelessly for the past two days and haven't been able to resolve the issue. To clarify, when you mention creating a unique ID for each face in the first step, are you suggesting that it should be done automatically or manually assigning new IDs to each face?"

 

 


"I appreciate your solution and will review it as soon as possible. I've been working tirelessly for the past two days and haven't been able to resolve the issue. To clarify, when you mention creating a unique ID for each face in the first step, are you suggesting that it should be done automatically or manually assigning new IDs to each face?"

 

 

Here - I made a couple of small changes and added a few comments.

 

 


"I appreciate your solution and will review it as soon as possible. I've been working tirelessly for the past two days and haven't been able to resolve the issue. To clarify, when you mention creating a unique ID for each face in the first step, are you suggesting that it should be done automatically or manually assigning new IDs to each face?"

 

 

You are a genius, I was totally confused in the middle, you did it in a very simple step. many many thanks. Now I will try to extend the workspace to get the building attribute information from Excel and map it to its corresponding attribute in Citygml.

 

I got motivated once again, Thank you very much bro


"I appreciate your solution and will review it as soon as possible. I've been working tirelessly for the past two days and haven't been able to resolve the issue. To clarify, when you mention creating a unique ID for each face in the first step, are you suggesting that it should be done automatically or manually assigning new IDs to each face?"

 

 

Great! Just keep in mind that some of the CityGML attributes (like function) need to be created as list attributes.

For me sometimes when I work with CityGML in FME I create what it should look like in XML and then see how fme reads it. There's not a whole lot documented in some cases and this little trick has helped me a lot


Reply