Australian Asset Design & As Constructed (ADAC) XML Feature Representation
ADAC v3
The ADAC XML reader recognizes the following ADAC v 3.0.1 asset structures:
- Sewerage asset: Manhole, PipeNonPressure, PipePressure, Valve, Fitting, House_Connection.
- Roads asset: Pavement, Parking, RoadEdge, RoadIsland, RoadPathway, PramRamp, RoadSubsoilDrain.
- Water asset: Pipe, Valve, Hydrant, Meter, Fittings, Maintenance_Hole.
- Stormwater asset: ManholePit, EndStructure, Pipe, SurfaceDrainage.
- Cadastre asset: LandParcel.
- OtherData asset: Object.
The feature type names for ADAC FME features closely resemble the naming for the ADAC v3 XML document. Feature type names are whitespace separated combinations of theme and asset structure names. For example, “Sewerage Valve”, “Water Valve”, “Stormwater Pipe”, and “Cadastre LandParcel”.
Attribute names also closely resemble their XML counterpart. The non-geometrical, non-repeating, and non-nested child elements, i.e., the simple type elements whose maxOccurs is 1, of an asset structure are mapped with their names unchanged. For example, the simple type child element <OutletType> of the <ManholePit> element is mapped as the “OutletType” attribute of the “Stormwater ManholePit” feature.
Non-geometrical nested child elements, i.e., the complex type elements, of an asset are mapped as whitespace separated combinations of child and descendant elements. For example, the <ChamberSize> complex type child element of the <ManholePit> element creates the following FME attributes in a “Stormwater ManholePit” feature: “ChamberSize Blankend”, “ChamberSize PS”, “ChamberSize Rectangular” and “ChamberSize Circular”.
Most non-geometrical child elements in an asset structure are non-repeating, these are mapped as simple, atomic FME attribute values. Repeating non-geometrical child elements, i.e., those with maxOccurs greater than 1 or unbounded, such as the <ComponentInfo> element, are mapped as CSV values.
The geometry for a feature is mapped from the various ADAC geometry elements. Some ADAC asset structures, such as the “RoadSubsoilDrain”, may have more than one geometry, these are mapped as aggregates. Two special FME geometry traits are assigned to the geometries to help identify their original ADAC role. The “adac_geometry” trait identifies the original ADAC XML geometry element, while the “adac_geometry_parent” trait identifies the geometry’s parent.
Data not explicitly defined in the ADAC schema is supported in the ADAC XML via the “OtherData” asset model. This <OtherData> asset model element can contain one or more <Layer> child elements, and each <Layer> can contain one or more <Object> elements. The FME ADAC reader maps these <Object>s into a single “Object” feature type.
All FME ADAC “Object” features carry a “LayerName” attribute which identifies its original <Layer> container in the XML document. An “Object” feature can be a point, line, area, text geometry, or an aggregate of these geometries.
An <Object> element may have zero or more <ComponentInfo> child elements. The information for the first <ComponentInfo> element, as with the other predefined ADAC structures which can have at most one <ComponentInfo>, is represented in the FME ADAC feature by the following attributes:
“ComponentInfo InfrastructureCode”,
“ComponentInfo Status”,
“ComponentInfo Notes”, and
“ComponentInfo Supporting_Info”.
All of the above except for the “ComponentInfo Status” attribute have CSV values. Multiple <ComponentInfo> elements in a single layer are represented in the FME ADAC feature as a structure list attribute, except for the list indexing the representation is similar to the above:
“ComponentInfo{0}.InfrastructureCode”,
“ComponentInfo{0}.Status”,
“ComponentInfo{0}.Notes”, and
“ComponentInfo{0}.Supporting_Info”.
“ComponentInfo{1}.InfrastructureCode”,
“ComponentInfo{1}.Status”,
“ComponentInfo{1}.Notes”, and
“ComponentInfo{1}.Supporting_Info”.
Note: The ComponentInfo list attribute with index 0 is identical to the non-indexed set of ComponentInfo attributes.
ADAC v4
The ADAC XML reader parses the ADAC v4.0.0, v4.1.0, or v4.2.0 schema to determine the asset structures available to be read.
In ADAC v4 the FME feature type names also closely resemble, as in V3, the ADAC v4 XML element asset names. ADAC FME feature type names are whitespace separated combinations of theme and asset names. For example, the <Pit> asset in the <Stormwater> theme is mapped as the FME “Stormwater Pit” feature type.
Note: The <Pits> element, the element representing the feature class of stormwater pits, i.e., the parent element enclosing the <Pit> elements, is not part of the FME feature type.
Most non-geometrical child elements in an asset structure are non-repeating, these are mapped as simple, atomic FME attribute values. These elements are mapped as FME attributes with their name unchanged. For example, the simple type child element <PitNumber> of the <Pit> element is mapped as the “PitNumber” attribute of the “Stormwater Pit” feature.
Repeating non-geometrical child elements, i.e., those with maxOccurs greater than 1 or unbounded, such as the <SupportingFile> element, is mapped as a list attribute. The <SupportingFile> element is part of the <ComponentInfo> element, which is an element defined as a complex type, hence <SupportingFile> is mapped in FME as a nested list attribute, “ComponentInfo.SupportingFiles.SupportingFile{}”.
Non-geometric nested child elements, i.e., the complex type elements, of an asset structure are mapped differently from v3, in ADAC v4 these complex property elements are mapped as FME nested list attributes. For example, the <ChamberSize> complex type child element of the <Pit> element creates the following FME nested list attributes in a “Stormwater Pit” feature:
“ChamberSize.Rectangular.Length_mm”
“ChamberSize.Rectangular.Width_mm”
“ChamberSize.Circular.Diameter_mm”
“ChamberSize.Extended.Radius_mm”
“ChamberSize.Extended.Extension_mm”
The geometry for a feature is mapped from the various ADAC <Geometry> elements. Unlike ADAC v3, the assets data structure for ADAC v4 do not have multiple geometries.
Geometry
Note: ADAC v4 assets have exactly one geometry. The following applies only to ADAC v3.
ADAC v3 asset structures with multiple geometry elements are mapped into FME geometry aggregates.
FME geometry traits are used to help identify the original ADAC role. Two special geometry traits are assigned: the “adac_geometry” trait identifies the original ADAC XML geometry element, while the “adac_geometry_parent” trait identifies the geometry’s parent. The values for these two traits are their respective ADAC XML element names.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Feature Type: Stormwater ManholePit' Attribute(encoded: utf-16): ChamberConstruction' has value Precast' Attribute(encoded: utf-16): ChamberSize Circular Diameter' has value 1050' Attribute(encoded: utf-16): Construction Date' has value 2007-04-14' Attribute(encoded: utf-16): Drawing Number' has value B02166-C66' Attribute(encoded: utf-16): FireRetardant' has value false' Attribute(encoded: utf-16): InletStructure Depth_m' has value 1.35' Attribute(encoded: utf-16): InletStructure InvertLevel_m' has value 6.030' Attribute(encoded: utf-16): InletStructure LidType' has value CIRC CAST IRON' Attribute(encoded: utf-16): InletStructure PitNumber' has value 13/8' Attribute(encoded: utf-16): InletStructure SurfaceLevel_m' has value 7.380' Attribute(encoded: utf-16): OutletType' has value Dry' Attribute(encoded: utf-16): Owner' has value Council' Attribute(encoded: utf-16): Project Name' has value ' Attribute(encoded: utf-16): Use' has value Manhole' Attribute(string) : fme_geometry' has value fme_aggregate' Attribute(string) : fme_type' has value fme_point' Attribute(string) : xml_type' has value xml_aggregate' Coordinate System: ' Geometry Type: IFMEAggregate Number of Geometries: 2 -------------------------------------- Geometry Number: 0 Geometry Type: IFMEPoint Number of Geometry Traits: 2 GeometryTrait(encoded: utf-16): adac_geometry' has value Location' GeometryTrait(encoded: utf-16): adac_geometry_parent' has value InletStructure' Coordinate Dimension: 3 (529958.46299999999,6942011.182,0) -------------------------------------- Geometry Number: 1 Geometry Type: IFMEPoint Number of Geometry Traits: 2 GeometryTrait(encoded: utf-16): adac_geometry' has value Location' GeometryTrait(encoded: utf-16): adac_geometry_parent' has value ManholePit' Coordinate Dimension: 3 (529958.46299999999,6942011.182,0) ========================================================================
The ADAC v3 <ManholePit> element has two descendant <Location> elements, one is an immediate child element, while the other grandchild element. In the above example, the “adac_geometry_parent” trait on the point geometries can be used to identify the geometry’s original role in the ADAC XML document, the first location refers to the <InletStructure> element, while the second refers to the <ManholePit> element.
Mapped rotated point geometries include an additional “Rotation” trait, illustrated by the log of the following “Water Valve” feature:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Feature Type: Water Valve' Attribute(encoded: utf-16): Construction Date' has value 2007-04-14' Attribute(encoded: utf-16): Drawing Number' has value B02166-C66' Attribute(encoded: utf-16): Owner' has value Council' Attribute(encoded: utf-16): Project Name' has value ' Attribute(encoded: utf-16): Size_mm' has value 150' Attribute(encoded: utf-16): Type' has value Gate' Attribute(encoded: utf-16): Use' has value Control' Attribute(string) : fme_geometry' has value fme_point' Attribute(string) : fme_type' has value fme_point' Attribute(string) : xml_type' has value xml_point' Coordinate System: ' Geometry Type: IFMEPoint Number of Geometry Traits: 3 GeometryTrait(encoded: utf-16): Rotation' has value 83.496' GeometryTrait(encoded: utf-16): adac_geometry' has value Location' GeometryTrait(encoded: utf-16): adac_geometry_parent' has value Valve' Coordinate Dimension: 3 (529952.79399999999,6942138.1310000001,0) ========================================================================
The geometry for ADAC v3 and v4 features may be identified by the xml_type attribute. The valid values for this attribute are:
xml_type |
Description |
xml_no_geom |
FME Feature with no geometry. |
xml_point |
Point geometry. |
xml_line |
Linear geometry. |
xml_area |
Simple polygon geometry |
xml_text |
Annotation geometry |
xml_aggregate |
An aggregate of the above geometries. |
xml_type: xml_no_geom
Features with their xml_type attribute set to xml_no_geom do not contain any geometry data.
xml_type: xml_point
Features with their xml_type set to xml_point are single coordinate features or an aggregate of single points.
xml_type: xml_line
Features with their xml_type set to xml_line are polyline features or an aggregate of polylines.
xml_type: xml_polygon
Features with their xml_type set to xml_polygon are polygon features which may or may not have interior boundaries, or an aggregate of such polygons.
xml_type: xml_text
Features with their xml_type set to xml_text are feature with annotation geometry. The text geometry is mapped from the ADAC “annotation_geometry” complex type. The “annotation_geometry” components: <Text>, <Location>, including its <Rotation>, and <Height_m> are loaded into the FME text geometry’s “text string”, “point geometry”, “text rotation”, and “text height”, respectively, other “annotation_geometry” child elements, such as “Justification”, “FontName” and “Width_m”, do not map cleanly into the FME text geometry and are thus mapped as geometry traits.
The following is an ADAC “Object” feature with an annotation geometry. Notice that all of the “annotation_geometry” components, such as <Text>, <Rotation>, <FontName>, etc. are also represented as geometry traits:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Feature Type: Object'
Attribute(encoded: utf-16) : Construction Date' has value '
Attribute(encoded: utf-16) : Drawing Number' has value '
Attribute(encoded: utf-16) : LayerName' has value CADASTRE_CANCELLED_LOTPLAN'
Attribute(encoded: utf-16) : Owner' has value Council'
Attribute(encoded: utf-16) : Project Name' has value Test.dwg'
Attribute(string) : fme_geometry' has value fme_point'
Attribute(indirect: 64 bit real) : fme_rotation' has value 81'
Attribute(indirect: 64 bit real) : fme_text_size' has value 1.5'
Attribute(indirect: encoded: utf-16): fme_text_string' has value My Annotated text.'
Attribute(string) : fme_type' has value fme_text'
Attribute(64 bit real) : xml_rotation' has value 81'
Attribute(64 bit real) : xml_text_size' has value 1.5'
Attribute(encoded: utf-16) : xml_text_string' has value My Annotated text.'
Attribute(string) : xml_type' has value xml_text'
Coordinate System: '
Geometry Type: IFMEText
Number of Geometry Traits: 8
GeometryTrait(encoded: utf-16): FontName' has value Consolas'
GeometryTrait(encoded: utf-16): Height_m' has value 1.5'
GeometryTrait(encoded: utf-16): Justification' has value Left-Bottom'
GeometryTrait(encoded: utf-16): Rotation' has value 81'
GeometryTrait(encoded: utf-16): Text' has value My Annotated text.'
GeometryTrait(encoded: utf-16): Width_m' has value 2.0'
GeometryTrait(encoded: utf-16): adac_geometry' has value Annotation'
GeometryTrait(encoded: utf-16): adac_geometry_parent' has value Object'
Text String: My Annotated text.
Text Size: 1.5
Text Rotation (degrees CCW): 81
Geometry Type: IFMEPoint
Number of Geometry Traits: 2
GeometryTrait(encoded: utf-16): adac_geometry' has value InsertionPoint'
GeometryTrait(encoded: utf-16): adac_geometry_parent' has value Location'
Coordinate Dimension: 3
(511337.43646974798,7033866.8198164497,0)
========================================================================
xml_type: xml_aggregate
Features with their xml_type set to xml_aggregate are aggregate features whose members maybe point, line, area, annotation or aggregate geometries.