Solved

AIXM 5.1: how to write geometry to timeslice via many relations?

  • 20 June 2018
  • 2 replies
  • 10 views

Badge +1

Hello everybody,

I´m trying to find way, how to write geometry in AIXM in situation, where I have to merge 4 tables to gain geometry. Concretely - I have prepared dataset to write into AIXM format, Vertical Structures feature type.

But according to AIXM model settings, I have write geometry into Geometry:ElevatedPoint object, not directly to VerticalStructure object.

I checked also the FME demo here: https://knowledge.safe.com/articles/1312/aixm-xml-and-gml-formats-eu-airports-demo.html, but there only one simple relationship between AirportHeliport object and ElevatedPoint. Meanwhile in VerticalStructure issue, I have to trace more objects to write geometry, check here: http://aixm.aero/sites/aixm.aero/files/imce/AIXM511HTML/AIXM/Diagram_VerticalStructures.html?menu=open

From VerticalStructure feature I have to go to VerticalStructurePart Object, then through VerticalStructurePartGeometry Choice and after then I´m finnaly able to reach Geometry: ElevatedPoint object.

Does anybody have idea, how to solve this complexity relationships to be able write correct VerticalStructureDataSlice contains geometry in FME Workbench please?

Thank You so much!

Lubo

icon

Best answer by trentatsafe 25 June 2018, 19:16

View original

2 replies

Badge +6

Hello @lazarlubomir

Just to add to this Q&A;, there are two ways to proceed.

1) You can make use of the Attribute Creator, GeometryPropertySetter, Aggregator method. This method will require the above transformers per level of depth. This method can be tricky, as if not done correctly, you could potentially overwrite the Child features with the Parent geometry.

 

 

2) The alternative option, which can be easier to implement when dealing with complex geometries is to try an XMLTemplater with a template of the desired output geometry. You can then feed the required feature value or GML geometries into the XMLTemplater. This works because the XMLTemplater will now allow xml fragments to any xml_geometry field.

 

 

Dean makes this explanation in this Q&A; posting here: https://knowledge.safe.com/questions/47251/how-to-transform-aixm-45-to-aixm-51-xml-geometry-g.html

 

One thing of note, is whichever geometry you are going to be writing to, change the attribute to match that, for example, have an attribute named ElevatedPoint contain the XML you designed.

 

I hope that helps!

Badge +1

Hello @lazarlubomir

Just to add to this Q&A;, there are two ways to proceed.

1) You can make use of the Attribute Creator, GeometryPropertySetter, Aggregator method. This method will require the above transformers per level of depth. This method can be tricky, as if not done correctly, you could potentially overwrite the Child features with the Parent geometry.

 

 

2) The alternative option, which can be easier to implement when dealing with complex geometries is to try an XMLTemplater with a template of the desired output geometry. You can then feed the required feature value or GML geometries into the XMLTemplater. This works because the XMLTemplater will now allow xml fragments to any xml_geometry field.

 

 

Dean makes this explanation in this Q&A; posting here: https://knowledge.safe.com/questions/47251/how-to-transform-aixm-45-to-aixm-51-xml-geometry-g.html

 

One thing of note, is whichever geometry you are going to be writing to, change the attribute to match that, for example, have an attribute named ElevatedPoint contain the XML you designed.

 

I hope that helps!

Hello @trentatsafe,

 

 

brilliant! You helped me so much!

Reply