Australian Asset Design and As Constructed (ADAC) 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 counterparts. The non-geometrical, non-repeating, and non-nested child elements (that is, 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 (that is , 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
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 structured list attribute:
ComponentInfo{0}.InfrastructureCode
ComponentInfo{0}.Status
ComponentInfo{0}.Notes
ComponentInfo{0}.Supporting_Info
ComponentInfo{1}.InfrastructureCode
ComponentInfo{1}.Status
ComponentInfo{1}.Notes
ComponentInfo{1}.Supporting_Info
ADAC v4 and v5
The ADAC XML reader parses the ADAC v5.0.0, v5.0.1, v4.0.0, v4.1.0, or v4.2.0 schema to determine the asset structures available to be read.
In ADAC v4 and v5, the FME feature type names also closely resemble, as in v3, the ADAC v4 and v5 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.
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 (that is, those with maxOccurs greater than 1 or unbounded) such as the <SupportingFile> element are mapped as list attributes. 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 (that is, the complex type elements) of an asset structure are mapped differently from v3: in ADAC v4 and v5, 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 structures for ADAC v4 and v5 do not have multiple geometries.
Geometry
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, v4, and v5 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.