geometryPrimitives.xsd
Copyright (c) 20012005 OGC, All Rights Reserved.
For conditions, see OGC Software Notice http://www.opengeospatial.org/about/?page=ipr
Curve is a 1dimensional 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.
This element encapsulates the segments of the curve.
This property element either references a curve via the XLinkattributes or
contains the curve element. A curve element is any element which is substitutable for
"_Curve".
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 _Curve with a parameterization that reverses the
sense of the curve traversal.
References or contains the base curve (positive orientation).
NOTE: This definition allows for a nested structure, i.e. an OrientableCurve may use
another OrientableCurve as its base curve.
If the orientation is "+", then the OrientableCurve is identical to the
baseCurve. If the orientation is "", then the OrientableCurve is related to another
_Curve with a parameterization that reverses the sense of the curve traversal. "+" is
the default value.
The "_CurveSegment" element is the abstract head of the substituition group for
all curve segment elements, i.e. continuous segments of the same interpolation mechanism.
Curve segment defines a homogeneous segment of a curve.
The attribute "numDerivativesAtStart" specifies the type of continuity
between this curve segment and its predecessor. If this is the first curve segment in the
curve, one of these values, as appropriate, is ignored. The default value of "0" means
simple continuity, which is a mandatory minimum level of continuity. This level is
referred to as "C 0 " in mathematical texts. A value of 1 means that the function and its
first derivative are continuous at the appropriate end point: "C 1 " continuity. A value
of "n" for any integer means the function and its first n derivatives are continuous: "C n
" continuity.
NOTE: Use of these values is only appropriate when the basic curve definition is an
underdetermined system. For example, line string segments cannot support continuity above
C 0 , since there is no spare control parameter to adjust the incoming angle at the end
points of the segment. Spline functions on the other hand often have extra degrees of
freedom on end segments that allow them to adjust the values of the derivatives to support
C 1 or higher continuity.
The attribute "numDerivativesAtEnd" specifies the type of continuity between
this curve segment and its successor. If this is the last curve segment in the curve, one
of these values, as appropriate, is ignored. The default value of "0" means simple
continuity, which is a mandatory minimum level of continuity. This level is referred to as
"C 0 " in mathematical texts. A value of 1 means that the function and its first
derivative are continuous at the appropriate end point: "C 1 " continuity. A value of "n"
for any integer means the function and its first n derivatives are continuous: "C n "
continuity.
NOTE: Use of these values is only appropriate when the basic curve definition is an
underdetermined system. For example, line string segments cannot support continuity above
C 0 , since there is no spare control parameter to adjust the incoming angle at the end
points of the segment. Spline functions on the other hand often have extra degrees of
freedom on end segments that allow them to adjust the values of the derivatives to support
C 1 or higher continuity.
The attribute "numDerivativesInterior" specifies the type of continuity that
is guaranteed interior to the curve. The default value of "0" means simple continuity,
which is a mandatory minimum level of continuity. This level is referred to as "C 0 " in
mathematical texts. A value of 1 means that the function and its first derivative are
continuous at the appropriate end point: "C 1 " continuity. A value of "n" for any integer
means the function and its first n derivatives are continuous: "C n " continuity.
NOTE: Use of these values is only appropriate when the basic curve definition is an
underdetermined system. For example, line string segments cannot support continuity above
C 0 , since there is no spare control parameter to adjust the incoming angle at the end
points of the segment. Spline functions on the other hand often have extra degrees of
freedom on end segments that allow them to adjust the values of the derivatives to support
C 1 or higher continuity.
This property element contains a list of curve segments. The order of the
elements is significant and shall be preserved when processing the array.
A container for an array of curve segments.
A LineStringSegment is a curve segment that is defined by two or more
coordinate tuples, with linear interpolation between them.
Note: LineStringSegment implements GM_LineString of ISO 19107.
GML supports two different ways to specify the control points of a
curve segment.
1. A sequence of "pos" (DirectPositionType) or "pointProperty" (PointPropertyType)
elements. "pos" elements are control points that are only part of this curve
segment, "pointProperty" elements contain a point that may be referenced from other
geometry elements or reference another point defined outside of this curve segment
(reuse of existing points).
2. The "posList" element allows for a compact way to specifiy the coordinates of the
control points, if all control points are in the same coordinate reference systems
and belong to this curve segment only. The number of direct positions in the list
must be at least two.
Deprecated with GML version 3.1.0. Use "pointProperty" instead.
Included for backwards compatibility with GML 3.0.0.
Deprecated with GML version 3.1.0. Use "posList" instead.
The attribute "interpolation" specifies 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. For a LineStringSegment the interpolation is fixed as "linear".
An ArcString is a curve segment that uses threepoint circular arc
interpolation.
GML supports two different ways to specify the control points of a
curve segment.
1. A sequence of "pos" (DirectPositionType) or "pointProperty" (PointPropertyType)
elements. "pos" elements are control points that are only part of this curve
segment, "pointProperty" elements contain a point that may be referenced from other
geometry elements or reference another point defined outside of this curve segment
(reuse of existing points).
2. The "posList" element allows for a compact way to specifiy the coordinates of the
control points, if all control points are in the same coordinate reference systems
and belong to this curve segment only. The number of direct positions in the list
must be at least three.
Deprecated with GML version 3.1.0. Use "pointProperty" instead.
Included for backwards compatibility with GML 3.0.0.
Deprecated with GML version 3.1.0. Use "posList" instead.
The attribute "interpolation" specifies 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. For an ArcString the interpolation is fixed as "circularArc3Points".
The number of arcs in the arc string can be explicitly stated in this
attribute. The number of control points in the arc string must be 2 * numArc + 1.
An Arc is an arc string with only one arc unit, i.e. three control points.
GML supports two different ways to specify the control points of a
curve segment.
1. A sequence of "pos" (DirectPositionType) or "pointProperty" (PointPropertyType)
elements. "pos" elements are control points that are only part of this curve
segment, "pointProperty" elements contain a point that may be referenced from other
geometry elements or reference another point defined outside of this curve segment
(reuse of existing points).
2. The "posList" element allows for a compact way to specifiy the coordinates of the
control points, if all control points are in the same coordinate reference systems
and belong to this curve segment only. The number of direct positions in the list
must be three.
Deprecated with GML version 3.1.0. Use "pointProperty" instead.
Included for backwards compatibility with GML 3.0.0.
Deprecated with GML version 3.1.0. Use "posList" instead.
An arc is an arc string consiting of a single arc, the attribute is fixed
to "1".
A Circle is an arc whose ends coincide to form a simple closed loop. The
"start" and "end" bearing are equal and shall be the bearing for the first controlPoint
listed. The three control points must be distinct noncolinear 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.
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.
GML supports two different ways to specify the control points of a
curve segment.
1. A sequence of "pos" (DirectPositionType) or "pointProperty" (PointPropertyType)
elements. "pos" elements are control points that are only part of this curve
segment, "pointProperty" elements contain a point that may be referenced from other
geometry elements or reference another point defined outside of this curve segment
(reuse of existing points).
2. The "posList" element allows for a compact way to specifiy the coordinates of the
control points, if all control points are in the same coordinate reference systems
and belong to this curve segment only. The number of direct positions in the list
must be at least two.
Deprecated with GML version 3.1.0. Use "pointProperty" instead.
Included for backwards compatibility with GML 3.0.0.
Deprecated with GML version 3.1.0. Use "posList" instead.
The bulge controls the offset of each arc's midpoint. The "bulge" is
the real number multiplier for the normal that determines the offset direction of
the midpoint of each arc. The length of the bulge sequence is exactly 1 less than
the length of the control point array, since a bulge is needed for each pair of
adjacent points in the control point array. The bulge is not given by a distance,
since it is simply a multiplier for the normal.
The midpoint of the resulting arc is given by: midPoint = ((startPoint +
endPoint)/2.0) + bulge*normal
The attribute "normal" is a vector normal (perpendicular) to the chord
of the arc, the line joining the first and last
point of the arc. In a 2D coordinate system, there are only two possible directions
for the normal, and it is often given as a signed real, indicating its length, with
a positive sign indicating a left turn angle from the chord line, and a negative
sign indicating a right turn from the chord. In 3D, the normal determines the plane
of the arc, along with the start and endPoint of the arc.
The normal is usually a unit vector, but this is not absolutely necessary. If the
normal is a zero vector, the geometric object becomes equivalent to the straight
line between the two end points. The length of the normal sequence is exactly the
same as for the bulge sequence, 1 less than the control point sequence length.
The attribute "interpolation" specifies 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. For an ArcStringByBulge the interpolation is fixed as
"circularArc2PointWithBulge".
The number of arcs in the arc string can be explicitly stated in this
attribute. The number of control points in the arc string must be numArc + 1.
An ArcByBulge is an arc string with only one arc unit, i.e. two control points
and one bulge.
GML supports two different ways to specify the control points of a
curve segment.
1. A sequence of "pos" (DirectPositionType) or "pointProperty" (PointPropertyType)
elements. "pos" elements are control points that are only part of this curve
segment, "pointProperty" elements contain a point that may be referenced from other
geometry elements or reference another point defined outside of this curve segment
(reuse of existing points).
2. The "posList" element allows for a compact way to specifiy the coordinates of the
control points, if all control points are in the same coordinate reference systems
and belong to this curve segment only. The number of direct positions in the list
must be two.
Deprecated with GML version 3.1.0. Use "pointProperty" instead.
Included for backwards compatibility with GML 3.0.0.
Deprecated with GML version 3.1.0. Use "posList" instead.
The bulge controls the offset of each arc's midpoint. The "bulge" is
the real number multiplier for the normal that determines the offset direction of
the midpoint of each arc. The length of the bulge sequence is exactly 1 less than
the length of the control point array, since a bulge is needed for each pair of
adjacent points in the control point array. The bulge is not given by a distance,
since it is simply a multiplier for the normal.
The midpoint of the resulting arc is given by: midPoint = ((startPoint +
endPoint)/2.0) + bulge*normal
The attribute "normal" is a vector normal (perpendicular) to the chord
of the arc, the line joining the first and last
point of the arc. In a 2D coordinate system, there are only two possible directions
for the normal, and it is often given as a signed real, indicating its length, with
a positive sign indicating a left turn angle from the chord line, and a negative
sign indicating a right turn from the chord. In 3D, the normal determines the plane
of the arc, along with the start and endPoint of the arc.
The normal is usually a unit vector, but this is not absolutely necessary. If the
normal is a zero vector, the geometric object becomes equivalent to the straight
line between the two end points. The length of the normal sequence is exactly the
same as for the bulge sequence, 1 less than the control point sequence length.
An arc is an arc string consiting of a single arc, the attribute is fixed
to "1".
This variant of the arc requires that the points on the arc have to be computed
instead of storing the coordinates directly. The control point is the center point of the
arc plus the radius and the bearing at start and end. This represenation can be used only in
2D.
GML supports two different ways to specify the control points of a
curve segment.
1. A "pos" (DirectPositionType) or "pointProperty" (PointPropertyType) element. The
"pos" element contains a center point that is only part of this curve segment, a
"pointProperty" element contains a point that may be referenced from other geometry
elements or reference another point defined outside of this curve segment (reuse of
existing points).
2. The "posList" element can be used to specifiy the coordinates of the center
point, too. The number of direct positions in the list must be one.
Deprecated with GML version 3.1.0. Use "pointProperty" instead.
Included for backwards compatibility with GML 3.0.0.
Deprecated with GML version 3.1.0. Use "posList" instead.
The radius of the arc.
The bearing of the arc at the start.
The bearing of the arc at the end.
The attribute "interpolation" specifies 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. For an ArcByCenterPoint the interpolation is fixed as
"circularArcCenterPointWithRadius".
Since this type describes always a single arc, the attribute is fixed to
"1".
A CircleByCenterPoint is an ArcByCenterPoint with identical start and end angle
to form a full circle. Again, this represenation can be used only in 2D.
An offset curve is a curve at a constant
distance from the basis curve. They can be useful as a cheap
and simple alternative to constructing curves that are offsets
by definition.
offsetBase is a reference to thecurve from which this
curve is define as an offset.
distance is the distance at which the
offset curve is generated from the basis curve. In 2D systems, positive distances
are to be to the left of the basis curve, and the negative distances are to be to
the
right of the basis curve.
refDistance is used to define the vector
direction of the offset curve from the basis curve. It can
be omitted in the 2D case, where the distance can be
positive or negative. In that case, distance defines left
side (positive distance) or right side (negative distance)
with respect to the tangent to the basis curve.
In 3D the basis curve shall have a well defined tangent
direction for every point. The offset curve at any point
in 3D, the basis curve shall have a welldefined tangent
direction for every point. The offset curve at any point
(parameter) on the basis curve c is in the direction
   
s = v x t where v = c.refDirection()
and

t = c.tangent()

For the offset direction to be welldefined, v shall not
on any point of the curve be in the same, or opposite,
direction as

t.
The default value of the refDirection shall be the local
coordinate axis vector for elevation, which indicates up for
the curve in a geographic sense.
NOTE! If the refDirection is the positive tangent to the
local elevation axis ("points upward"), then the offset
vector points to the left of the curve when viewed from
above.
A placement takes a standard geometric
construction and places it in geographic space. It defines a
transformation from a constructive parameter space to the
coordinate space of the coordinate reference system being used.
Parameter spaces in formulae in this International Standard are
given as (u, v) in 2D and(u, v, w) in 3D. Coordinate reference
systems positions are given in formulae, in this International
Standard, by either (x, y) in 2D, or (x, y, z) in 3D.
Affine placements are defined by linear transformations from
parameter space to the target coordiante space. 2dimensional
Cartesian parameter space,(u,v) transforms into 3dimensional co
ordinate reference systems,(x,y,z) by using an affine
transformation,(u,v)>(x,y,z) which is defined :
x ux vx x0
u
y = uy vy + y0
v
x uz vz z0
Then, given this equation, the location element of the
AffinePlacement is the direct position (x0, y0, z0), which is the
target position of the origin in (u, v). The two reference
directions (ux, uy, uz) and (vx, vy, vz) are the target
directions of the unit vectors at the origin in (u, v).
The location property gives
the target of the parameter space origin. This is the vector
(x0, y0, z0) in the formulae above.
The attribute refDirection gives the
target directions for the coordinate basis vectors of the
parameter space. These are the columns of the matrix in the
formulae given above. The number of directions given shall be
inDimension. The dimension of the directions shall be
outDimension.
Dimension of the constructive parameter
space.
Dimension of the coordinate space.
A clothoid, or Cornu's spiral, is plane
curve whose curvature is a fixed function of its length.
In suitably chosen coordinates it is given by Fresnel's
integrals.
x(t) = 0integralt cos(AT*T/2)dT
y(t) = 0integralt sin(AT*T/2)dT
This geometry is mainly used as a transition curve between
curves of type straight line to circular arc or circular arc
to circular arc. With this curve type it is possible to
achieve a C2continous transition between the above mentioned
curve types. One formula for the Clothoid is A*A = R*t where
A is constant, R is the varying radius of curvature along the
the curve and t is the length along and given in the Fresnel
integrals.
The "refLocation" is an affine mapping
that places the curve defined by the Fresnel Integrals
into the coordinate reference system of this object.
The element gives the value for the
constant in the Fresnel's integrals.
The startParameter is the arc length
distance from the inflection point that will be the start
point for this curve segment. This shall be lower limit
used in the Fresnel integral and is the value of the
constructive parameter of this curve segment at its start
point. The startParameter can either be positive or
negative.
NOTE! If 0.0 (zero), lies between the startParameter and
the endParameter of the clothoid, then the curve goes
through the clothoid's inflection point, and the direction
of its radius of curvature, given by the second
derivative vector, changes sides with respect to the
tangent vector. The term length distance for the
The endParameter is the arc length
distance from the inflection point that will be the end
point for this curve segment. This shall be upper limit
used in the Fresnel integral and is the value of the
constructive parameter of this curve segment at its
start point. The startParameter can either be positive
or negative.
A GeodesicString consists of sequence of
geodesic segments. The type essentially combines a sequence of
Geodesic into a single object.
The GeodesicString is computed from two or more positions and an
interpolation using geodesics defined from the geoid (or
ellipsoid) of the coordinate reference system being used.
The attribute "interpolation" specifies 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. For an
GeodesicString the interpolation is fixed as "geodesic".
A Geodesic consists of two distinct
positions joined by a geodesic curve. The control points of
a Geodesic shall lie on the geodesic between its start
point and end points. Between these two points, a geodesic
curve defined from ellipsoid or geoid model used by the
coordinate reference systems may be used to interpolate
other positions. Any other point in the controlPoint array
must fall on this geodesic.
Cubic splines are similar to line strings in that they are a sequence of
segments each with its own defining function. A cubic spline uses the control points and a
set of derivative parameters to define a piecewise 3rd degree polynomial interpolation.
Unlike linestrings, the parameterization by arc length is not necessarily still a
polynomial.
The function describing the curve must be C2, that is, have a continuous 1st and 2nd
derivative at all points, and pass through the controlPoints in the order given. Between the
control points, the curve segment is defined by a cubic polynomial. At each control point,
the polynomial changes in such a manner that the 1st and 2nd derivative vectors are the same
from either side. The control parameters record must contain vectorAtStart, and vectorAtEnd
which are the unit tangent vectors at controlPoint[1] and controlPoint[n] where n =
controlPoint.count.
Note: only the direction of the vectors is relevant, not their length.
GML supports two different ways to specify the control points of a
curve segment.
1. A sequence of "pos" (DirectPositionType) or "pointProperty" (PointPropertyType)
elements. "pos" elements are control points that are only part of this curve
segment, "pointProperty" elements contain a point that may be referenced from other
geometry elements or reference another point defined outside of this curve segment
(reuse of existing points).
2. The "posList" element allows for a compact way to specifiy the coordinates of the
control points, if all control points are in the same coordinate reference systems
and belong to this curve segment only. The number of direct positions in the list
must be at least three.
Deprecated with GML version 3.1.0. Use "pointProperty" instead.
Included for backwards compatibility with GML 3.0.0.
Deprecated with GML version 3.1.0. Use "posList" instead.
"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.
The attribute "interpolation" specifies 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. For a CubicSpline the interpolation is fixed as "cubicSpline".
The degree for a cubic spline is "3".
A knot is a breakpoint on a piecewise spline curve.
The property "value" is the value of the parameter at the knot of the
spline. The sequence of knots shall be a nondecreasing sequence. That is, each knot's
value in the sequence shall be equal to or greater than the previous knot's value. The
use of equal consecutive knots is normally handled using the multiplicity.
The property "multiplicity" is the multiplicity of this knot used in the
definition of the spline (with the same weight).
The property "weight" is the value of the averaging weight used for this
knot of the spline.
Encapsulates a knot to use it in a geometric type.
A BSpline is a piecewise parametric polynomial or rational curve described in
terms of control points and basis functions. Knots are breakpoints on the curve that connect
its pieces. They are given as a nondecreasing sequence of real numbers. If the weights in
the knots are equal then it is a polynomial spline. The degree is the algebraic degree of
the basis functions.
GML supports two different ways to specify the control points of a
curve segment.
1. A sequence of "pos" (DirectPositionType) or "pointProperty" (PointPropertyType)
elements. "pos" elements are control points that are only part of this curve
segment, "pointProperty" elements contain a point that may be referenced from other
geometry elements or reference another point defined outside of this curve segment
(reuse of existing points).
2. The "posList" element allows for a compact way to specifiy the coordinates of the
control points, if all control points are in the same coordinate reference systems
and belong to this curve segment only.
Deprecated with GML version 3.1.0. Use "pointProperty" instead.
Included for backwards compatibility with GML 3.0.0.
Deprecated with GML version 3.1.0. Use "posList" instead.
The attribute "degree" shall be the degree of the polynomial used for
interpolation in this spline.
The property "knot" shall be the sequence of distinct knots used to
define the spline basis functions.
The attribute "interpolation" specifies 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. For a BSpline the interpolation can be either "polynomialSpline" or
"rationalSpline", default is "polynomialSpline".
The attribute isPolynomial is set to true if this is a polynomial
spline.
The attribute "knotType" gives the type of knot distribution used in
defining this spline. This is for information only
and is set according to the different constructionfunctions.
Bezier curves are polynomial splines that use Bezier or Bernstein polynomials
for interpolation purposes. It is a special case of the BSpline curve with two knots.
GML supports two different ways to specify the control points of a
curve segment.
1. A sequence of "pos" (DirectPositionType) or "pointProperty" (PointPropertyType)
elements. "pos" elements are control points that are only part of this curve
segment, "pointProperty" elements contain a point that may be referenced from other
geometry elements or reference another point defined outside of this curve segment
(reuse of existing points).
2. The "posList" element allows for a compact way to specifiy the coordinates of the
control points, if all control points are in the same coordinate reference systems
and belong to this curve segment only.
Deprecated with GML version 3.1.0. Use "pointProperty" instead.
Included for backwards compatibility with GML 3.0.0.
Deprecated with GML version 3.1.0. Use "posList" instead.
The attribute "degree" shall be the degree of the polynomial used for
interpolation in this spline.
The property "knot" shall be the sequence of distinct knots used to
define the spline basis functions.
The attribute "interpolation" specifies 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. For a Bezier the interpolation is fixed as "polynomialSpline".
The attribute isPolynomial is set to true as this is a polynomial
spline.
The property "knotType" is not relevant for Bezier curve segments.
A Surface is a 2dimensional primitive and is composed of one or more surface
patches. The surface patches are connected to one another.
The orientation of the surface is positive ("up"). The orientation of a surface chooses an
"up" direction through the choice of the upward normal, which, if the surface is not a
cycle, is the side of the surface from which the exterior boundary appears counterclockwise.
Reversal of the surface orientation reverses the curve orientation of each boundary
component, and interchanges the conceptual "up" and "down" direction of the surface. If the
surface is the boundary of a solid, the "up" direction is usually outward. For closed
surfaces, which have no boundary, the up direction is that of the surface patches, which
must be consistent with one another. Its included surface patches describe the interior
structure of the Surface.
This element encapsulates the patches of the surface.
This property element either references a surface via the XLinkattributes or
contains the surface element. A surface element is any element which is substitutable for
"_Surface".
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 Surface with an upnormal that reverses
the direction for this OrientableSurface, the sense of "the top of the surface".
References or contains the base surface (positive 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
Surface with an upnormal that reverses the direction for this OrientableSurface, the
sense of "the top of the surface". "+" is the default value.
The "_SurfacePatch" element is the abstract head of the substituition group for
all surface pach elements describing a continuous portion of a surface.
A surface patch defines a homogenuous portion of a surface.
This property element contains a list of surface patches. The order of the
elements is significant and shall be preserved when processing the array.
A container for an array of surface patches.
A 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 are coplanar and the
polygon uses planar interpolation in its interior. Implements GM_Polygon of ISO 19107.
The attribute "interpolation" specifies the interpolation mechanism used
for this surface patch. Currently only planar surface patches are defined in GML 3,
the attribute is fixed to "planar", i.e. the interpolation method shall return points
on a single plane. The boundary of the patch shall be contained within that plane.
Represents a triangle as a surface 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 must be four.
Constraint: The Ring shall be a LinearRing and must form a triangle,
the first and the last position must be coincident.
The attribute "interpolation" specifies the interpolation mechanism used
for this surface patch. Currently only planar surface patches are defined in GML 3,
the attribute is fixed to "planar", i.e. the interpolation method shall return points
on a single plane. The boundary of the patch shall be contained within that plane.
Represents a rectangle as a surface 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 must be five.
Constraint: The Ring shall be a LinearRing and must form a rectangle;
the first and the last position must be coincident.
The attribute "interpolation" specifies the interpolation mechanism used
for this surface patch. Currently only planar surface patches are defined in GML 3,
the attribute is fixed to "planar", i.e. the interpolation method shall return points
on a single plane. The boundary of the patch shall be contained within that plane.
This property element either references a curve via the XLinkattributes or
contains the curve element. A curve element is any element which is substitutable for
"_Curve".
A Ring is used to represent a single connected component of a surface boundary.
It consists of a sequence of curves connected in a cycle (an object whose boundary is
empty).
A Ring is structurally similar to a composite curve in that the endPoint of each curve in
the sequence is the startPoint of the next curve in the Sequence. Since the sequence is
circular, there is no exception to this rule. Each ring, like all boundaries, is a cycle and
each ring is simple.
NOTE: Even though each Ring is simple, the boundary need not be simple. The easiest case of
this is where one of the interior rings of a surface is tangent to its exterior ring.
This element references or contains one curve in the composite curve.
The curves are contiguous, the collection of curves is ordered.
NOTE: This definition allows for a nested structure, i.e. a CompositeCurve may use,
for example, another CompositeCurve as a curve member.
Encapsulates a ring to represent properties in features or geometry
collections.
Reference points which are organised
into sequences or grids(sequences of equal length sequences).
A gridded surface is a parametric curve
surface derived from a rectangular grid in the parameter
space. The rows from this grid are control points for
horizontal surface curves; the columns are control points
for vertical surface curves. The working assumption is that
for a pair of parametric coordinates (s, t) that the
horizontal curves for each integer offset are calculated
and evaluated at "s". The defines a sequence of control
points:
cn(s) : s 1 .....columns
From this sequence a vertical curve is calculated for "s",
and evaluated at "t". In most cases, the order of
calculation (horizontalvertical vs. verticalhorizontal)
does not make a difference. Where it does, the horizontal
vertical order shall be the one used.
Logically, any pair of curve interpolation types can lead
to a subtype of GriddedSurface. The following clauses
define some most commonly encountered surfaces that can
be represented in this manner.
This is the double indexed sequence
of control points, given in row major form.
NOTE! There in no assumption made about the shape
of the grid.
For example, the positions need not effect a "21/2D"
surface, consecutive points may be equal in any or all
of the ordinates. Further, the curves in either or both
directions may close.
The attribute rows gives the number
of rows in the parameter grid.
The attribute columns gives the number
of columns in the parameter grid.
A cone is a gridded surface given as a
family of conic sections whose control points vary linearly.
NOTE! A 5point ellipse with all defining positions identical
is a point. Thus, a truncated elliptical cone can be given as a
2x5 set of control points
((P1, P1, P1, P1, P1), (P2, P3, P4, P5, P6)). P1 is the apex
of the cone. P2, P3,P4, P5 and P6 are any five distinct points
around the base ellipse of the cone. If the horizontal curves
are circles as opposed to ellipses, the a circular cone can
be constructed using ((P1, P1, P1),(P2, P3, P4)). The apex most
not coinside with the other plane.
A cylinder is a gridded surface given as a
family of circles whose positions vary along a set of parallel
lines, keeping the cross sectional horizontal curves of a
constant shape.
NOTE! Given the same working assumptions as in the previous
note, a Cylinder can be given by two circles, giving us the
control points of the form ((P1, P2, P3),(P4, P5, P6)).
A sphere is a gridded surface given as a
family of circles whose positions vary linearly along the
axis of the sphere, and whise radius varies in proportions to
the cosine function of the central angle. The horizontal
circles resemble lines of constant latitude, and the vertical
arcs resemble lines of constant longitude.
NOTE! If the control points are sorted in terms of increasing
longitude, and increasing latitude, the upNormal of a sphere
is the outward normal.
EXAMPLE If we take a gridded set of latitudes and longitudes
in degrees,(u,v) such as
(90,180) (90,90) (90,0) (90, 90) (90, 180)
(45,180) (45,90) (45,0) (45, 90) (45, 180)
( 0,180) ( 0,90) ( 0,0) ( 0, 90) ( 0, 180)
( 45,180) ( 45,90) ( 45,0) ( 45, 90) ( 45, 180)
( 90,180) ( 90,90) ( 90,0) ( 90, 90) ( 90, 180)
And map these points to 3D using the usual equations (where R
is the radius of the required sphere).
z = R sin u
x = (R cos u)(sin v)
y = (R cos u)(cos v)
We have a sphere of Radius R, centred at (0,0), as a gridded
surface. Notice that the entire first row and the entire last
row of the control points map to a single point in each 3D
Euclidean space, North and South poles respectively, and that
each horizontal curve closes back on itself forming a
geometric cycle. This gives us a metrically bounded (of finite
size), topologically unbounded (not having a boundary, a
cycle) surface.
A polyhedral surface is a surface composed
of polygon surfaces connected along their common boundary
curves. This differs from the surface type only in the
restriction on the types of surface patches acceptable.
This property encapsulates the patches of
the polyhedral surface.
This property element contains a list of
polygon patches. The order of the patches is significant and
shall be preserved when processing the list.
This type defines a container for an array of
polygon patches.
This property element contains a list of
triangle patches. The order of the patches is significant and
shall be preserved when processing the list.
This type defines a container for an array of
triangle patches.
A triangulated surface is a polyhedral
surface that is composed only of triangles. There is no
restriction on how the triangulation is derived.
This property encapsulates the patches of
the triangulated surface.
A tin is a triangulated surface that uses
the Delauny algorithm or a similar algorithm complemented with
consideration of breaklines, stoplines, and maximum length of
triangle sides. These networks satisfy the Delauny's criterion
away from the modifications: Fore each triangle in the
network, the circle passing through its vertices does not
contain, in its interior, the vertex of any other triangle.
Stoplines are lines where the local
continuity or regularity of the surface is questionable.
In the area of these pathologies, triangles intersecting
a stopline shall be removed from the tin surface, leaving
holes in the surface. If coincidence occurs on surface
boundary triangles, the result shall be a change of the
surface boundary. Stoplines contains all these
pathological segments as a set of line strings.
Breaklines are lines of a critical
nature to the shape of the surface, representing local
ridges, or depressions (such as drainage lines) in the
surface. As such their constituent segments must be
included in the tin eve if doing so
violates the Delauny criterion. Break lines contains these
critical segments as a set of line strings.
Areas of the surface where data is not
sufficiently dense to assure reasonable calculation shall be
removed by adding a retention criterion for triangles based
on the length of their sides. For many triangle sides
exceeding maximum length, the adjacent triangles to that
triangle side shall be removed from the surface.
The corners of the triangles in the TIN
are often referred to as pots. ControlPoint shall contain a
set of the GM_Position used as posts for this TIN. Since each
TIN contains triangles, there must be at least 3 posts. The
order in which these points are given does not affect the
surface that is represented. Application schemas may add
information based on ordering of control points to facilitate
the reconstruction of the TIN from the control points.
The "_Solid" element is the abstract head of the substituition group for all
(continuous) solid elements.
An abstraction of a solid to support the different levels of complexity. A
solid is always contiguous.
This property element either references a solid via the XLinkattributes or
contains the solid element. solidProperty is the predefined property which can be used by
GML Application Schemas whenever a GML Feature has a property with a value that is
substitutable for _Solid.
A property that has a solid as its value domain can 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 must be given, but neither both nor
none.
This attribute group includes the XLink attributes (see xlinks.xsd). XLink is
used in GML to reference remote resources (including those elsewhere in the same
document). A simple link element can be constructed by including a specific set of XLink
attributes. The XML Linking Language (XLink) is currently a Proposed Recommendation of the
World Wide Web Consortium. XLink allows elements to be inserted into XML documents so as
to create sophisticated links between resources; such links can be used to reference
remote properties.
A simple link element can be used to implement pointer functionality, and this
functionality has been built into various GML 3 elements by including the
gml:AssociationAttributeGroup.
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.
A solid is the basis for 3dimensional geometry. The extent of a solid is
defined by the boundary surfaces (shells). A shell is represented by a composite surface,
where every shell is used to represent a single connected component of the boundary of a
solid. It consists of a composite surface (a list of orientable surfaces) connected in a
topological cycle (an object whose boundary is empty). Unlike a Ring, a Shell's elements
have no natural sort order. Like Rings, Shells are simple.
Boundaries of solids are similar to surface boundaries. In normal
3dimensional Euclidean space, one (composite) surface is distinguished as the
exterior. In the more general case, this is not always possible.
Boundaries of solids are similar to surface boundaries.
CurveInterpolationType is a list of codes that may be used to identify the
interpolation mechanisms specified by an
application schema.
SurfaceInterpolationType is a list of codes that may be used to identify the
interpolation mechanisms specified by an
application schema.
Defines allowed values for the knots` type. Uniform knots implies that all
knots are of multiplicity 1 and they differ by a positive constant from the preceding knot.
Knots are quasiuniform iff they are of multiplicity (degree + 1) at the ends, of
multiplicity 1 elsewhere, and they differ by a positive constant from the preceding knot.