12d Model Format Attributes (Feature Representation)
In addition to the generic FME feature attributes that FME Workbench adds to all features (see About Feature Type Attributes), this format also adds format-specific attributes (Format Attributes).
All 12d Model XML features contain a 12dxml_type attribute, which identifies the geometric type. In the rare cases where the model does not actually contain any geometry, the value of this attribute will be 12dxml_no_geom.
Writer Feature Representation
The 12D Model xml writer supports multiple feature types contained in the model element. However, differentiating the output element type based on the feature geometry becomes a challenge. For example, an FMEPath geometry, sequence of line segments, can be interpreted as the path of a road in a string_super element or a network of pipes under a string_drainage element. Thus, to differentiate between the 12d types, the writer looks for specific attributes that relate to the element.
12D Element Type |
Required Attributes |
|
---|---|---|
string_super |
FMEPoint, FMELine, FMEPolygon |
None |
string_drainage |
FMELine, FMEAggregate, FMEPipe |
drainage_sewer outfall flow_direction use_pit_con_points |
trimesh |
FMEMesh |
None |
tin |
FMEMesh |
input.preserve_strings input.remove_bubbles input.weed_tin input.triangle_data input.sort_tin input.cell_method |
Attributes
12d Model elements have attributes specific to each feature, similar to FME feature attributes. 12d Model attribute types must be one of the following: integer, real, text, or group. Attributes can have a recursive definition by using the group type, which allows for nested attributes going down to any level.
<attributes>
<group>
<name>Group_A</name>
<attributes>
<text>
<name>Attribute_1</name>
<value>Value_1</value>
</text>
</attributes>
</group>
<group>
<name>Group_B</name>
<attributes>
<text>
<name>Attribute_2</name>
<value>Value_2</value>
</text>
<group>
<name>Group_C</name>
<attributes>
<text>
<name>Attribute_3</name>
<value>Value_3</value>
</text>
</attributes>
</group>
</attributes>
</group>
</attributes>
The 12d Model XML reader in dataset mode will dynamically unflatten these attributes into the following feature attributes:
Attribute Name |
Attribute Value |
---|---|
Group_A.Attribute_1 |
Value 1 |
Group_B.Attribute_2 |
Value 2 |
Group_B.Group_C.Attribute_3 |
Value 3 |
Vertex and Segment Attributes
A super string can have attributes for the entire string (feature attributes) or have attributes for each vertex and/or segments (geometry attributes). FME does not support having attributes or traits on individual vertex or segments, so vertex and segment attributes are transferred onto feature attributes. Vertex and Segment attributes will contain a prefix Vertex{n} or Segment{n}, where n represents the nth vertex or segment.
<vertex_attribute_data>
<attributes>
<text>
<name>A</name>
<value>Fred</value>
</text>
<real>
<name>B</name>
<value>100</value>
</real>
</attributes>
<attributes>
<integer>
<name>A</name>
<value>200</value>
</integer>
</attributes>
</vertex_attribute_data>
This 12d XML reader/writer will read and write Vertex and Segment attributes as the following list attributes:
Attribute Name |
Attribute Value |
---|---|
Vertex{0}.attr_A |
Fred |
Vertex{0}.attr_B |
100 |
Vertex{1}.attr_A |
200 |
Pipe and Pit Attributes
A string drainage feature type represents a network of pipes. Pipe and Pit attributes specific to a single pipe will be set as a list attribute on the feature, similar to Vertex and Segment attributes.
When writing to 12d XML, if pipe or pit list attributes exist for a pipe at index i, then those attributes will be written. Otherwise, only diameter and thickness attributes will be written for the pipe, as well as the ip attribute for the pit.
Geometry Representation
The geometry of 12d Model features is identified by the 12dxml_type attribute. The valid values for this attribute are described below.
Aggregates
12dxml_type |
FME Type |
Feature Type |
Description |
---|---|---|---|
12dxml_collection |
fme_collection |
Aggregate feature |
Features with their 12dxml_type set to 12dxml_collection could be an aggregate of vertical and horizontal alignments, or an aggregate of FMEPipe geometries that represent a drainage network. A 12dxml_collection geometry comes from a super_string_alignment or a string_drainage element. For string drainage reading and writing, FME assumes the FMEPipe geometries in the aggregate are connected in the order they appear. |
Areas
12dxml_type |
FME Type |
Feature Type |
Description |
---|---|---|---|
12dxml_polygon |
fme_polygon fme_rectangle fme_rounded_rectangle |
Polygon feature |
Features with their 12dxml_type set to 12dxml_polygon are polygon features that do not have interior boundaries. A polygon geometry is automatically created when a geometry is detected to be closed. A 12dxml_polygon geometry comes from a string_super element. |
Lines
12dxml_type |
FME Type |
Feature Type |
Attribute Type |
---|---|---|---|
12dxml_line |
fme_line fme_ellipse fme_arc |
Linear, arc, or path feature |
Features with their 12dxml_type set to 12dxml_line are polyline, arc, and path features. A path feature may contain a combination of straight line and arc geometries. A 12dxml_line geometry comes from a string_super or string_drainage element. |
No Geometry
12dxml_type |
FME Type |
Feature Type |
Description |
---|---|---|---|
12dxml_no_geom |
fme_no_geom |
FME feature with no geometry |
Features with their 12dxml_type attribute set to 12dxml_no_geom do not contain any geometry data. |
Points
12dxml_type |
FME Type |
Feature Type |
Description |
---|---|---|---|
12dxml_point |
fme_text |
Point feature |
Features with their 12dxml_type set to 12dxml_point are single coordinate features (also referred to as vertex geometry by 12d Model). A 12dxml_point geometry comes from a string_super element. |
Surfaces
12dxml_type |
FME Type |
Feature Type |
Description |
---|---|---|---|
12dxm_surface |
fme_surface |
Surface feature |
Features with their 12dxml_type set to 12dxml_surface are triangulated irregular networks (TINs). A 12dxml_surface geometry comes from a full_tin, tin, or primitive_3d element. |