XML Schema "geometryPrimitives.xsd"
Target Namespace:
Version:
3.2.1.2
Defined Components:
elements (44 global + 37 local), complexTypes (44), simpleTypes (3), element groups (1)
Default Namespace-Qualified Form:
Local Elements: qualified; Local Attributes: unqualified
Schema Location:
http://schemas.opengis.net/gml/3.2.1/geometryPrimitives.xsd; see XML source
Includes Schemas (2):
Included in Schemas (1):
Annotation
See ISO/DIS 19136 Clause 11. Beside the "simple" geometric primitives specified in the previous Clause, this Clause specifies additional primitives to describe real world situations which require a more expressive geometry model. GML is an OGC Standard. Copyright (c) 2007,2010 Open Geospatial Consortium. To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .
All Element Summary (local elements unified by type)
A curve segment defines a homogeneous segment of a curve.
Type:
Content:
empty, 3 attributes
Abstract:
(may not be used directly in instance XML documents)
Subst.Gr:
affiliated to substitution group gml:AbstractObject; may be substituted with 15 elements
Defined:
globally; see XML source
Used:
at 10 locations
if provided, rows gives the number of rows, columns the number of columns in the parameter grid.
Type:
Content:
complex, 3 attributes, 1 element
Abstract:
(may not be used directly in instance XML documents)
Subst.Gr:
affiliated to substitution group gml:AbstractParametricCurveSurface; may be substituted with 3 elements
Defined:
globally; see XML source
Used:
The element provides a substitution group head for the surface patches based on parametric curves.
Type:
Content:
empty, 1 attribute
Abstract:
(may not be used directly in instance XML documents)
Subst.Gr:
affiliated to substitution group gml:AbstractSurfacePatch; may be substituted with 3 elements
Defined:
globally; see XML source
Used:
The AbstractSolid element is the abstract head of the substituition group for all (continuous) solid elements.
Type:
Content:
complex, 5 attributes, 5 elements
Abstract:
(may not be used directly in instance XML documents)
Subst.Gr:
affiliated to substitution group gml:AbstractGeometricPrimitive; may be substituted with 2 elements
Defined:
globally; see XML source
Used:
A surface patch defines a homogenuous portion of a surface.
Type:
Content:
empty
Abstract:
(may not be used directly in instance XML documents)
Subst.Gr:
may be substituted with 6 elements
Defined:
globally; see XML source
Used:
location, refDirection, inDimension and outDimension have the same meaning as specified in ISO 19107:2003, 6.4.21.
Type:
Content:
complex, 4 elements
Subst.Gr:
may substitute for element gml:AbstractObject
Defined:
globally; see XML source
Used:
An Arc is an arc string with only one arc unit, i.e. three control points including the start and end point.
Type:
Content:
complex, 5 attributes, 5 elements
Subst.Gr:
may substitute for elements: gml:ArcString, gml:AbstractCurveSegment, gml:AbstractObject; may be substituted with 1 element
Defined:
globally; see XML source
Used:
An ArcByBulge is an arc string with only one arc unit, i.e. two control points, one bulge and one normal vector.
Type:
Content:
complex, 5 attributes, 7 elements
Subst.Gr:
Defined:
globally; see XML source
Used:
never
This variant of the arc requires that the points on the arc shall be computed instead of storing the coordinates directly.
Type:
Content:
complex, 5 attributes, 8 elements
Subst.Gr:
may substitute for elements: gml:AbstractCurveSegment, gml:AbstractObject; may be substituted with 1 element
Defined:
globally; see XML source
Used:
An ArcString is a curve segment that uses three-point circular arc interpolation ("circularArc3Points").
Type:
Content:
complex, 5 attributes, 5 elements
Subst.Gr:
may substitute for elements: gml:AbstractCurveSegment, gml:AbstractObject; may be substituted with 2 elements
Defined:
globally; see XML source
Used:
This variant of the arc computes the mid points of the arcs instead of storing the coordinates directly.
Type:
Content:
complex, 5 attributes, 7 elements
Subst.Gr:
may substitute for elements: gml:AbstractCurveSegment, gml:AbstractObject; may be substituted with 1 element
Defined:
globally; see XML source
Used:
The property baseCurve references or contains the base curve, i.e. it either references the base curve via the XLink-attributes or contains the curve element.
Type:
Content:
complex, 10 attributes, 1 element
Defined:
globally; see XML source
Used:
The property baseSurface references or contains the base surface.
Type:
Content:
complex, 10 attributes, 1 element
Defined:
globally; see XML source
Used:
Bezier curves are polynomial splines that use Bezier or Bernstein polynomials for interpolation purposes.
Type:
Content:
complex, 5 attributes, 7 elements
Subst.Gr:
Defined:
globally; see XML source
Used:
never
Type:
Content:
complex, 1 element
Defined:
locally within gml:TinType complexType; see XML source
A B-Spline is a piecewise parametric polynomial or rational curve described in terms of control points and basis functions as specified in ISO 19107:2003, 6.4.30.
Type:
Content:
complex, 6 attributes, 7 elements
Subst.Gr:
may substitute for elements: gml:AbstractCurveSegment, gml:AbstractObject; may be substituted with 1 element
Defined:
globally; see XML source
Used:
gml:bulge (type double)
Type:
double
Content:
simple
Defined:
locally at 2 locations
A Circle is an arc whose ends coincide to form a simple closed loop.
Type:
Content:
complex, 5 attributes, 5 elements
Subst.Gr:
Defined:
globally; see XML source
Used:
never
A gml:CircleByCenterPoint is an gml:ArcByCenterPoint with identical start and end angle to form a full circle.
Type:
Content:
complex, 5 attributes, 6 elements
Subst.Gr:
Defined:
globally; see XML source
Used:
never
A clothoid, or Cornu's spiral, is plane curve whose curvature is a fixed function of its length. refLocation, startParameter, endParameter and scaleFactor have the same meaning as specified in ISO 19107:2003, 6.4.22. interpolation is fixed as "clothoid".
Type:
Content:
complex, 4 attributes, 4 elements
Subst.Gr:
may substitute for elements: gml:AbstractCurveSegment, gml:AbstractObject
Defined:
globally; see XML source
Used:
never
Type:
Content:
complex, 5 attributes, 1 element
Subst.Gr:
Defined:
globally; see XML source
Used:
never
Type:
anonymous complexType
Content:
complex, 3 elements
Defined:
locally within gml:TinType complexType; see XML source
Includes:
definition of 1 element
The number of control points shall be at least three. vectorAtStart is the unit tangent vector at the start point of the spline. vectorAtEnd is the unit tangent vector at the end point of the spline.
Type:
Content:
complex, 5 attributes, 7 elements
Subst.Gr:
may substitute for elements: gml:AbstractCurveSegment, gml:AbstractObject
Defined:
globally; see XML source
Used:
never
A curve is a 1-dimensional primitive.
Type:
Content:
complex, 5 attributes, 6 elements
Subst.Gr:
Defined:
globally; see XML source
Used:
never
Type:
Content:
complex, 10 attributes, 1 element
Defined:
globally; see XML source
Used:
Type:
Content:
complex, 5 attributes, 1 element
Subst.Gr:
Defined:
globally; see XML source
Used:
never
gml:degree (type nonNegativeInteger)
Type:
nonNegativeInteger
Content:
simple
Defined:
locally at 2 locations
Type:
Content:
simple, 1 attribute
Defined:
locally within gml:OffsetCurveType complexType; see XML source
Type:
Content:
simple, 1 attribute
Defined:
Type:
double
Content:
simple
Defined:
locally within gml:ClothoidType complexType; see XML source
Type:
Content:
complex, 1 element
Defined:
locally within gml:SolidType complexType; see XML source
Type:
Content:
complex, 4 attributes, 3 elements
Subst.Gr:
Defined:
globally; see XML source
Used:
never
A sequence of geodesic segments.
Type:
Content:
complex, 4 attributes, 3 elements
Subst.Gr:
may substitute for elements: gml:AbstractCurveSegment, gml:AbstractObject; may be substituted with 1 element
Defined:
globally; see XML source
Used:
Type:
positiveInteger
Content:
simple
Defined:
Type:
Content:
complex, 1 element
Defined:
locally within gml:SolidType complexType; see XML source
A knot is a breakpoint on a piecewise spline curve. value is the value of the parameter at the knot of the spline (see ISO 19107:2003, 6.4.24.2). multiplicity is the multiplicity of this knot used in the definition of the spline (with the same weight). weight is the value of the averaging weight used for this knot of the spline.
Type:
Content:
complex, 3 elements
Defined:
locally within gml:KnotPropertyType complexType; see XML source
Type:
Content:
complex, 1 element
Defined:
locally at 2 locations
A LineStringSegment is a curve segment that is defined by two or more control points including the start and end point, with linear interpolation between them.
Type:
Content:
complex, 4 attributes, 5 elements
Subst.Gr:
may substitute for elements: gml:AbstractCurveSegment, gml:AbstractObject
Defined:
globally; see XML source
Used:
Type:
Content:
simple, 4 attributes
Defined:
Type:
Content:
simple, 1 attribute
Defined:
locally within gml:TinType complexType; see XML source
Type:
nonNegativeInteger
Content:
simple
Defined:
locally within gml:KnotType complexType; see XML source
Type:
Content:
simple, 4 attributes
Defined:
locally at 2 locations
Type:
Content:
complex, 10 attributes, 1 element
Defined:
locally within gml:OffsetCurveType complexType; see XML source
An offset curve is a curve at a constant distance from the basis curve. offsetBase is the base curve from which this curve is defined as an offset. distance and refDirection have the same meaning as specified in ISO 19107:2003, 6.4.23.
Type:
Content:
complex, 3 attributes, 3 elements
Subst.Gr:
may substitute for elements: gml:AbstractCurveSegment, gml:AbstractObject
Defined:
globally; see XML source
Used:
never
OrientableCurve consists of a curve and an orientation.
Type:
Content:
complex, 6 attributes, 6 elements
Subst.Gr:
Defined:
globally; see XML source
Used:
never
OrientableSurface consists of a surface and an orientation.
Type:
Content:
complex, 6 attributes, 6 elements
Subst.Gr:
Defined:
globally; see XML source
Used:
never
Type:
positiveInteger
Content:
simple
Defined:
The patches property element contains the sequence of surface patches.
Type:
Content:
complex, 1 element
Subst.Gr:
may be substituted with 2 elements
Defined:
globally; see XML source
Used:
A gml:PolygonPatch is a surface patch that is defined by a set of boundary curves and an underlying surface to which these curves adhere.
Type:
Content:
complex, 1 attribute, 2 elements
Subst.Gr:
may substitute for element gml:AbstractSurfacePatch
Defined:
globally; see XML source
Used:
never
A polyhedral surface is a surface composed of polygon patches connected along their common boundary curves.
Type:
Content:
complex, 5 attributes, 6 elements
Subst.Gr:
Defined:
globally; see XML source
Used:
never
Type:
Content:
simple, 1 attribute
Defined:
locally at 2 locations
gml:Rectangle represents a rectangle as a surface patch with an outer boundary consisting of a linear ring.
Type:
Content:
complex, 1 attribute, 1 element
Subst.Gr:
may substitute for element gml:AbstractSurfacePatch
Defined:
globally; see XML source
Used:
never
Type:
Content:
simple, 4 attributes
Defined:
locally at 2 locations
Type:
anonymous complexType
Content:
complex, 1 element
Defined:
locally within gml:ClothoidType complexType; see XML source
Includes:
definition of 1 element
A ring is used to represent a single connected component of a surface boundary as specified in ISO 19107:2003, 6.3.6.
Type:
Content:
complex, 1 attribute, 1 element
Subst.Gr:
may substitute for elements: gml:AbstractRing, gml:AbstractObject
Defined:
globally; see XML source
Used:
Type:
anonymous complexType
Content:
complex, 3 elements
Defined:
locally within gml:rows element; see XML source
gml:rows (defined in gml:PointGrid group)
Type:
anonymous complexType
Content:
complex, 1 element
Defined:
locally within gml:PointGrid group; see XML source
Includes:
definition of 1 element
Type:
decimal
Content:
simple
Defined:
locally within gml:ClothoidType complexType; see XML source
This property element contains a list of curve segments.
Type:
Content:
complex, 1 element
Defined:
globally; see XML source
Used:
A shell is used to represent a single connected component of a solid boundary as specified in ISO 19107:2003, 6.3.8.
Type:
Content:
complex, 1 attribute, 1 element
Subst.Gr:
may substitute for element gml:AbstractObject
Defined:
globally; see XML source
Used:
A solid is the basis for 3-dimensional geometry.
Type:
Content:
complex, 5 attributes, 7 elements
Subst.Gr:
Defined:
globally; see XML source
Used:
never
This property element either references a solid via the XLink-attributes or contains the solid element. solidProperty is the predefined property which may be used by GML Application Schemas whenever a GML feature has a property with a value that is substitutable for AbstractSolid.
Type:
Content:
complex, 10 attributes, 1 element
Defined:
globally; see XML source
Used:
Type:
Content:
complex, 5 attributes, 1 element
Subst.Gr:
Defined:
globally; see XML source
Used:
never
Type:
Content:
simple, 1 attribute
Defined:
Type:
double
Content:
simple
Defined:
locally within gml:ClothoidType complexType; see XML source
Type:
Content:
complex, 1 element
Defined:
locally within gml:TinType complexType; see XML source
A Surface is a 2-dimensional primitive and is composed of one or more surface patches as specified in ISO 19107:2003, 6.3.17.1.
Type:
Content:
complex, 5 attributes, 6 elements
Subst.Gr:
may substitute for elements: gml:AbstractSurface, gml:AbstractGeometricPrimitive, gml:AbstractGeometry, gml:AbstractGML, gml:AbstractObject; may be substituted with 3 elements
Defined:
globally; see XML source
Used:
This property element either references a surface via the XLink-attributes or contains the surface element.
Type:
Content:
complex, 10 attributes, 1 element
Defined:
globally; see XML source
Used:
A tin is a triangulated surface that uses the Delauny algorithm or a similar algorithm complemented with consideration of stoplines (stopLines), breaklines (breakLines), and maximum length of triangle sides (maxLength). controlPoint shall contain a set of the positions (three or more) used as posts for this TIN (corners of the triangles in the TIN).
Type:
Content:
complex, 5 attributes, 10 elements
Subst.Gr:
Defined:
globally; see XML source
Used:
never
gml:Triangle represents a triangle as a surface patch with an outer boundary consisting of a linear ring.
Type:
Content:
complex, 1 attribute, 1 element
Subst.Gr:
may substitute for element gml:AbstractSurfacePatch
Defined:
globally; see XML source
Used:
never
A triangulated surface is a polyhedral surface that is composed only of triangles.
Type:
Content:
complex, 5 attributes, 6 elements
Subst.Gr:
Defined:
globally; see XML source
Used:
Type:
double
Content:
simple
Defined:
locally within gml:KnotType complexType; see XML source
Type:
Content:
simple, 4 attributes
Defined:
locally within gml:CubicSplineType complexType; see XML source
Type:
Content:
simple, 4 attributes
Defined:
locally within gml:CubicSplineType complexType; see XML source
Type:
double
Content:
simple
Defined:
locally within gml:KnotType complexType; see XML source
Complex Type Summary
Content:
empty, 3 attributes
Abstract:
(cannot be assigned directly to elements used in instance XML documents)
Defined:
globally; see XML source
Includes:
definitions of 3 attributes
Used:
at 10 locations
Content:
complex, 3 attributes, 1 element
Abstract:
(cannot be assigned directly to elements used in instance XML documents)
Defined:
globally; see XML source
Includes:
definitions of 2 attributes
Used:
Content:
empty, 1 attribute
Abstract:
(cannot be assigned directly to elements used in instance XML documents)
Defined:
globally; see XML source
Used:
gml:AbstractSolidType is an abstraction of a solid to support the different levels of complexity.
Content:
complex, 5 attributes, 5 elements
Defined:
globally; see XML source
Used:
Content:
empty
Abstract:
(cannot be assigned directly to elements used in instance XML documents)
Defined:
globally; see XML source
Used:
Content:
complex, 4 elements
Defined:
globally; see XML source
Includes:
definitions of 4 elements
Used:
Content:
complex, 5 attributes, 7 elements
Defined:
globally; see XML source
Includes:
definitions of 1 attribute, 7 elements
Used:
Content:
complex, 5 attributes, 8 elements
Defined:
globally; see XML source
Includes:
definitions of 2 attributes, 8 elements
Used:
Content:
complex, 5 attributes, 7 elements
Defined:
globally; see XML source
Includes:
definitions of 2 attributes, 7 elements
Used:
Content:
complex, 5 attributes, 5 elements
Defined:
globally; see XML source
Includes:
definitions of 2 attributes, 5 elements
Used:
Content:
complex, 5 attributes, 5 elements
Defined:
globally; see XML source
Includes:
definitions of 1 attribute, 5 elements
Used:
Content:
complex, 5 attributes, 7 elements
Defined:
globally; see XML source
Includes:
definitions of 2 attributes, 7 elements; 1 attr. probition
Used:
Content:
complex, 6 attributes, 7 elements
Defined:
globally; see XML source
Includes:
definitions of 3 attributes, 7 elements
Used:
Content:
complex, 5 attributes, 6 elements
Defined:
globally; see XML source
Includes:
definitions of 6 elements
Used:
Content:
complex, 5 attributes, 5 elements
Defined:
globally; see XML source
Used:
Content:
complex, 4 attributes, 4 elements
Defined:
globally; see XML source
Includes:
definitions of 1 attribute, 4 elements
Used:
Content:
complex, 5 attributes, 1 element
Defined:
globally; see XML source
Includes:
definitions of 2 attributes
Used:
Content:
complex, 5 attributes, 7 elements
Defined:
globally; see XML source
Includes:
definitions of 2 attributes, 7 elements
Used:
gml:CurveSegmentArrayPropertyType is a container for an array of curve segments.
Content:
complex, 1 element
Defined:
globally; see XML source
Includes:
definition of 1 element
Used:
Content:
complex, 5 attributes, 6 elements
Defined:
globally; see XML source
Includes:
definition of 1 element
Used:
Content:
complex, 5 attributes, 1 element
Defined:
globally; see XML source
Includes:
definitions of 2 attributes
Used:
Content:
complex, 4 attributes, 3 elements
Defined:
globally; see XML source
Includes:
definitions of 1 attribute, 1 element
Used:
Content:
complex, 4 attributes, 3 elements
Defined:
globally; see XML source
Used:
gml:KnotPropertyType encapsulates a knot to use it in a geometric type.
Content:
complex, 1 element
Defined:
globally; see XML source
Includes:
definition of 1 element
Used:
Content:
complex, 3 elements
Defined:
globally; see XML source
Includes:
definitions of 3 elements
Used:
gml:LineStringSegmentArrayPropertyType provides a container for line strings.
Content:
complex, 1 element
Defined:
globally; see XML source
Includes:
definition of 1 element
Used:
Content:
complex, 4 attributes, 5 elements
Defined:
globally; see XML source
Includes:
definitions of 1 attribute, 5 elements
Used:
Content:
complex, 3 attributes, 3 elements
Defined:
globally; see XML source
Includes:
definitions of 3 elements
Used:
Content:
complex, 6 attributes, 6 elements
Defined:
globally; see XML source
Includes:
definitions of 1 attribute, 1 element
Used:
Content:
complex, 6 attributes, 6 elements
Defined:
globally; see XML source
Includes:
definitions of 1 attribute, 1 element
Used:
Content:
complex, 1 attribute, 2 elements
Defined:
globally; see XML source
Includes:
definitions of 1 attribute, 2 elements
Used:
Content:
complex, 1 attribute, 1 element
Defined:
globally; see XML source
Includes:
definitions of 1 attribute, 1 element
Used:
A property with the content model of gml:RingPropertyType encapsulates a ring to represent a component of a surface boundary.
Content:
complex, 1 element
Defined:
globally; see XML source
Includes:
definition of 1 element
Used:
never
Content:
complex, 1 attribute, 1 element
Defined:
globally; see XML source
Includes:
definition of 1 element
Used:
A property with the content model of gml:ShellPropertyType encapsulates a shell to represent a component of a solid boundary.
Content:
complex, 1 element
Defined:
globally; see XML source
Includes:
definition of 1 element
Used:
Content:
complex, 1 attribute, 1 element
Defined:
globally; see XML source
Includes:
definition of 1 element
Used:
gml:SolidArrayPropertyType is a container for an array of solids.
Content:
complex, 1 attribute, 1 element
Defined:
globally; see XML source
Includes:
definition of 1 element
Used:
A property that has a solid as its value domain may either be an appropriate geometry element encapsulated in an element of this type or an XLink reference to a remote geometry element (where remote includes geometry elements located elsewhere in the same document).
Content:
complex, 10 attributes, 1 element
Defined:
globally; see XML source
Includes:
definition of 1 element
Used:
Content:
complex, 5 attributes, 7 elements
Defined:
globally; see XML source
Includes:
definitions of 2 elements
Used:
Content:
complex, 5 attributes, 1 element
Defined:
globally; see XML source
Includes:
definitions of 2 attributes
Used:
gml:SurfacePatchArrayPropertyType is a container for a sequence of surface patches.
Content:
complex, 1 element
Defined:
globally; see XML source
Includes:
definition of 1 element
Used:
Content:
complex, 5 attributes, 6 elements
Defined:
globally; see XML source
Includes:
definition of 1 element
Used:
Content:
complex, 5 attributes, 10 elements
Defined:
globally; see XML source
Includes:
definitions of 4 elements
Used:
Content:
complex, 1 attribute, 1 element
Defined:
globally; see XML source
Includes:
definitions of 1 attribute, 1 element
Used:
Simple Type Summary
gml:CurveInterpolationType is a list of codes that may be used to identify the interpolation mechanisms specified by an application schema.
Defined:
globally; see XML source
Used:
at 15 locations
This enumeration type specifies values for the knots' type (see ISO 19107:2003, 6.4.25).
Defined:
globally; see XML source
Used:
gml:SurfaceInterpolationType is a list of codes that may be used to identify the interpolation mechanisms specified by an application schema.
Defined:
globally; see XML source
Used:
Element Group Summary
A gml:PointGrid group contains or references points or positions which are organised into sequences or grids.
Content:
Defined:
globally; see XML source
Includes:
definition of 1 element
Used:
XML Source
<?xml version="1.0" encoding="UTF-8"?>
<schema elementFormDefault="qualified" targetNamespace="http://www.opengis.net/gml/3.2" version="3.2.1.2" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:gml="http://www.opengis.net/gml/3.2" xmlns:xlink="http://www.w3.org/1999/xlink">
<annotation>
<appinfo source="urn:x-ogc:specification:gml:schema-xsd:geometryPrimitives:3.2.1">geometryPrimitives.xsd</appinfo>
<documentation>
See ISO/DIS 19136 Clause 11.
Beside the "simple" geometric primitives specified in the previous Clause, this Clause specifies additional primitives to describe real world situations which require a more expressive geometry model.

GML is an OGC Standard.
Copyright (c) 2007,2010 Open Geospatial Consortium.
To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .
</documentation>
</annotation>
<include schemaLocation="gml.xsd"/>
<include schemaLocation="geometryBasic2d.xsd"/>
<complexType name="CurveType">
<complexContent>
<extension base="gml:AbstractCurveType">
<sequence>
<element ref="gml:segments"/>
</sequence>
</extension>
</complexContent>
</complexType>
<element name="Curve" substitutionGroup="gml:AbstractCurve" type="gml:CurveType">
<annotation>
<documentation>
A curve is a 1-dimensional primitive. Curves are continuous, connected, and have a measurable length in terms of the coordinate system.
A curve is composed of one or more curve segments. Each curve segment within a curve may be defined using a different interpolation method. The curve segments are connected to one another, with the end point of each segment except the last being the start point of the next segment in the segment list.
The orientation of the curve is positive.
The element segments encapsulates the segments of the curve.
</documentation>
</annotation>
</element>
<complexType name="OrientableCurveType">
<complexContent>
<extension base="gml:AbstractCurveType">
<sequence>
<element ref="gml:baseCurve"/>
</sequence>
<attribute default="+" name="orientation" type="gml:SignType"/>
</extension>
</complexContent>
</complexType>
<element name="baseCurve" type="gml:CurvePropertyType">
<annotation>
<documentation>
The property baseCurve references or contains the base curve, i.e. it either references the base curve via the XLink-attributes or contains the curve element. A curve element is any element which is substitutable for AbstractCurve. The base curve has positive orientation.
</documentation>
</annotation>
</element>
<element name="OrientableCurve" substitutionGroup="gml:AbstractCurve" type="gml:OrientableCurveType">
<annotation>
<documentation>
OrientableCurve consists of a curve and an orientation. If the orientation is "+", then the OrientableCurve is identical to the baseCurve. If the orientation is "-", then the OrientableCurve is related to another AbstractCurve with a parameterization that reverses the sense of the curve traversal.
</documentation>
</annotation>
</element>
<complexType abstract="true" name="AbstractCurveSegmentType">
<attribute default="0" name="numDerivativesAtStart" type="integer"/>
<attribute default="0" name="numDerivativesAtEnd" type="integer"/>
<attribute default="0" name="numDerivativeInterior" type="integer"/>
</complexType>
<element abstract="true" name="AbstractCurveSegment" substitutionGroup="gml:AbstractObject" type="gml:AbstractCurveSegmentType">
<annotation>
<documentation>
A curve segment defines a homogeneous segment of a curve.
The attributes numDerivativesAtStart, numDerivativesAtEnd and numDerivativesInterior specify the type of continuity as specified in ISO 19107:2003, 6.4.9.3.
The AbstractCurveSegment element is the abstract head of the substituition group for all curve segment elements, i.e. continuous segments of the same interpolation mechanism.
All curve segments shall have an attribute interpolation with type gml:CurveInterpolationType specifying the curve interpolation mechanism used for this segment. This mechanism uses the control points and control parameters to determine the position of this curve segment.
</documentation>
</annotation>
</element>
<complexType name="CurveSegmentArrayPropertyType">
<annotation>
<documentation>
gml:CurveSegmentArrayPropertyType is a container for an array of curve segments.
</documentation>
</annotation>
<sequence maxOccurs="unbounded" minOccurs="0">
<element ref="gml:AbstractCurveSegment"/>
</sequence>
</complexType>
<annotation>
<documentation>
This property element contains a list of curve segments. The order of the elements is significant and shall be preserved when processing the array.
</documentation>
</annotation>
</element>
<simpleType name="CurveInterpolationType">
<annotation>
<documentation>
gml:CurveInterpolationType is a list of codes that may be used to identify the interpolation mechanisms specified by an application schema.
</documentation>
</annotation>
<restriction base="string">
<enumeration value="linear"/>
<enumeration value="geodesic"/>
<enumeration value="circularArc3Points"/>
<enumeration value="circularArc2PointWithBulge"/>
<enumeration value="circularArcCenterPointWithRadius"/>
<enumeration value="elliptical"/>
<enumeration value="clothoid"/>
<enumeration value="conic"/>
<enumeration value="polynomialSpline"/>
<enumeration value="cubicSpline"/>
<enumeration value="rationalSpline"/>
</restriction>
</simpleType>
<complexType name="LineStringSegmentType">
<complexContent>
<extension base="gml:AbstractCurveSegmentType">
<sequence>
<choice>
<choice maxOccurs="unbounded" minOccurs="2">
<element ref="gml:pos"/>
<element ref="gml:pointProperty"/>
<element ref="gml:pointRep"/>
</choice>
<element ref="gml:posList"/>
<element ref="gml:coordinates"/>
</choice>
</sequence>
<attribute fixed="linear" name="interpolation" type="gml:CurveInterpolationType"/>
</extension>
</complexContent>
</complexType>
<element name="LineStringSegment" substitutionGroup="gml:AbstractCurveSegment" type="gml:LineStringSegmentType">
<annotation>
<documentation>
A LineStringSegment is a curve segment that is defined by two or more control points including the start and end point, with linear interpolation between them.
The content model follows the general pattern for the encoding of curve segments.
</documentation>
</annotation>
</element>
<complexType name="ArcStringType">
<complexContent>
<extension base="gml:AbstractCurveSegmentType">
<sequence>
<choice>
<choice maxOccurs="unbounded" minOccurs="3">
<element ref="gml:pos"/>
<element ref="gml:pointProperty"/>
<element ref="gml:pointRep"/>
</choice>
<element ref="gml:posList"/>
<element ref="gml:coordinates"/>
</choice>
</sequence>
<attribute fixed="circularArc3Points" name="interpolation" type="gml:CurveInterpolationType"/>
<attribute name="numArc" type="integer"/>
</extension>
</complexContent>
</complexType>
<element name="ArcString" substitutionGroup="gml:AbstractCurveSegment" type="gml:ArcStringType">
<annotation>
<documentation>
An ArcString is a curve segment that uses three-point circular arc interpolation ("circularArc3Points"). The number of arcs in the arc string may be explicitly stated in the attribute numArc. The number of control points in the arc string shall be 2 * numArc + 1.
The content model follows the general pattern for the encoding of curve segments.
</documentation>
</annotation>
</element>
<complexType name="ArcType">
<complexContent>
<restriction base="gml:ArcStringType">
<sequence>
<choice>
<choice maxOccurs="3" minOccurs="3">
<element ref="gml:pos"/>
<element ref="gml:pointProperty"/>
<element ref="gml:pointRep"/>
</choice>
<element ref="gml:posList"/>
<element ref="gml:coordinates"/>
</choice>
</sequence>
<attribute fixed="1" name="numArc" type="integer"/>
</restriction>
</complexContent>
</complexType>
<element name="Arc" substitutionGroup="gml:ArcString" type="gml:ArcType">
<annotation>
<documentation>
An Arc is an arc string with only one arc unit, i.e. three control points including the start and end point. As arc is an arc string consisting of a single arc, the attribute "numArc" is fixed to "1".
</documentation>
</annotation>
</element>
<complexType name="CircleType">
<complexContent>
<extension base="gml:ArcType"/>
</complexContent>
</complexType>
<element name="Circle" substitutionGroup="gml:Arc" type="gml:CircleType">
<annotation>
<documentation>
A Circle is an arc whose ends coincide to form a simple closed loop. The three control points shall be distinct non-co-linear points for the circle to be unambiguously defined. The arc is simply extended past the third control point until the first control point is encountered.
</documentation>
</annotation>
</element>
<complexType name="ArcStringByBulgeType">
<complexContent>
<extension base="gml:AbstractCurveSegmentType">
<sequence>
<choice>
<choice maxOccurs="unbounded" minOccurs="2">
<element ref="gml:pos"/>
<element ref="gml:pointProperty"/>
<element ref="gml:pointRep"/>
</choice>
<element ref="gml:posList"/>
<element ref="gml:coordinates"/>
</choice>
<element maxOccurs="unbounded" name="bulge" type="double"/>
<element maxOccurs="unbounded" name="normal" type="gml:VectorType"/>
</sequence>
<attribute fixed="circularArc2PointWithBulge" name="interpolation" type="gml:CurveInterpolationType"/>
<attribute name="numArc" type="integer"/>
</extension>
</complexContent>
</complexType>
<element name="ArcStringByBulge" substitutionGroup="gml:AbstractCurveSegment" type="gml:ArcStringByBulgeType">
<annotation>
<documentation>
This variant of the arc computes the mid points of the arcs instead of storing the coordinates directly. The control point sequence consists of the start and end points of each arc plus the bulge (see ISO 19107:2003, 6.4.17.2). The normal is a vector normal (perpendicular) to the chord of the arc (see ISO 19107:2003, 6.4.17.4).
The interpolation is fixed as "circularArc2PointWithBulge".
The number of arcs in the arc string may be explicitly stated in the attribute numArc. The number of control points in the arc string shall be numArc + 1.
The content model follows the general pattern for the encoding of curve segments.
</documentation>
</annotation>
</element>
<complexType name="ArcByBulgeType">
<complexContent>
<restriction base="gml:ArcStringByBulgeType">
<sequence>
<choice>
<choice maxOccurs="2" minOccurs="2">
<element ref="gml:pos"/>
<element ref="gml:pointProperty"/>
<element ref="gml:pointRep"/>
</choice>
<element ref="gml:posList"/>
<element ref="gml:coordinates"/>
</choice>
<element name="bulge" type="double"/>
<element name="normal" type="gml:VectorType"/>
</sequence>
<attribute fixed="1" name="numArc" type="integer"/>
</restriction>
</complexContent>
</complexType>
<element name="ArcByBulge" substitutionGroup="gml:ArcStringByBulge" type="gml:ArcByBulgeType">
<annotation>
<documentation>
An ArcByBulge is an arc string with only one arc unit, i.e. two control points, one bulge and one normal vector.
As arc is an arc string consisting of a single arc, the attribute "numArc" is fixed to "1".
</documentation>
</annotation>
</element>
<complexType name="ArcByCenterPointType">
<complexContent>
<extension base="gml:AbstractCurveSegmentType">
<sequence>
<choice>
<choice>
<element ref="gml:pos"/>
<element ref="gml:pointProperty"/>
<element ref="gml:pointRep"/>
</choice>
<element ref="gml:posList"/>
<element ref="gml:coordinates"/>
</choice>
<element name="radius" type="gml:LengthType"/>
<element minOccurs="0" name="startAngle" type="gml:AngleType"/>
<element minOccurs="0" name="endAngle" type="gml:AngleType"/>
</sequence>
<attribute fixed="circularArcCenterPointWithRadius" name="interpolation" type="gml:CurveInterpolationType"/>
<attribute fixed="1" name="numArc" type="integer" use="required"/>
</extension>
</complexContent>
</complexType>
<element name="ArcByCenterPoint" substitutionGroup="gml:AbstractCurveSegment" type="gml:ArcByCenterPointType">
<annotation>
<documentation>
This variant of the arc requires that the points on the arc shall be computed instead of storing the coordinates directly. The single control point is the center point of the arc plus the radius and the bearing at start and end. This representation can be used only in 2D.
The element radius specifies the radius of the arc.
The element startAngle specifies the bearing of the arc at the start.
The element endAngle specifies the bearing of the arc at the end.
The interpolation is fixed as "circularArcCenterPointWithRadius".
Since this type describes always a single arc, the attribute "numArc" is fixed to "1".
The content model follows the general pattern for the encoding of curve segments.
</documentation>
</annotation>
</element>
<complexType name="CircleByCenterPointType">
<complexContent>
<restriction base="gml:ArcByCenterPointType">
<sequence>
<choice>
<choice>
<element ref="gml:pos"/>
<element ref="gml:pointProperty"/>
<element ref="gml:pointRep"/>
</choice>
<element ref="gml:posList"/>
<element ref="gml:coordinates"/>
</choice>
<element name="radius" type="gml:LengthType"/>
</sequence>
</restriction>
</complexContent>
</complexType>
<element name="CircleByCenterPoint" substitutionGroup="gml:ArcByCenterPoint" type="gml:CircleByCenterPointType">
<annotation>
<documentation>
A gml:CircleByCenterPoint is an gml:ArcByCenterPoint with identical start and end angle to form a full circle. Again, this representation can be used only in 2D.
</documentation>
</annotation>
</element>
<complexType name="CubicSplineType">
<complexContent>
<extension base="gml:AbstractCurveSegmentType">
<sequence>
<choice>
<choice maxOccurs="unbounded" minOccurs="2">
<element ref="gml:pos"/>
<element ref="gml:pointProperty"/>
<element ref="gml:pointRep"/>
</choice>
<element ref="gml:posList"/>
<element ref="gml:coordinates"/>
</choice>
<element name="vectorAtStart" type="gml:VectorType"/>
<element name="vectorAtEnd" type="gml:VectorType"/>
</sequence>
<attribute fixed="cubicSpline" name="interpolation" type="gml:CurveInterpolationType"/>
<attribute fixed="3" name="degree" type="integer"/>
</extension>
</complexContent>
</complexType>
<element name="CubicSpline" substitutionGroup="gml:AbstractCurveSegment" type="gml:CubicSplineType">
<annotation>
<documentation>
The number of control points shall be at least three.
vectorAtStart is the unit tangent vector at the start point of the spline. vectorAtEnd is the unit tangent vector at the end point of the spline. Only the direction of the vectors shall be used to determine the shape of the cubic spline, not their length.
interpolation is fixed as "cubicSpline".
degree shall be the degree of the polynomial used for the interpolation in this spline. Therefore the degree for a cubic spline is fixed to "3".
The content model follows the general pattern for the encoding of curve segments.
</documentation>
</annotation>
</element>
<complexType name="BSplineType">
<complexContent>
<extension base="gml:AbstractCurveSegmentType">
<sequence>
<choice>
<choice maxOccurs="unbounded" minOccurs="0">
<element ref="gml:pos"/>
<element ref="gml:pointProperty"/>
<element ref="gml:pointRep"/>
</choice>
<element ref="gml:posList"/>
<element ref="gml:coordinates"/>
</choice>
<element name="degree" type="nonNegativeInteger"/>
<element maxOccurs="unbounded" minOccurs="2" name="knot" type="gml:KnotPropertyType"/>
</sequence>
<attribute default="polynomialSpline" name="interpolation" type="gml:CurveInterpolationType"/>
<attribute name="isPolynomial" type="boolean"/>
<attribute name="knotType" type="gml:KnotTypesType"/>
</extension>
</complexContent>
</complexType>
<element name="BSpline" substitutionGroup="gml:AbstractCurveSegment" type="gml:BSplineType">
<annotation>
<documentation>
A B-Spline is a piecewise parametric polynomial or rational curve described in terms of control points and basis functions as specified in ISO 19107:2003, 6.4.30. Therefore, interpolation may be either "polynomialSpline" or "rationalSpline" depending on the interpolation type; default is "polynomialSpline".
degree shall be the degree of the polynomial used for interpolation in this spline.
knot shall be the sequence of distinct knots used to define the spline basis functions (see ISO 19107:2003, 6.4.26.2).
The attribute isPolynomial shall be set to "true" if this is a polynomial spline (see ISO 19107:2003, 6.4.30.5).
The attribute knotType shall provide the type of knot distribution used in defining this spline (see ISO 19107:2003, 6.4.30.4).
The content model follows the general pattern for the encoding of curve segments.
</documentation>
</annotation>
</element>
<complexType name="KnotType">
<sequence>
<element name="value" type="double"/>
<element name="multiplicity" type="nonNegativeInteger"/>
<element name="weight" type="double"/>
</sequence>
</complexType>
<complexType name="KnotPropertyType">
<annotation>
<documentation>
gml:KnotPropertyType encapsulates a knot to use it in a geometric type.
</documentation>
</annotation>
<sequence>
<element name="Knot" type="gml:KnotType">
<annotation>
<documentation>
A knot is a breakpoint on a piecewise spline curve.
value is the value of the parameter at the knot of the spline (see ISO 19107:2003, 6.4.24.2).
multiplicity is the multiplicity of this knot used in the definition of the spline (with the same weight).
weight is the value of the averaging weight used for this knot of the spline.
</documentation>
</annotation>
</element>
</sequence>
</complexType>
<simpleType name="KnotTypesType">
<annotation>
<documentation>
This enumeration type specifies values for the knots' type (see ISO 19107:2003, 6.4.25).
</documentation>
</annotation>
<restriction base="string">
<enumeration value="uniform"/>
<enumeration value="quasiUniform"/>
<enumeration value="piecewiseBezier"/>
</restriction>
</simpleType>
<complexType name="BezierType">
<complexContent>
<restriction base="gml:BSplineType">
<sequence>
<choice>
<choice maxOccurs="unbounded" minOccurs="0">
<element ref="gml:pos"/>
<element ref="gml:pointProperty"/>
<element ref="gml:pointRep"/>
</choice>
<element ref="gml:posList"/>
<element ref="gml:coordinates"/>
</choice>
<element name="degree" type="nonNegativeInteger"/>
<element maxOccurs="2" minOccurs="2" name="knot" type="gml:KnotPropertyType"/>
</sequence>
<attribute fixed="polynomialSpline" name="interpolation" type="gml:CurveInterpolationType"/>
<attribute fixed="true" name="isPolynomial" type="boolean"/>
<attribute name="knotType" type="gml:KnotTypesType" use="prohibited"/>
</restriction>
</complexContent>
</complexType>
<element name="Bezier" substitutionGroup="gml:BSpline" type="gml:BezierType">
<annotation>
<documentation>
Bezier curves are polynomial splines that use Bezier or Bernstein polynomials for interpolation purposes. It is a special case of the B-Spline curve with two knots.
degree shall be the degree of the polynomial used for interpolation in this spline.
knot shall be the sequence of distinct knots used to define the spline basis functions.
interpolation is fixed as "polynomialSpline".
isPolynomial is fixed as "true".
knotType is not relevant for Bezier curve segments.
</documentation>
</annotation>
</element>
<complexType name="OffsetCurveType">
<complexContent>
<extension base="gml:AbstractCurveSegmentType">
<sequence>
<element name="offsetBase" type="gml:CurvePropertyType"/>
<element name="distance" type="gml:LengthType"/>
<element minOccurs="0" name="refDirection" type="gml:VectorType"/>
</sequence>
</extension>
</complexContent>
</complexType>
<element name="OffsetCurve" substitutionGroup="gml:AbstractCurveSegment" type="gml:OffsetCurveType">
<annotation>
<documentation>
An offset curve is a curve at a constant distance from the basis curve. offsetBase is the base curve from which this curve is defined as an offset. distance and refDirection have the same meaning as specified in ISO 19107:2003, 6.4.23.
The content model follows the general pattern for the encoding of curve segments.
</documentation>
</annotation>
</element>
<complexType name="AffinePlacementType">
<sequence>
<element name="location" type="gml:DirectPositionType"/>
<element maxOccurs="unbounded" name="refDirection" type="gml:VectorType"/>
<element name="inDimension" type="positiveInteger"/>
<element name="outDimension" type="positiveInteger"/>
</sequence>
</complexType>
<element name="AffinePlacement" substitutionGroup="gml:AbstractObject" type="gml:AffinePlacementType">
<annotation>
<documentation>
location, refDirection, inDimension and outDimension have the same meaning as specified in ISO 19107:2003, 6.4.21.
</documentation>
</annotation>
</element>
<complexType name="ClothoidType">
<complexContent>
<extension base="gml:AbstractCurveSegmentType">
<sequence>
<element name="refLocation">
<complexType>
<sequence>
<element ref="gml:AffinePlacement"/>
</sequence>
</complexType>
</element>
<element name="scaleFactor" type="decimal"/>
<element name="startParameter" type="double"/>
<element name="endParameter" type="double"/>
</sequence>
<attribute fixed="clothoid" name="interpolation" type="gml:CurveInterpolationType"/>
</extension>
</complexContent>
</complexType>
<element name="Clothoid" substitutionGroup="gml:AbstractCurveSegment" type="gml:ClothoidType">
<annotation>
<documentation>
A clothoid, or Cornu's spiral, is plane curve whose curvature is a fixed function of its length.
refLocation, startParameter, endParameter and scaleFactor have the same meaning as specified in ISO 19107:2003, 6.4.22.
interpolation is fixed as "clothoid".
The content model follows the general pattern for the encoding of curve segments.
</documentation>
</annotation>
</element>
<complexType name="GeodesicStringType">
<complexContent>
<extension base="gml:AbstractCurveSegmentType">
<choice>
<element ref="gml:posList"/>
<group maxOccurs="unbounded" minOccurs="2" ref="gml:geometricPositionGroup"/>
</choice>
<attribute fixed="geodesic" name="interpolation" type="gml:CurveInterpolationType"/>
</extension>
</complexContent>
</complexType>
<element name="GeodesicString" substitutionGroup="gml:AbstractCurveSegment" type="gml:GeodesicStringType">
<annotation>
<documentation>
A sequence of geodesic segments.
The number of control points shall be at least two.
interpolation is fixed as "geodesic".
The content model follows the general pattern for the encoding of curve segments.
</documentation>
</annotation>
</element>
<complexType name="GeodesicType">
<complexContent>
<extension base="gml:GeodesicStringType"/>
</complexContent>
</complexType>
<element name="Geodesic" substitutionGroup="gml:GeodesicString" type="gml:GeodesicType"/>
<complexType name="SurfaceType">
<complexContent>
<extension base="gml:AbstractSurfaceType">
<sequence>
<element ref="gml:patches"/>
</sequence>
</extension>
</complexContent>
</complexType>
<element name="Surface" substitutionGroup="gml:AbstractSurface" type="gml:SurfaceType">
<annotation>
<documentation>
A Surface is a 2-dimensional primitive and is composed of one or more surface patches as specified in ISO 19107:2003, 6.3.17.1. The surface patches are connected to one another.
patches encapsulates the patches of the surface.
</documentation>
</annotation>
</element>
<complexType name="OrientableSurfaceType">
<complexContent>
<extension base="gml:AbstractSurfaceType">
<sequence>
<element ref="gml:baseSurface"/>
</sequence>
<attribute default="+" name="orientation" type="gml:SignType"/>
</extension>
</complexContent>
</complexType>
<element name="baseSurface" type="gml:SurfacePropertyType">
<annotation>
<documentation>
The property baseSurface references or contains the base surface. The property baseSurface either references the base surface via the XLink-attributes or contains the surface element. A surface element is any element which is substitutable for gml:AbstractSurface. The base surface has positive orientation.
</documentation>
</annotation>
</element>
<element name="OrientableSurface" substitutionGroup="gml:AbstractSurface" type="gml:OrientableSurfaceType">
<annotation>
<documentation>
OrientableSurface consists of a surface and an orientation. If the orientation is "+", then the OrientableSurface is identical to the baseSurface. If the orientation is "-", then the OrientableSurface is a reference to a gml:AbstractSurface with an up-normal that reverses the direction for this OrientableSurface, the sense of "the top of the surface".
</documentation>
</annotation>
</element>
<complexType abstract="true" name="AbstractSurfacePatchType"/>
<element abstract="true" name="AbstractSurfacePatch" type="gml:AbstractSurfacePatchType">
<annotation>
<documentation>
A surface patch defines a homogenuous portion of a surface.
The AbstractSurfacePatch element is the abstract head of the substituition group for all surface patch elements describing a continuous portion of a surface.
All surface patches shall have an attribute interpolation (declared in the types derived from gml:AbstractSurfacePatchType) specifying the interpolation mechanism used for the patch using gml:SurfaceInterpolationType.
</documentation>
</annotation>
</element>
<complexType name="SurfacePatchArrayPropertyType">
<annotation>
<documentation>
gml:SurfacePatchArrayPropertyType is a container for a sequence of surface patches.
</documentation>
</annotation>
<sequence maxOccurs="unbounded" minOccurs="0">
<element ref="gml:AbstractSurfacePatch"/>
</sequence>
</complexType>
<annotation>
<documentation>
The patches property element contains the sequence of surface patches. The order of the elements is significant and shall be preserved when processing the array.
</documentation>
</annotation>
</element>
<simpleType name="SurfaceInterpolationType">
<annotation>
<documentation>
gml:SurfaceInterpolationType is a list of codes that may be used to identify the interpolation mechanisms specified by an application schema.
</documentation>
</annotation>
<restriction base="string">
<enumeration value="none"/>
<enumeration value="planar"/>
<enumeration value="spherical"/>
<enumeration value="elliptical"/>
<enumeration value="conic"/>
<enumeration value="tin"/>
<enumeration value="parametricCurve"/>
<enumeration value="polynomialSpline"/>
<enumeration value="rationalSpline"/>
<enumeration value="triangulatedSpline"/>
</restriction>
</simpleType>
<complexType name="PolygonPatchType">
<complexContent>
<extension base="gml:AbstractSurfacePatchType">
<sequence>
<element minOccurs="0" ref="gml:exterior"/>
<element maxOccurs="unbounded" minOccurs="0" ref="gml:interior"/>
</sequence>
<attribute fixed="planar" name="interpolation" type="gml:SurfaceInterpolationType"/>
</extension>
</complexContent>
</complexType>
<element name="PolygonPatch" substitutionGroup="gml:AbstractSurfacePatch" type="gml:PolygonPatchType">
<annotation>
<documentation>
A gml:PolygonPatch is a surface patch that is defined by a set of boundary curves and an underlying surface to which these curves adhere. The curves shall be coplanar and the polygon uses planar interpolation in its interior.
interpolation is fixed to "planar", i.e. an interpolation shall return points on a single plane. The boundary of the patch shall be contained within that plane.
</documentation>
</annotation>
</element>
<complexType name="TriangleType">
<complexContent>
<extension base="gml:AbstractSurfacePatchType">
<sequence>
<element ref="gml:exterior"/>
</sequence>
<attribute fixed="planar" name="interpolation" type="gml:SurfaceInterpolationType"/>
</extension>
</complexContent>
</complexType>
<element name="Triangle" substitutionGroup="gml:AbstractSurfacePatch" type="gml:TriangleType">
<annotation>
<documentation>
gml:Triangle represents a triangle as a surface patch with an outer boundary consisting of a linear ring. Note that this is a polygon (subtype) with no inner boundaries. The number of points in the linear ring shall be four.
The ring (element exterior) shall be a gml:LinearRing and shall form a triangle, the first and the last position shall be coincident.
interpolation is fixed to "planar", i.e. an interpolation shall return points on a single plane. The boundary of the patch shall be contained within that plane.
</documentation>
</annotation>
</element>
<complexType name="RectangleType">
<complexContent>
<extension base="gml:AbstractSurfacePatchType">
<sequence>
<element ref="gml:exterior"/>
</sequence>
<attribute fixed="planar" name="interpolation" type="gml:SurfaceInterpolationType"/>
</extension>
</complexContent>
</complexType>
<element name="Rectangle" substitutionGroup="gml:AbstractSurfacePatch" type="gml:RectangleType">
<annotation>
<documentation>
gml:Rectangle represents a rectangle as a surface patch with an outer boundary consisting of a linear ring. Note that this is a polygon (subtype) with no inner boundaries. The number of points in the linear ring shall be five.
The ring (element exterior) shall be a gml:LinearRing and shall form a rectangle; the first and the last position shall be coincident.
interpolation is fixed to "planar", i.e. an interpolation shall return points on a single plane. The boundary of the patch shall be contained within that plane.
</documentation>
</annotation>
</element>
<complexType name="RingType">
<complexContent>
<extension base="gml:AbstractRingType">
<sequence>
<element maxOccurs="unbounded" ref="gml:curveMember"/>
</sequence>
<attributeGroup ref="gml:AggregationAttributeGroup"/>
</extension>
</complexContent>
</complexType>
<element name="Ring" substitutionGroup="gml:AbstractRing" type="gml:RingType">
<annotation>
<documentation>
A ring is used to represent a single connected component of a surface boundary as specified in ISO 19107:2003, 6.3.6.
Every gml:curveMember references or contains one curve, i.e. any element which is substitutable for gml:AbstractCurve. In the context of a ring, the curves describe the boundary of the surface. The sequence of curves shall be contiguous and connected in a cycle.
If provided, the aggregationType attribute shall have the value "sequence".
</documentation>
</annotation>
</element>
<element name="curveMember" type="gml:CurvePropertyType"/>
<complexType name="RingPropertyType">
<annotation>
<documentation>
A property with the content model of gml:RingPropertyType encapsulates a ring to represent a component of a surface boundary.
</documentation>
</annotation>
<sequence>
<element ref="gml:Ring"/>
</sequence>
</complexType>
<group name="PointGrid">
<annotation>
<documentation>
A gml:PointGrid group contains or references points or positions which are organised into sequences or grids. All rows shall have the same number of positions (columns).
</documentation>
</annotation>
<sequence>
<element name="rows">
<complexType>
<sequence>
<element maxOccurs="unbounded" name="Row">
<complexType> </complexType>
</element>
</sequence>
</complexType>
</element>
</sequence>
</group>
<complexType abstract="true" name="AbstractParametricCurveSurfaceType">
<complexContent>
<extension base="gml:AbstractSurfacePatchType">
<attributeGroup ref="gml:AggregationAttributeGroup"/>
</extension>
</complexContent>
</complexType>
<element abstract="true" name="AbstractParametricCurveSurface" substitutionGroup="gml:AbstractSurfacePatch" type="gml:AbstractParametricCurveSurfaceType">
<annotation>
<documentation>
The element provides a substitution group head for the surface patches based on parametric curves. All properties are specified in the derived subtypes. All derived subtypes shall conform to the constraints specified in ISO 19107:2003, 6.4.40.
If provided, the aggregationType attribute shall have the value "set".
</documentation>
</annotation>
</element>
<complexType abstract="true" name="AbstractGriddedSurfaceType">
<complexContent>
<extension base="gml:AbstractParametricCurveSurfaceType">
<sequence>
<group ref="gml:PointGrid"/>
</sequence>
<attribute name="rows" type="integer"/>
<attribute name="columns" type="integer"/>
</extension>
</complexContent>
</complexType>
<element abstract="true" name="AbstractGriddedSurface" substitutionGroup="gml:AbstractParametricCurveSurface" type="gml:AbstractGriddedSurfaceType">
<annotation>
<documentation>
if provided, rows gives the number of rows, columns the number of columns in the parameter grid. The parameter grid is represented by an instance of the gml:PointGrid group.
The element provides a substitution group head for the surface patches based on a grid. All derived subtypes shall conform to the constraints specified in ISO 19107:2003, 6.4.41.
</documentation>
</annotation>
</element>
<complexType name="ConeType">
<complexContent>
<extension base="gml:AbstractGriddedSurfaceType">
<attribute fixed="circularArc3Points" name="horizontalCurveType" type="gml:CurveInterpolationType"/>
<attribute fixed="linear" name="verticalCurveType" type="gml:CurveInterpolationType"/>
</extension>
</complexContent>
</complexType>
<element name="Cone" substitutionGroup="gml:AbstractGriddedSurface" type="gml:ConeType"/>
<complexType name="CylinderType">
<complexContent>
<extension base="gml:AbstractGriddedSurfaceType">
<attribute fixed="circularArc3Points" name="horizontalCurveType" type="gml:CurveInterpolationType"/>
<attribute fixed="linear" name="verticalCurveType" type="gml:CurveInterpolationType"/>
</extension>
</complexContent>
</complexType>
<element name="Cylinder" substitutionGroup="gml:AbstractGriddedSurface" type="gml:CylinderType"/>
<complexType name="SphereType">
<complexContent>
<extension base="gml:AbstractGriddedSurfaceType">
<attribute fixed="circularArc3Points" name="horizontalCurveType" type="gml:CurveInterpolationType"/>
<attribute fixed="circularArc3Points" name="verticalCurveType" type="gml:CurveInterpolationType"/>
</extension>
</complexContent>
</complexType>
<element name="Sphere" substitutionGroup="gml:AbstractGriddedSurface" type="gml:SphereType"/>
<element name="PolyhedralSurface" substitutionGroup="gml:Surface" type="gml:SurfaceType">
<annotation>
<documentation>
A polyhedral surface is a surface composed of polygon patches connected along their common boundary curves. This differs from the surface type only in the restriction on the types of surface patches acceptable.
polygonPatches encapsulates the polygon patches of the polyhedral surface.
</documentation>
</annotation>
</element>
<element name="TriangulatedSurface" substitutionGroup="gml:Surface" type="gml:SurfaceType">
<annotation>
<documentation>
A triangulated surface is a polyhedral surface that is composed only of triangles. There is no restriction on how the triangulation is derived.
trianglePatches encapsulates the triangles of the triangulated surface.
</documentation>
</annotation>
</element>
<complexType name="TinType">
<complexContent>
<extension base="gml:SurfaceType">
<sequence>
<element maxOccurs="unbounded" minOccurs="0" name="stopLines" type="gml:LineStringSegmentArrayPropertyType"/>
<element maxOccurs="unbounded" minOccurs="0" name="breakLines" type="gml:LineStringSegmentArrayPropertyType"/>
<element name="maxLength" type="gml:LengthType"/>
<element name="controlPoint">
<complexType>
<choice>
<element ref="gml:posList"/>
<group maxOccurs="unbounded" minOccurs="3" ref="gml:geometricPositionGroup"/>
</choice>
</complexType>
</element>
</sequence>
</extension>
</complexContent>
</complexType>
<element name="Tin" substitutionGroup="gml:TriangulatedSurface" type="gml:TinType">
<annotation>
<documentation>
A tin is a triangulated surface that uses the Delauny algorithm or a similar algorithm complemented with consideration of stoplines (stopLines), breaklines (breakLines), and maximum length of triangle sides (maxLength). controlPoint shall contain a set of the positions (three or more) used as posts for this TIN (corners of the triangles in the TIN). See ISO 19107:2003, 6.4.39 for details.
</documentation>
</annotation>
</element>
<annotation>
<documentation>
gml:LineStringSegmentArrayPropertyType provides a container for line strings.
</documentation>
</annotation>
<sequence maxOccurs="unbounded" minOccurs="0">
<element ref="gml:LineStringSegment"/>
</sequence>
</complexType>
<complexType name="AbstractSolidType">
<annotation>
<documentation>
gml:AbstractSolidType is an abstraction of a solid to support the different levels of complexity. The solid may always be viewed as a geometric primitive, i.e. is contiguous.
</documentation>
</annotation>
<complexContent>
</complexContent>
</complexType>
<element abstract="true" name="AbstractSolid" substitutionGroup="gml:AbstractGeometricPrimitive" type="gml:AbstractSolidType">
<annotation>
<documentation>
The AbstractSolid element is the abstract head of the substituition group for all (continuous) solid elements.
</documentation>
</annotation>
</element>
<complexType name="SolidPropertyType">
<annotation>
<documentation>
A property that has a solid as its value domain may either be an appropriate geometry element encapsulated in an element of this type or an XLink reference to a remote geometry element (where remote includes geometry elements located elsewhere in the same document). Either the reference or the contained element shall be given, but neither both nor none.
</documentation>
</annotation>
<sequence minOccurs="0">
<element ref="gml:AbstractSolid"/>
</sequence>
<attributeGroup ref="gml:AssociationAttributeGroup"/>
<attributeGroup ref="gml:OwnershipAttributeGroup"/>
</complexType>
<element name="solidProperty" type="gml:SolidPropertyType">
<annotation>
<documentation>
This property element either references a solid via the XLink-attributes or contains the solid element. solidProperty is the predefined property which may be used by GML Application Schemas whenever a GML feature has a property with a value that is substitutable for AbstractSolid.
</documentation>
</annotation>
</element>
<complexType name="SolidArrayPropertyType">
<annotation>
<documentation>
gml:SolidArrayPropertyType is a container for an array of solids. The elements are always contained in the array property, referencing geometry elements or arrays of geometry elements is not supported.
</documentation>
</annotation>
<sequence maxOccurs="unbounded" minOccurs="0">
<element ref="gml:AbstractSolid"/>
</sequence>
<attributeGroup ref="gml:OwnershipAttributeGroup"/>
</complexType>
<complexType name="SolidType">
<complexContent>
<extension base="gml:AbstractSolidType">
<sequence>
<element minOccurs="0" name="exterior" type="gml:ShellPropertyType"/>
<element maxOccurs="unbounded" minOccurs="0" name="interior" type="gml:ShellPropertyType"/>
</sequence>
</extension>
</complexContent>
</complexType>
<element name="Solid" substitutionGroup="gml:AbstractSolid" type="gml:SolidType">
<annotation>
<documentation>
A solid is the basis for 3-dimensional geometry. The extent of a solid is defined by the boundary surfaces as specified in ISO 19107:2003, 6.3.18. exterior specifies the outer boundary, interior the inner boundary of the solid.
</documentation>
</annotation>
</element>
<complexType name="ShellType">
<sequence>
<element maxOccurs="unbounded" ref="gml:surfaceMember"/>
</sequence>
<attributeGroup ref="gml:AggregationAttributeGroup"/>
</complexType>
<element name="Shell" substitutionGroup="gml:AbstractObject" type="gml:ShellType">
<annotation>
<documentation>
A shell is used to represent a single connected component of a solid boundary as specified in ISO 19107:2003, 6.3.8.
Every gml:surfaceMember references or contains one surface, i.e. any element which is substitutable for gml:AbstractSurface. In the context of a shell, the surfaces describe the boundary of the solid.
If provided, the aggregationType attribute shall have the value "set".
</documentation>
</annotation>
</element>
<element name="surfaceMember" type="gml:SurfacePropertyType">
<annotation>
<documentation>
This property element either references a surface via the XLink-attributes or contains the surface element. A surface element is any element, which is substitutable for gml:AbstractSurface.
</documentation>
</annotation>
</element>
<complexType name="ShellPropertyType">
<annotation>
<documentation>
A property with the content model of gml:ShellPropertyType encapsulates a shell to represent a component of a solid boundary.
</documentation>
</annotation>
<sequence>
<element ref="gml:Shell"/>
</sequence>
</complexType>
</schema>

This XML schema documentation has been generated with DocFlex/XML 1.11 using DocFlex/XML XSDDoc 2.8.3 template set.
DocFlex/XML is a tool for programming and running highly sophisticated documentation and reports generators by the data obtained from any kind of XML files. The actual doc-generators are implemented in the form of special templates that are designed visually using a high-quality Template Designer GUI basing on the XML schema (or DTD) files describing the data source XML.
DocFlex/XML XSDDoc is a commercial template application of DocFlex/XML that implements a high-quality XML Schema documentation generator with simultaneous support of framed multi-file HTML, single-file HTML and RTF output formats. (More formats are planned in the future).
A commercial license for "DocFlex/XML XSDDoc" will allow you:
  • To configure the generated documentation so much as you want. Thanks to our template technology, it was possible to support > 400 template parameters, which work the same as "options" of ordinary doc-generators. The parameters are organized in nested groups, which form a parameter tree. Most of them have their default values calculated dynamically from a few primary parameters. So, you'll never need to specify all of them. That will give you swift and effective control over the generated content!
  • To use certain features disabled in the free mode (such as the full documenting of substitution groups).
  • To select only the initial, imported, included, redefined XML schemas to be documented or only those directly specified by name.
  • To include only XML schema components specified by name.
  • To document local element components both globally and locally (similar to attributes).
  • To allow/suppress unification of local elements by type.
  • To enable/disable reproducing of namespace prefixes.
  • To use PlainDoc.tpl main template to generate all the XML schema documentation in a signle-file form as both HTML and incredible quality RTF output.
  • To format your annotations with XHTML tags and reproduce that formatting both in HTML and RTF output.
  • To insert images in your annotations using XHTML <img> tags (supported both in HTML and RTF output).
  • To remove this very advertisement text!
Once having only such a license, you will be able to run the fully-featured XML schema documentation generator both with DocFlex/XML (Full Edition) and with DocFlex/XML RE, which is a reduced free edition containing only the template interpretor / output generator. No other licenses will be required!
But this is not all. In addition to it, a commercial license for "DocFlex/XML SDK" will allow you to modify the XSDDoc templates themselves as much as you want. You will be able to achieve whatever was impossible to do with the template parameters only. And, of course, you could develop any template applications by your own!
Please note that by purchasing a license for this software, you not only acquire a useful tool, you will also make an important investment in its future development, the results of which you could enjoy later by yourself. Every single your purchase matters and makes a difference for us!
To purchase a license, please follow this link: http://www.filigris.com/shop/