xml-aggregate

The xml-aggregate geometry builder builds aggregate objects. This builder does not require any data parameters, so the only way for it to build an aggregate geometry is from existing geometry objects. This means that before the xml-aggregate builder is de-activated, other geometry builders should have been activated and de-activated, moreover, their constructed geometries should have been passed to it.

builder type: composite - accepts any type of geometry.

geometry constructed: aggregate.

data parameters:

Data Name Value

Required/Optional

xml_type

This data parameter applies only if an aggregate was constructed. This data parameter sets the xml_type for the feature under construction. Note that this xml_type may be overwritten by geometry builders or attribute rules from mapping rules that are activated before the one containing the activation of the current aggregate builder.

Range: xml_point | xml_line | xml_area | xml_aggregate

Default: xml_aggregate

Optional

keep-as-aggregate

When the value for this data parameter is set to “false” and the xml-aggregate geometry consists solely of one feature, then an aggregate geometry will not be constructed.

Range: false | true

Default: true

Optional

allow-empty-aggregate

This data parameter determines if an aggregate with zero components should be returned.

Range: true | false

Default: false

Optional
contains-individual-geometries

When the value for this data parameter is set to “true” then a flag will be set on the aggregate signaling that the aggregate is merely a placeholder containing individually named geometries; e.g., in a destination system each named geometry component may be interpreted as a separate geometry column in a table.

Range: false | true

Default: false

Optional

coordinate-system

Specifies the coordinate system name. If the expression sequence for the coordinate-system evaluates to the empty string, then the coordinate system for the feature being built will not be set.

Range: String

Optional

name

Specifies the geometry’s name.

Range: String

Optional

The following example shows how the xml-aggregate geometry builder is used in the xml_aggregate.xmp to construct a geometry that is an aggregate of point geometries. The previous, points1.xml, is used as the input XML document and is reproduced below for convenience:

points1.xml

<?xml version="1.0"?>
<points>
	<point name="myPoint" num="0">
		<color>
			<red>0.324</red>
			<green>0.233</green>
			<blue>0.596</blue>
		</color>
		<location x="10.0" y="0.0"/>
	</point>
	<point name="myPoint" num="1">
		<color>
			<red>0.874</red>
			<green>0.948</green>
			<blue>0.554</blue>
		</color>
		<location x="5.0" y="5.0"/>
	</point>
</points>

xml_aggregate.xmp

<?xml version="1.0?>
<!DOCTYPE xfMap SYSTEM "xfMap.dtd">

<xfMap>
	<feature-map>
		<mapping match="points">
			<feature-type> <literal expr="points"/> </feature-type>
			<!-- This geometry builder integrates all the 
				geometries that it receives into one aggregate 
				geometry -->
			<geometry activate="xml-aggregate">
		      <data name="xml_type">
					<literal expr="xml_point"/>
			   </data>				
       </geometry>
		</mapping>
	</feature-map>

	<feature-content-map>
		<mapping match="point">
			<geometry activate="xml-point">
				<data name="data-string">
					<extract expr="./location[@x]"/>
					<literal expr=","/>
					<extract expr="./location[@y]"/>
				</data>
			</geometry>
		</mapping>
	</feature-content-map>
</xfMap>

FME feature constructed:

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Feature Type: points'
Attribute: fme_geometry' has value fme_aggregate'
Attribute: xml_type' has value xml_point'
Geometry Type: Aggregate (512)
Total Number of Coords: 2 -- Coordinate Dimension: 2 -- Coordinate System: '
Number of Aggregate Parts: 2
---------------------------------------------------------------------------
Geometry Type: Point (1) -- Part Number: 0 -- Number of Coordinates: 1
(10,0)
---------------------------------------------------------------------------
Geometry Type: Point (1) -- Part Number: 1 -- Number of Coordinates: 1
(5,5)
===========================================================================