Geometry Representations
In general, the geometry will be identified by the xml_type attribute as defined in the documentation for the XML (Extensible Markup Language) Reader/Writer.
Geometry Traits and LandXML Features are specific to the LandXML format.
Geometry Traits
In a number of LandXML feature types (Alignment, PlanFeature, Parcel, Surface elements), the geometry of a feature can be quite complicated and make use of a number of different elements, each with its own purpose.
Since FME currently restricts a feature to having only one geometric element, the LandXML reader constructs an aggregate out of the different geometry properties that a given feature has. Then, in order to make it easier to examine a given geometry property, we have assigned to each geometry a geometry trait (essentially an attribute on a geometry) which identifies it.
Trait Name |
Contents |
landxml_geometry_type |
A string identifying the geometry in question. |
A mapping file example taken from an Alignment element shows the landxml_geometry_type trait in question.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Geometry Type: IFMEAggregate Number of Geometry Traits: 1 GeometryTrait(string): landxml_geometry_type' has value alignment_geometry' Number of Geometries: -------------------------------------- Geometry Number: 0 Geometry Type: IFMEPoint Number of Geometry Traits: 1 GeometryTrait(string): landxml_geometry_type' has value start' Coordinate Dimension: 2 (1283.49421251,1309.71022416) -------------------------------------- Geometry Number: 1 Geometry Type: IFMEPath Number of Geometry Traits: 1 GeometryTrait(string): landxml_geometry_type' has value alignment_boundary' Number of Segments: 13 [rest of geometry omitted] +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Geometry Traits are also used on features produced by the LandXML reader in order to tie properties of a geometry tightly to that geometry. For example, it is possible to have a set of BreakLine elements on a Surface SourceData element. Each BreakLine element can have a set of properties (called ‘Feature’ elements in LandXML). By coupling the name-value pairs directly on the geometry, it is easy to determine which feature-property refers to which BreakLine.
The LandXML Writer does not currently support writing Curve or Spiral types. These geometries will be stroked into lines before writing.
LandXML Features
In addition to a large set of predefined attributes, LandXML has a mechanism for user-defined attributes called Features (not to be confused with FME features).
While LandXML Features include a set of related attributes (a name, a DocFileReference, etc.), they can also include simply name-value pairs. In order to capture the related attributes as a group, list attributes are used. In particular, the structure of a LandXML Feature encompasses the following attributes:
- Feature{}.Code
- Feature{}.Source
- Feature{}.Property{}.Label
- Feature{}.Property{}.Value
- Feature{}.DocFileRef{}.Name
- Feature{}.DocFileRef{}.Location
- Feature{}.DocFileRef{}.Filetype
- Feature{}.DocFileRef{}.FileFormat
When writing a LandXML feature type which supports ‘Feature’ elements, all attributes which match this structure will be used to construct LandXML Feature elements with all the appropriate relationships as defined by the indices on these list attributes. In addition to this, any attributes which neither match the above schema, or are built-in LandXML attributes, will be assigned to a feature property label and value. That is, given an attribute called "UserIntervention" with a value "No", the writer will construct a Feature, with a Property, with the Label = "UserIntervention" and the Value = "No". All attributes will be interpreted as string values.
Due to LandXML’s structure, these Feature attributes may be stored on either a Feature, or as traits on a geometry.