1 |
9559
|
tao
|
<?xml version="1.0" encoding="UTF-8"?>
|
2 |
|
|
<!-- edited with XMLSPY v5 rel. 2 U (http://www.xmlspy.com) by Clemens Portele (interactive instruments) -->
|
3 |
|
|
<schema targetNamespace="http://www.opengis.net/gml" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:sch="http://www.ascc.net/xml/schematron" xmlns:gml="http://www.opengis.net/gml" xmlns:xlink="http://www.w3.org/1999/xlink" elementFormDefault="qualified"
|
4 |
|
|
version="3.1.1.2">
|
5 |
|
|
<annotation>
|
6 |
|
|
<appinfo source="urn:opengis:specification:gml:schema-xsd:geometryPrimitives:3.1.1">geometryPrimitives.xsd</appinfo>
|
7 |
|
|
<documentation>
|
8 |
|
|
GML is an OGC Standard.
|
9 |
|
|
Copyright (c) 2001,2005,2010 Open Geospatial Consortium.
|
10 |
|
|
To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .
|
11 |
|
|
</documentation>
|
12 |
|
|
</annotation>
|
13 |
|
|
<!-- =========================================================== -->
|
14 |
|
|
<include schemaLocation="gml.xsd"/>
|
15 |
|
|
<include schemaLocation="geometryBasic2d.xsd"/>
|
16 |
|
|
<!-- =========================================================== -->
|
17 |
|
|
<element name="Curve" type="gml:CurveType" substitutionGroup="gml:_Curve"/>
|
18 |
|
|
<!-- =========================================================== -->
|
19 |
|
|
<complexType name="CurveType">
|
20 |
|
|
<annotation>
|
21 |
|
|
<documentation>Curve is a 1-dimensional primitive. Curves are continuous, connected, and have a measurable length in terms of the coordinate system.
|
22 |
|
|
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.
|
23 |
|
|
The orientation of the curve is positive.</documentation>
|
24 |
|
|
</annotation>
|
25 |
|
|
<complexContent>
|
26 |
|
|
<extension base="gml:AbstractCurveType">
|
27 |
|
|
<sequence>
|
28 |
|
|
<element ref="gml:segments">
|
29 |
|
|
<annotation>
|
30 |
|
|
<documentation>This element encapsulates the segments of the curve.</documentation>
|
31 |
|
|
</annotation>
|
32 |
|
|
</element>
|
33 |
|
|
</sequence>
|
34 |
|
|
</extension>
|
35 |
|
|
</complexContent>
|
36 |
|
|
</complexType>
|
37 |
|
|
<!-- =========================================================== -->
|
38 |
|
|
<element name="baseCurve" type="gml:CurvePropertyType">
|
39 |
|
|
<annotation>
|
40 |
|
|
<appinfo>
|
41 |
|
|
<sch:pattern name="Check either href or content not both">
|
42 |
|
|
<sch:rule context="gml:baseCurve">
|
43 |
|
|
<sch:extends rule="hrefOrContent"/>
|
44 |
|
|
</sch:rule>
|
45 |
|
|
</sch:pattern>
|
46 |
|
|
</appinfo>
|
47 |
|
|
<documentation>This property element either references a curve via the XLink-attributes or contains the curve element. A curve element is any element which is substitutable for "_Curve".</documentation>
|
48 |
|
|
</annotation>
|
49 |
|
|
</element>
|
50 |
|
|
<!-- =========================================================== -->
|
51 |
|
|
<element name="OrientableCurve" type="gml:OrientableCurveType" substitutionGroup="gml:_Curve"/>
|
52 |
|
|
<!-- =========================================================== -->
|
53 |
|
|
<complexType name="OrientableCurveType">
|
54 |
|
|
<annotation>
|
55 |
|
|
<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 _Curve with a parameterization that reverses the sense of the curve traversal.</documentation>
|
56 |
|
|
</annotation>
|
57 |
|
|
<complexContent>
|
58 |
|
|
<extension base="gml:AbstractCurveType">
|
59 |
|
|
<sequence>
|
60 |
|
|
<element ref="gml:baseCurve">
|
61 |
|
|
<annotation>
|
62 |
|
|
<documentation>References or contains the base curve (positive orientation).
|
63 |
|
|
NOTE: This definition allows for a nested structure, i.e. an OrientableCurve may use another OrientableCurve as its base curve.</documentation>
|
64 |
|
|
</annotation>
|
65 |
|
|
</element>
|
66 |
|
|
</sequence>
|
67 |
|
|
<attribute name="orientation" type="gml:SignType" default="+">
|
68 |
|
|
<annotation>
|
69 |
|
|
<documentation>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.</documentation>
|
70 |
|
|
</annotation>
|
71 |
|
|
</attribute>
|
72 |
|
|
</extension>
|
73 |
|
|
</complexContent>
|
74 |
|
|
</complexType>
|
75 |
|
|
<!-- =========================================================== -->
|
76 |
|
|
<!-- curve segments (1-dimensional) -->
|
77 |
|
|
<!-- =========================================================== -->
|
78 |
|
|
<!-- =========================================================== -->
|
79 |
|
|
<element name="_CurveSegment" type="gml:AbstractCurveSegmentType" abstract="true">
|
80 |
|
|
<annotation>
|
81 |
|
|
<documentation>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.</documentation>
|
82 |
|
|
</annotation>
|
83 |
|
|
</element>
|
84 |
|
|
<!-- =========================================================== -->
|
85 |
|
|
<complexType name="AbstractCurveSegmentType" abstract="true">
|
86 |
|
|
<annotation>
|
87 |
|
|
<documentation>Curve segment defines a homogeneous segment of a curve.</documentation>
|
88 |
|
|
</annotation>
|
89 |
|
|
<sequence/>
|
90 |
|
|
<attribute name="numDerivativesAtStart" type="integer" use="optional" default="0">
|
91 |
|
|
<annotation>
|
92 |
|
|
<documentation>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.
|
93 |
|
|
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.</documentation>
|
94 |
|
|
</annotation>
|
95 |
|
|
</attribute>
|
96 |
|
|
<attribute name="numDerivativesAtEnd" type="integer" use="optional" default="0">
|
97 |
|
|
<annotation>
|
98 |
|
|
<documentation>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.
|
99 |
|
|
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.</documentation>
|
100 |
|
|
</annotation>
|
101 |
|
|
</attribute>
|
102 |
|
|
<attribute name="numDerivativeInterior" type="integer" use="optional" default="0">
|
103 |
|
|
<annotation>
|
104 |
|
|
<documentation>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.
|
105 |
|
|
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.</documentation>
|
106 |
|
|
</annotation>
|
107 |
|
|
</attribute>
|
108 |
|
|
</complexType>
|
109 |
|
|
<!-- =========================================================== -->
|
110 |
|
|
<element name="segments" type="gml:CurveSegmentArrayPropertyType">
|
111 |
|
|
<annotation>
|
112 |
|
|
<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>
|
113 |
|
|
</annotation>
|
114 |
|
|
</element>
|
115 |
|
|
<!-- =========================================================== -->
|
116 |
|
|
<complexType name="CurveSegmentArrayPropertyType">
|
117 |
|
|
<annotation>
|
118 |
|
|
<documentation>A container for an array of curve segments.</documentation>
|
119 |
|
|
</annotation>
|
120 |
|
|
<sequence>
|
121 |
|
|
<element ref="gml:_CurveSegment" minOccurs="0" maxOccurs="unbounded"/>
|
122 |
|
|
</sequence>
|
123 |
|
|
</complexType>
|
124 |
|
|
<!-- =========== global element in "_CurveSegment" substitution group ================ -->
|
125 |
|
|
<element name="LineStringSegment" type="gml:LineStringSegmentType" substitutionGroup="gml:_CurveSegment"/>
|
126 |
|
|
<!-- =========================================================== -->
|
127 |
|
|
<complexType name="LineStringSegmentType">
|
128 |
|
|
<annotation>
|
129 |
|
|
<documentation>A LineStringSegment is a curve segment that is defined by two or more coordinate tuples, with linear interpolation between them.
|
130 |
|
|
Note: LineStringSegment implements GM_LineString of ISO 19107.</documentation>
|
131 |
|
|
</annotation>
|
132 |
|
|
<complexContent>
|
133 |
|
|
<extension base="gml:AbstractCurveSegmentType">
|
134 |
|
|
<sequence>
|
135 |
|
|
<choice>
|
136 |
|
|
<annotation>
|
137 |
|
|
<documentation>GML supports two different ways to specify the control points of a curve segment.
|
138 |
|
|
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).
|
139 |
|
|
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.</documentation>
|
140 |
|
|
</annotation>
|
141 |
|
|
<choice minOccurs="2" maxOccurs="unbounded">
|
142 |
|
|
<element ref="gml:pos"/>
|
143 |
|
|
<element ref="gml:pointProperty"/>
|
144 |
|
|
<element ref="gml:pointRep">
|
145 |
|
|
<annotation>
|
146 |
|
|
<documentation>Deprecated with GML version 3.1.0. Use "pointProperty" instead. Included for backwards compatibility with GML 3.0.0.</documentation>
|
147 |
|
|
</annotation>
|
148 |
|
|
</element>
|
149 |
|
|
</choice>
|
150 |
|
|
<element ref="gml:posList"/>
|
151 |
|
|
<element ref="gml:coordinates">
|
152 |
|
|
<annotation>
|
153 |
|
|
<documentation>Deprecated with GML version 3.1.0. Use "posList" instead.</documentation>
|
154 |
|
|
</annotation>
|
155 |
|
|
</element>
|
156 |
|
|
</choice>
|
157 |
|
|
</sequence>
|
158 |
|
|
<attribute name="interpolation" type="gml:CurveInterpolationType" fixed="linear">
|
159 |
|
|
<annotation>
|
160 |
|
|
<documentation>The attribute "interpolation" specifies the curve interpolation mechanism used for this segment. This mechanism
|
161 |
|
|
uses the control points and control parameters to determine the position of this curve segment. For a LineStringSegment the interpolation is fixed as "linear".</documentation>
|
162 |
|
|
</annotation>
|
163 |
|
|
</attribute>
|
164 |
|
|
</extension>
|
165 |
|
|
</complexContent>
|
166 |
|
|
</complexType>
|
167 |
|
|
<!-- =========== global element in "_CurveSegment" substitution group ================ -->
|
168 |
|
|
<element name="ArcString" type="gml:ArcStringType" substitutionGroup="gml:_CurveSegment"/>
|
169 |
|
|
<!-- =========================================================== -->
|
170 |
|
|
<complexType name="ArcStringType">
|
171 |
|
|
<annotation>
|
172 |
|
|
<documentation>An ArcString is a curve segment that uses three-point circular arc interpolation.</documentation>
|
173 |
|
|
</annotation>
|
174 |
|
|
<complexContent>
|
175 |
|
|
<extension base="gml:AbstractCurveSegmentType">
|
176 |
|
|
<sequence>
|
177 |
|
|
<choice>
|
178 |
|
|
<annotation>
|
179 |
|
|
<documentation>GML supports two different ways to specify the control points of a curve segment.
|
180 |
|
|
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).
|
181 |
|
|
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.</documentation>
|
182 |
|
|
</annotation>
|
183 |
|
|
<choice minOccurs="3" maxOccurs="unbounded">
|
184 |
|
|
<element ref="gml:pos"/>
|
185 |
|
|
<element ref="gml:pointProperty"/>
|
186 |
|
|
<element ref="gml:pointRep">
|
187 |
|
|
<annotation>
|
188 |
|
|
<documentation>Deprecated with GML version 3.1.0. Use "pointProperty" instead. Included for backwards compatibility with GML 3.0.0.</documentation>
|
189 |
|
|
</annotation>
|
190 |
|
|
</element>
|
191 |
|
|
</choice>
|
192 |
|
|
<element ref="gml:posList"/>
|
193 |
|
|
<element ref="gml:coordinates">
|
194 |
|
|
<annotation>
|
195 |
|
|
<documentation>Deprecated with GML version 3.1.0. Use "posList" instead.</documentation>
|
196 |
|
|
</annotation>
|
197 |
|
|
</element>
|
198 |
|
|
</choice>
|
199 |
|
|
</sequence>
|
200 |
|
|
<attribute name="interpolation" type="gml:CurveInterpolationType" fixed="circularArc3Points">
|
201 |
|
|
<annotation>
|
202 |
|
|
<documentation>The attribute "interpolation" specifies the curve interpolation mechanism used for this segment. This mechanism
|
203 |
|
|
uses the control points and control parameters to determine the position of this curve segment. For an ArcString the interpolation is fixed as "circularArc3Points".</documentation>
|
204 |
|
|
</annotation>
|
205 |
|
|
</attribute>
|
206 |
|
|
<attribute name="numArc" type="integer" use="optional">
|
207 |
|
|
<annotation>
|
208 |
|
|
<documentation>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.</documentation>
|
209 |
|
|
</annotation>
|
210 |
|
|
</attribute>
|
211 |
|
|
</extension>
|
212 |
|
|
</complexContent>
|
213 |
|
|
</complexType>
|
214 |
|
|
<!-- =========== global element in "_CurveSegment" substitution group ================ -->
|
215 |
|
|
<element name="Arc" type="gml:ArcType" substitutionGroup="gml:ArcString"/>
|
216 |
|
|
<!-- =========================================================== -->
|
217 |
|
|
<complexType name="ArcType">
|
218 |
|
|
<annotation>
|
219 |
|
|
<documentation>An Arc is an arc string with only one arc unit, i.e. three control points.</documentation>
|
220 |
|
|
</annotation>
|
221 |
|
|
<complexContent>
|
222 |
|
|
<restriction base="gml:ArcStringType">
|
223 |
|
|
<sequence>
|
224 |
|
|
<choice>
|
225 |
|
|
<annotation>
|
226 |
|
|
<documentation>GML supports two different ways to specify the control points of a curve segment.
|
227 |
|
|
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).
|
228 |
|
|
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.</documentation>
|
229 |
|
|
</annotation>
|
230 |
|
|
<choice minOccurs="3" maxOccurs="3">
|
231 |
|
|
<element ref="gml:pos"/>
|
232 |
|
|
<element ref="gml:pointProperty"/>
|
233 |
|
|
<element ref="gml:pointRep">
|
234 |
|
|
<annotation>
|
235 |
|
|
<documentation>Deprecated with GML version 3.1.0. Use "pointProperty" instead. Included for backwards compatibility with GML 3.0.0.</documentation>
|
236 |
|
|
</annotation>
|
237 |
|
|
</element>
|
238 |
|
|
</choice>
|
239 |
|
|
<element ref="gml:posList"/>
|
240 |
|
|
<element ref="gml:coordinates">
|
241 |
|
|
<annotation>
|
242 |
|
|
<documentation>Deprecated with GML version 3.1.0. Use "posList" instead.</documentation>
|
243 |
|
|
</annotation>
|
244 |
|
|
</element>
|
245 |
|
|
</choice>
|
246 |
|
|
</sequence>
|
247 |
|
|
<attribute name="numArc" type="integer" use="optional" fixed="1">
|
248 |
|
|
<annotation>
|
249 |
|
|
<documentation>An arc is an arc string consiting of a single arc, the attribute is fixed to "1".</documentation>
|
250 |
|
|
</annotation>
|
251 |
|
|
</attribute>
|
252 |
|
|
</restriction>
|
253 |
|
|
</complexContent>
|
254 |
|
|
</complexType>
|
255 |
|
|
<!-- =========== global element in "_CurveSegment" substitution group ================ -->
|
256 |
|
|
<element name="Circle" type="gml:CircleType" substitutionGroup="gml:Arc"/>
|
257 |
|
|
<!-- =========================================================== -->
|
258 |
|
|
<complexType name="CircleType">
|
259 |
|
|
<annotation>
|
260 |
|
|
<documentation>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 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>
|
261 |
|
|
</annotation>
|
262 |
|
|
<complexContent>
|
263 |
|
|
<extension base="gml:ArcType"/>
|
264 |
|
|
</complexContent>
|
265 |
|
|
</complexType>
|
266 |
|
|
<!-- =========== global element in "_CurveSegment" substitution group ================ -->
|
267 |
|
|
<element name="ArcStringByBulge" type="gml:ArcStringByBulgeType" substitutionGroup="gml:_CurveSegment"/>
|
268 |
|
|
<!-- =========================================================== -->
|
269 |
|
|
<complexType name="ArcStringByBulgeType">
|
270 |
|
|
<annotation>
|
271 |
|
|
<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.</documentation>
|
272 |
|
|
</annotation>
|
273 |
|
|
<complexContent>
|
274 |
|
|
<extension base="gml:AbstractCurveSegmentType">
|
275 |
|
|
<sequence>
|
276 |
|
|
<choice>
|
277 |
|
|
<annotation>
|
278 |
|
|
<documentation>GML supports two different ways to specify the control points of a curve segment.
|
279 |
|
|
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).
|
280 |
|
|
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.</documentation>
|
281 |
|
|
</annotation>
|
282 |
|
|
<choice minOccurs="2" maxOccurs="unbounded">
|
283 |
|
|
<element ref="gml:pos"/>
|
284 |
|
|
<element ref="gml:pointProperty"/>
|
285 |
|
|
<element ref="gml:pointRep">
|
286 |
|
|
<annotation>
|
287 |
|
|
<documentation>Deprecated with GML version 3.1.0. Use "pointProperty" instead. Included for backwards compatibility with GML 3.0.0.</documentation>
|
288 |
|
|
</annotation>
|
289 |
|
|
</element>
|
290 |
|
|
</choice>
|
291 |
|
|
<element ref="gml:posList"/>
|
292 |
|
|
<element ref="gml:coordinates">
|
293 |
|
|
<annotation>
|
294 |
|
|
<documentation>Deprecated with GML version 3.1.0. Use "posList" instead.</documentation>
|
295 |
|
|
</annotation>
|
296 |
|
|
</element>
|
297 |
|
|
</choice>
|
298 |
|
|
<element name="bulge" type="double" maxOccurs="unbounded">
|
299 |
|
|
<annotation>
|
300 |
|
|
<documentation>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.
|
301 |
|
|
The midpoint of the resulting arc is given by: midPoint = ((startPoint + endPoint)/2.0) + bulge*normal</documentation>
|
302 |
|
|
</annotation>
|
303 |
|
|
</element>
|
304 |
|
|
<element name="normal" type="gml:VectorType" maxOccurs="unbounded">
|
305 |
|
|
<annotation>
|
306 |
|
|
<documentation>The attribute "normal" is a vector normal (perpendicular) to the chord of the arc, the line joining the first and last
|
307 |
|
|
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.
|
308 |
|
|
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.</documentation>
|
309 |
|
|
</annotation>
|
310 |
|
|
</element>
|
311 |
|
|
</sequence>
|
312 |
|
|
<attribute name="interpolation" type="gml:CurveInterpolationType" fixed="circularArc2PointWithBulge">
|
313 |
|
|
<annotation>
|
314 |
|
|
<documentation>The attribute "interpolation" specifies the curve interpolation mechanism used for this segment. This mechanism
|
315 |
|
|
uses the control points and control parameters to determine the position of this curve segment. For an ArcStringByBulge the interpolation is fixed as "circularArc2PointWithBulge".</documentation>
|
316 |
|
|
</annotation>
|
317 |
|
|
</attribute>
|
318 |
|
|
<attribute name="numArc" type="integer" use="optional">
|
319 |
|
|
<annotation>
|
320 |
|
|
<documentation>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.</documentation>
|
321 |
|
|
</annotation>
|
322 |
|
|
</attribute>
|
323 |
|
|
</extension>
|
324 |
|
|
</complexContent>
|
325 |
|
|
</complexType>
|
326 |
|
|
<!-- =========== global element in "_CurveSegment" substitution group ================ -->
|
327 |
|
|
<element name="ArcByBulge" type="gml:ArcByBulgeType" substitutionGroup="gml:ArcStringByBulge"/>
|
328 |
|
|
<!-- =========================================================== -->
|
329 |
|
|
<complexType name="ArcByBulgeType">
|
330 |
|
|
<annotation>
|
331 |
|
|
<documentation>An ArcByBulge is an arc string with only one arc unit, i.e. two control points and one bulge.</documentation>
|
332 |
|
|
</annotation>
|
333 |
|
|
<complexContent>
|
334 |
|
|
<restriction base="gml:ArcStringByBulgeType">
|
335 |
|
|
<sequence>
|
336 |
|
|
<choice>
|
337 |
|
|
<annotation>
|
338 |
|
|
<documentation>GML supports two different ways to specify the control points of a curve segment.
|
339 |
|
|
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).
|
340 |
|
|
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.</documentation>
|
341 |
|
|
</annotation>
|
342 |
|
|
<choice minOccurs="2" maxOccurs="2">
|
343 |
|
|
<element ref="gml:pos"/>
|
344 |
|
|
<element ref="gml:pointProperty"/>
|
345 |
|
|
<element ref="gml:pointRep">
|
346 |
|
|
<annotation>
|
347 |
|
|
<documentation>Deprecated with GML version 3.1.0. Use "pointProperty" instead. Included for backwards compatibility with GML 3.0.0.</documentation>
|
348 |
|
|
</annotation>
|
349 |
|
|
</element>
|
350 |
|
|
</choice>
|
351 |
|
|
<element ref="gml:posList"/>
|
352 |
|
|
<element ref="gml:coordinates">
|
353 |
|
|
<annotation>
|
354 |
|
|
<documentation>Deprecated with GML version 3.1.0. Use "posList" instead.</documentation>
|
355 |
|
|
</annotation>
|
356 |
|
|
</element>
|
357 |
|
|
</choice>
|
358 |
|
|
<element name="bulge" type="double">
|
359 |
|
|
<annotation>
|
360 |
|
|
<documentation>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.
|
361 |
|
|
The midpoint of the resulting arc is given by: midPoint = ((startPoint + endPoint)/2.0) + bulge*normal</documentation>
|
362 |
|
|
</annotation>
|
363 |
|
|
</element>
|
364 |
|
|
<element name="normal" type="gml:VectorType">
|
365 |
|
|
<annotation>
|
366 |
|
|
<documentation>The attribute "normal" is a vector normal (perpendicular) to the chord of the arc, the line joining the first and last
|
367 |
|
|
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.
|
368 |
|
|
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.</documentation>
|
369 |
|
|
</annotation>
|
370 |
|
|
</element>
|
371 |
|
|
</sequence>
|
372 |
|
|
<attribute name="numArc" type="integer" use="optional" fixed="1">
|
373 |
|
|
<annotation>
|
374 |
|
|
<documentation>An arc is an arc string consiting of a single arc, the attribute is fixed to "1".</documentation>
|
375 |
|
|
</annotation>
|
376 |
|
|
</attribute>
|
377 |
|
|
</restriction>
|
378 |
|
|
</complexContent>
|
379 |
|
|
</complexType>
|
380 |
|
|
<!-- =========== global element in "_CurveSegment" substitution group ================ -->
|
381 |
|
|
<element name="ArcByCenterPoint" type="gml:ArcByCenterPointType" substitutionGroup="gml:_CurveSegment"/>
|
382 |
|
|
<!-- =========================================================== -->
|
383 |
|
|
<complexType name="ArcByCenterPointType">
|
384 |
|
|
<annotation>
|
385 |
|
|
<documentation>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.</documentation>
|
386 |
|
|
</annotation>
|
387 |
|
|
<complexContent>
|
388 |
|
|
<extension base="gml:AbstractCurveSegmentType">
|
389 |
|
|
<sequence>
|
390 |
|
|
<choice>
|
391 |
|
|
<annotation>
|
392 |
|
|
<documentation>GML supports two different ways to specify the control points of a curve segment.
|
393 |
|
|
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).
|
394 |
|
|
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.</documentation>
|
395 |
|
|
</annotation>
|
396 |
|
|
<choice>
|
397 |
|
|
<element ref="gml:pos"/>
|
398 |
|
|
<element ref="gml:pointProperty"/>
|
399 |
|
|
<element ref="gml:pointRep">
|
400 |
|
|
<annotation>
|
401 |
|
|
<documentation>Deprecated with GML version 3.1.0. Use "pointProperty" instead. Included for backwards compatibility with GML 3.0.0.</documentation>
|
402 |
|
|
</annotation>
|
403 |
|
|
</element>
|
404 |
|
|
</choice>
|
405 |
|
|
<element ref="gml:posList"/>
|
406 |
|
|
<element ref="gml:coordinates">
|
407 |
|
|
<annotation>
|
408 |
|
|
<documentation>Deprecated with GML version 3.1.0. Use "posList" instead.</documentation>
|
409 |
|
|
</annotation>
|
410 |
|
|
</element>
|
411 |
|
|
</choice>
|
412 |
|
|
<element name="radius" type="gml:LengthType">
|
413 |
|
|
<annotation>
|
414 |
|
|
<documentation>The radius of the arc.</documentation>
|
415 |
|
|
</annotation>
|
416 |
|
|
</element>
|
417 |
|
|
<element name="startAngle" type="gml:AngleType" minOccurs="0">
|
418 |
|
|
<annotation>
|
419 |
|
|
<documentation>The bearing of the arc at the start.</documentation>
|
420 |
|
|
</annotation>
|
421 |
|
|
</element>
|
422 |
|
|
<element name="endAngle" type="gml:AngleType" minOccurs="0">
|
423 |
|
|
<annotation>
|
424 |
|
|
<documentation>The bearing of the arc at the end.</documentation>
|
425 |
|
|
</annotation>
|
426 |
|
|
</element>
|
427 |
|
|
</sequence>
|
428 |
|
|
<attribute name="interpolation" type="gml:CurveInterpolationType" fixed="circularArcCenterPointWithRadius">
|
429 |
|
|
<annotation>
|
430 |
|
|
<documentation>The attribute "interpolation" specifies the curve interpolation mechanism used for this segment. This mechanism
|
431 |
|
|
uses the control points and control parameters to determine the position of this curve segment. For an ArcByCenterPoint the interpolation is fixed as "circularArcCenterPointWithRadius".</documentation>
|
432 |
|
|
</annotation>
|
433 |
|
|
</attribute>
|
434 |
|
|
<attribute name="numArc" type="integer" use="required" fixed="1">
|
435 |
|
|
<annotation>
|
436 |
|
|
<documentation>Since this type describes always a single arc, the attribute is fixed to "1".</documentation>
|
437 |
|
|
</annotation>
|
438 |
|
|
</attribute>
|
439 |
|
|
</extension>
|
440 |
|
|
</complexContent>
|
441 |
|
|
</complexType>
|
442 |
|
|
<!-- =========== global element in "_CurveSegment" substitution group ================ -->
|
443 |
|
|
<element name="CircleByCenterPoint" type="gml:CircleByCenterPointType" substitutionGroup="gml:ArcByCenterPoint"/>
|
444 |
|
|
<!-- =========================================================== -->
|
445 |
|
|
<complexType name="CircleByCenterPointType">
|
446 |
|
|
<annotation>
|
447 |
|
|
<documentation>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.</documentation>
|
448 |
|
|
</annotation>
|
449 |
|
|
<complexContent>
|
450 |
|
|
<extension base="gml:ArcByCenterPointType"/>
|
451 |
|
|
</complexContent>
|
452 |
|
|
</complexType>
|
453 |
|
|
<!-- ================================================================================ -->
|
454 |
|
|
<element name="OffsetCurve" type="gml:OffsetCurveType" substitutionGroup="gml:_CurveSegment"/>
|
455 |
|
|
<!-- ================================================================================ -->
|
456 |
|
|
<complexType name="OffsetCurveType">
|
457 |
|
|
<annotation>
|
458 |
|
|
<documentation>An offset curve is a curve at a constant
|
459 |
|
|
distance from the basis curve. They can be useful as a cheap
|
460 |
|
|
and simple alternative to constructing curves that are offsets
|
461 |
|
|
by definition.</documentation>
|
462 |
|
|
</annotation>
|
463 |
|
|
<complexContent>
|
464 |
|
|
<extension base="gml:AbstractCurveSegmentType">
|
465 |
|
|
<sequence>
|
466 |
|
|
<element name="offsetBase" type="gml:CurvePropertyType">
|
467 |
|
|
<annotation>
|
468 |
|
|
<documentation>offsetBase is a reference to thecurve from which this
|
469 |
|
|
curve is define as an offset.</documentation>
|
470 |
|
|
</annotation>
|
471 |
|
|
</element>
|
472 |
|
|
<element name="distance" type="gml:LengthType">
|
473 |
|
|
<annotation>
|
474 |
|
|
<documentation>distance is the distance at which the
|
475 |
|
|
offset curve is generated from the basis curve. In 2D systems, positive distances
|
476 |
|
|
are to be to the left of the basis curve, and the negative distances are to be to the
|
477 |
|
|
right of the basis curve.</documentation>
|
478 |
|
|
</annotation>
|
479 |
|
|
</element>
|
480 |
|
|
<element name="refDirection" type="gml:VectorType" minOccurs="0">
|
481 |
|
|
<annotation>
|
482 |
|
|
<documentation>refDistance is used to define the vector
|
483 |
|
|
direction of the offset curve from the basis curve. It can
|
484 |
|
|
be omitted in the 2D case, where the distance can be
|
485 |
|
|
positive or negative. In that case, distance defines left
|
486 |
|
|
side (positive distance) or right side (negative distance)
|
487 |
|
|
with respect to the tangent to the basis curve.
|
488 |
|
|
|
489 |
|
|
In 3D the basis curve shall have a well defined tangent
|
490 |
|
|
direction for every point. The offset curve at any point
|
491 |
|
|
in 3D, the basis curve shall have a well-defined tangent
|
492 |
|
|
direction for every point. The offset curve at any point
|
493 |
|
|
(parameter) on the basis curve c is in the direction
|
494 |
|
|
- - - -
|
495 |
|
|
s = v x t where v = c.refDirection()
|
496 |
|
|
and
|
497 |
|
|
-
|
498 |
|
|
t = c.tangent()
|
499 |
|
|
-
|
500 |
|
|
For the offset direction to be well-defined, v shall not
|
501 |
|
|
on any point of the curve be in the same, or opposite,
|
502 |
|
|
direction as
|
503 |
|
|
-
|
504 |
|
|
t.
|
505 |
|
|
|
506 |
|
|
The default value of the refDirection shall be the local
|
507 |
|
|
co-ordinate axis vector for elevation, which indicates up for
|
508 |
|
|
the curve in a geographic sense.
|
509 |
|
|
|
510 |
|
|
NOTE! If the refDirection is the positive tangent to the
|
511 |
|
|
local elevation axis ("points upward"), then the offset
|
512 |
|
|
vector points to the left of the curve when viewed from
|
513 |
|
|
above.</documentation>
|
514 |
|
|
</annotation>
|
515 |
|
|
</element>
|
516 |
|
|
</sequence>
|
517 |
|
|
</extension>
|
518 |
|
|
</complexContent>
|
519 |
|
|
</complexType>
|
520 |
|
|
<!-- ====================================================== -->
|
521 |
|
|
<element name="AffinePlacement" type="gml:AffinePlacementType"/>
|
522 |
|
|
<!-- ====================================================== -->
|
523 |
|
|
<complexType name="AffinePlacementType">
|
524 |
|
|
<annotation>
|
525 |
|
|
<documentation>A placement takes a standard geometric
|
526 |
|
|
construction and places it in geographic space. It defines a
|
527 |
|
|
transformation from a constructive parameter space to the
|
528 |
|
|
co-ordinate space of the co-ordinate reference system being used.
|
529 |
|
|
Parameter spaces in formulae in this International Standard are
|
530 |
|
|
given as (u, v) in 2D and(u, v, w) in 3D. Co-ordinate reference
|
531 |
|
|
systems positions are given in formulae, in this International
|
532 |
|
|
Standard, by either (x, y) in 2D, or (x, y, z) in 3D.
|
533 |
|
|
|
534 |
|
|
Affine placements are defined by linear transformations from
|
535 |
|
|
parameter space to the target co-ordiante space. 2-dimensional
|
536 |
|
|
Cartesian parameter space,(u,v) transforms into 3-dimensional co-
|
537 |
|
|
ordinate reference systems,(x,y,z) by using an affine
|
538 |
|
|
transformation,(u,v)->(x,y,z) which is defined :
|
539 |
|
|
|
540 |
|
|
x ux vx x0
|
541 |
|
|
u
|
542 |
|
|
y = uy vy + y0
|
543 |
|
|
v
|
544 |
|
|
x uz vz z0
|
545 |
|
|
|
546 |
|
|
Then, given this equation, the location element of the
|
547 |
|
|
AffinePlacement is the direct position (x0, y0, z0), which is the
|
548 |
|
|
target position of the origin in (u, v). The two reference
|
549 |
|
|
directions (ux, uy, uz) and (vx, vy, vz) are the target
|
550 |
|
|
directions of the unit vectors at the origin in (u, v).</documentation>
|
551 |
|
|
</annotation>
|
552 |
|
|
<sequence>
|
553 |
|
|
<element name="location" type="gml:DirectPositionType">
|
554 |
|
|
<annotation>
|
555 |
|
|
<documentation>The location property gives
|
556 |
|
|
the target of the parameter space origin. This is the vector
|
557 |
|
|
(x0, y0, z0) in the formulae above.</documentation>
|
558 |
|
|
</annotation>
|
559 |
|
|
</element>
|
560 |
|
|
<element name="refDirection" type="gml:VectorType" maxOccurs="unbounded">
|
561 |
|
|
<annotation>
|
562 |
|
|
<documentation>The attribute refDirection gives the
|
563 |
|
|
target directions for the co-ordinate basis vectors of the
|
564 |
|
|
parameter space. These are the columns of the matrix in the
|
565 |
|
|
formulae given above. The number of directions given shall be
|
566 |
|
|
inDimension. The dimension of the directions shall be
|
567 |
|
|
outDimension.</documentation>
|
568 |
|
|
</annotation>
|
569 |
|
|
</element>
|
570 |
|
|
<element name="inDimension" type="positiveInteger">
|
571 |
|
|
<annotation>
|
572 |
|
|
<documentation>Dimension of the constructive parameter
|
573 |
|
|
space.</documentation>
|
574 |
|
|
</annotation>
|
575 |
|
|
</element>
|
576 |
|
|
<element name="outDimension" type="positiveInteger">
|
577 |
|
|
<annotation>
|
578 |
|
|
<documentation>Dimension of the co-ordinate space.</documentation>
|
579 |
|
|
</annotation>
|
580 |
|
|
</element>
|
581 |
|
|
</sequence>
|
582 |
|
|
</complexType>
|
583 |
|
|
<!-- = global element in "_CurveSegment" substitution group ========================== -->
|
584 |
|
|
<element name="Clothoid" type="gml:ClothoidType" substitutionGroup="gml:_CurveSegment"/>
|
585 |
|
|
<!-- ======================================================================= -->
|
586 |
|
|
<complexType name="ClothoidType">
|
587 |
|
|
<annotation>
|
588 |
|
|
<documentation>A clothoid, or Cornu's spiral, is plane
|
589 |
|
|
curve whose curvature is a fixed function of its length.
|
590 |
|
|
In suitably chosen co-ordinates it is given by Fresnel's
|
591 |
|
|
integrals.
|
592 |
|
|
|
593 |
|
|
x(t) = 0-integral-t cos(AT*T/2)dT
|
594 |
|
|
|
595 |
|
|
y(t) = 0-integral-t sin(AT*T/2)dT
|
596 |
|
|
|
597 |
|
|
This geometry is mainly used as a transition curve between
|
598 |
|
|
curves of type straight line to circular arc or circular arc
|
599 |
|
|
to circular arc. With this curve type it is possible to
|
600 |
|
|
achieve a C2-continous transition between the above mentioned
|
601 |
|
|
curve types. One formula for the Clothoid is A*A = R*t where
|
602 |
|
|
A is constant, R is the varying radius of curvature along the
|
603 |
|
|
the curve and t is the length along and given in the Fresnel
|
604 |
|
|
integrals.</documentation>
|
605 |
|
|
</annotation>
|
606 |
|
|
<complexContent>
|
607 |
|
|
<extension base="gml:AbstractCurveSegmentType">
|
608 |
|
|
<sequence>
|
609 |
|
|
<element name="refLocation">
|
610 |
|
|
<complexType>
|
611 |
|
|
<sequence>
|
612 |
|
|
<element ref="gml:AffinePlacement">
|
613 |
|
|
<annotation>
|
614 |
|
|
<documentation>The "refLocation" is an affine mapping
|
615 |
|
|
that places the curve defined by the Fresnel Integrals
|
616 |
|
|
into the co-ordinate reference system of this object.</documentation>
|
617 |
|
|
</annotation>
|
618 |
|
|
</element>
|
619 |
|
|
</sequence>
|
620 |
|
|
</complexType>
|
621 |
|
|
</element>
|
622 |
|
|
<element name="scaleFactor" type="decimal">
|
623 |
|
|
<annotation>
|
624 |
|
|
<documentation>The element gives the value for the
|
625 |
|
|
constant in the Fresnel's integrals.</documentation>
|
626 |
|
|
</annotation>
|
627 |
|
|
</element>
|
628 |
|
|
<element name="startParameter" type="double">
|
629 |
|
|
<annotation>
|
630 |
|
|
<documentation>The startParameter is the arc length
|
631 |
|
|
distance from the inflection point that will be the start
|
632 |
|
|
point for this curve segment. This shall be lower limit
|
633 |
|
|
used in the Fresnel integral and is the value of the
|
634 |
|
|
constructive parameter of this curve segment at its start
|
635 |
|
|
point. The startParameter can either be positive or
|
636 |
|
|
negative.
|
637 |
|
|
NOTE! If 0.0 (zero), lies between the startParameter and
|
638 |
|
|
the endParameter of the clothoid, then the curve goes
|
639 |
|
|
through the clothoid's inflection point, and the direction
|
640 |
|
|
of its radius of curvature, given by the second
|
641 |
|
|
derivative vector, changes sides with respect to the
|
642 |
|
|
tangent vector. The term length distance for the</documentation>
|
643 |
|
|
</annotation>
|
644 |
|
|
</element>
|
645 |
|
|
<element name="endParameter" type="double">
|
646 |
|
|
<annotation>
|
647 |
|
|
<documentation>The endParameter is the arc length
|
648 |
|
|
distance from the inflection point that will be the end
|
649 |
|
|
point for this curve segment. This shall be upper limit
|
650 |
|
|
used in the Fresnel integral and is the value of the
|
651 |
|
|
constructive parameter of this curve segment at its
|
652 |
|
|
start point. The startParameter can either be positive
|
653 |
|
|
or negative.</documentation>
|
654 |
|
|
</annotation>
|
655 |
|
|
</element>
|
656 |
|
|
</sequence>
|
657 |
|
|
</extension>
|
658 |
|
|
</complexContent>
|
659 |
|
|
</complexType>
|
660 |
|
|
<!-- = global element in "_CurveSegment" substitution group = -->
|
661 |
|
|
<element name="GeodesicString" type="gml:GeodesicStringType" substitutionGroup="gml:_CurveSegment"/>
|
662 |
|
|
<!-- ======================================================== -->
|
663 |
|
|
<complexType name="GeodesicStringType">
|
664 |
|
|
<annotation>
|
665 |
|
|
<documentation>A GeodesicString consists of sequence of
|
666 |
|
|
geodesic segments. The type essentially combines a sequence of
|
667 |
|
|
Geodesic into a single object.
|
668 |
|
|
The GeodesicString is computed from two or more positions and an
|
669 |
|
|
interpolation using geodesics defined from the geoid (or
|
670 |
|
|
ellipsoid) of the co-ordinate reference system being used.</documentation>
|
671 |
|
|
</annotation>
|
672 |
|
|
<complexContent>
|
673 |
|
|
<extension base="gml:AbstractCurveSegmentType">
|
674 |
|
|
<choice>
|
675 |
|
|
<element ref="gml:posList"/>
|
676 |
|
|
<group ref="gml:geometricPositionGroup" minOccurs="2" maxOccurs="unbounded"/>
|
677 |
|
|
</choice>
|
678 |
|
|
<attribute name="interpolation" type="gml:CurveInterpolationType" fixed="geodesic">
|
679 |
|
|
<annotation>
|
680 |
|
|
<documentation>The attribute "interpolation" specifies the
|
681 |
|
|
curve interpolation mechanism used for this segment. This
|
682 |
|
|
mechanism uses the control points and control parameters to
|
683 |
|
|
determine the position of this curve segment. For an
|
684 |
|
|
GeodesicString the interpolation is fixed as "geodesic".</documentation>
|
685 |
|
|
</annotation>
|
686 |
|
|
</attribute>
|
687 |
|
|
</extension>
|
688 |
|
|
</complexContent>
|
689 |
|
|
</complexType>
|
690 |
|
|
<!-- = global element in "_CurveSegment" substitution group = -->
|
691 |
|
|
<element name="Geodesic" type="gml:GeodesicType" substitutionGroup="gml:GeodesicString"/>
|
692 |
|
|
<!-- ======================================================== -->
|
693 |
|
|
<complexType name="GeodesicType">
|
694 |
|
|
<annotation>
|
695 |
|
|
<documentation>A Geodesic consists of two distinct
|
696 |
|
|
positions joined by a geodesic curve. The control points of
|
697 |
|
|
a Geodesic shall lie on the geodesic between its start
|
698 |
|
|
point and end points. Between these two points, a geodesic
|
699 |
|
|
curve defined from ellipsoid or geoid model used by the
|
700 |
|
|
co-ordinate reference systems may be used to interpolate
|
701 |
|
|
other positions. Any other point in the controlPoint array
|
702 |
|
|
must fall on this geodesic.</documentation>
|
703 |
|
|
</annotation>
|
704 |
|
|
<complexContent>
|
705 |
|
|
<extension base="gml:GeodesicStringType"/>
|
706 |
|
|
</complexContent>
|
707 |
|
|
</complexType>
|
708 |
|
|
<!-- =========== global element in "_CurveSegment" substitution group ================ -->
|
709 |
|
|
<element name="CubicSpline" type="gml:CubicSplineType" substitutionGroup="gml:_CurveSegment"/>
|
710 |
|
|
<!-- =========================================================== -->
|
711 |
|
|
<complexType name="CubicSplineType">
|
712 |
|
|
<annotation>
|
713 |
|
|
<documentation>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 line-strings, the parameterization by arc length is not necessarily still a polynomial.
|
714 |
|
|
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.
|
715 |
|
|
Note: only the direction of the vectors is relevant, not their length.</documentation>
|
716 |
|
|
</annotation>
|
717 |
|
|
<complexContent>
|
718 |
|
|
<extension base="gml:AbstractCurveSegmentType">
|
719 |
|
|
<sequence>
|
720 |
|
|
<choice>
|
721 |
|
|
<annotation>
|
722 |
|
|
<documentation>GML supports two different ways to specify the control points of a curve segment.
|
723 |
|
|
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).
|
724 |
|
|
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.</documentation>
|
725 |
|
|
</annotation>
|
726 |
|
|
<choice minOccurs="2" maxOccurs="unbounded">
|
727 |
|
|
<element ref="gml:pos"/>
|
728 |
|
|
<element ref="gml:pointProperty"/>
|
729 |
|
|
<element ref="gml:pointRep">
|
730 |
|
|
<annotation>
|
731 |
|
|
<documentation>Deprecated with GML version 3.1.0. Use "pointProperty" instead. Included for backwards compatibility with GML 3.0.0.</documentation>
|
732 |
|
|
</annotation>
|
733 |
|
|
</element>
|
734 |
|
|
</choice>
|
735 |
|
|
<element ref="gml:posList"/>
|
736 |
|
|
<element ref="gml:coordinates">
|
737 |
|
|
<annotation>
|
738 |
|
|
<documentation>Deprecated with GML version 3.1.0. Use "posList" instead.</documentation>
|
739 |
|
|
</annotation>
|
740 |
|
|
</element>
|
741 |
|
|
</choice>
|
742 |
|
|
<element name="vectorAtStart" type="gml:VectorType">
|
743 |
|
|
<annotation>
|
744 |
|
|
<documentation>"vectorAtStart" is the unit tangent vector at the start point of the spline.</documentation>
|
745 |
|
|
</annotation>
|
746 |
|
|
</element>
|
747 |
|
|
<element name="vectorAtEnd" type="gml:VectorType">
|
748 |
|
|
<annotation>
|
749 |
|
|
<documentation>"vectorAtEnd" is the unit tangent vector at the end point of the spline.</documentation>
|
750 |
|
|
</annotation>
|
751 |
|
|
</element>
|
752 |
|
|
</sequence>
|
753 |
|
|
<attribute name="interpolation" type="gml:CurveInterpolationType" fixed="cubicSpline">
|
754 |
|
|
<annotation>
|
755 |
|
|
<documentation>The attribute "interpolation" specifies the curve interpolation mechanism used for this segment. This mechanism
|
756 |
|
|
uses the control points and control parameters to determine the position of this curve segment. For a CubicSpline the interpolation is fixed as "cubicSpline".</documentation>
|
757 |
|
|
</annotation>
|
758 |
|
|
</attribute>
|
759 |
|
|
<attribute name="degree" type="integer" fixed="3">
|
760 |
|
|
<annotation>
|
761 |
|
|
<documentation>The degree for a cubic spline is "3".</documentation>
|
762 |
|
|
</annotation>
|
763 |
|
|
</attribute>
|
764 |
|
|
</extension>
|
765 |
|
|
</complexContent>
|
766 |
|
|
</complexType>
|
767 |
|
|
<!-- =========================================================== -->
|
768 |
|
|
<complexType name="KnotType">
|
769 |
|
|
<annotation>
|
770 |
|
|
<documentation>A knot is a breakpoint on a piecewise spline curve.</documentation>
|
771 |
|
|
</annotation>
|
772 |
|
|
<sequence>
|
773 |
|
|
<element name="value" type="double">
|
774 |
|
|
<annotation>
|
775 |
|
|
<documentation>The property "value" is the value of the parameter at the knot of the spline. The sequence of knots shall be a non-decreasing 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.</documentation>
|
776 |
|
|
</annotation>
|
777 |
|
|
</element>
|
778 |
|
|
<element name="multiplicity" type="nonNegativeInteger">
|
779 |
|
|
<annotation>
|
780 |
|
|
<documentation>The property "multiplicity" is the multiplicity of this knot used in the definition of the spline (with the same weight).</documentation>
|
781 |
|
|
</annotation>
|
782 |
|
|
</element>
|
783 |
|
|
<element name="weight" type="double">
|
784 |
|
|
<annotation>
|
785 |
|
|
<documentation>The property "weight" is the value of the averaging weight used for this knot of the spline.</documentation>
|
786 |
|
|
</annotation>
|
787 |
|
|
</element>
|
788 |
|
|
</sequence>
|
789 |
|
|
</complexType>
|
790 |
|
|
<!-- =========================================================== -->
|
791 |
|
|
<complexType name="KnotPropertyType">
|
792 |
|
|
<annotation>
|
793 |
|
|
<documentation>Encapsulates a knot to use it in a geometric type.</documentation>
|
794 |
|
|
</annotation>
|
795 |
|
|
<sequence>
|
796 |
|
|
<element name="Knot" type="gml:KnotType"/>
|
797 |
|
|
</sequence>
|
798 |
|
|
</complexType>
|
799 |
|
|
<!-- =========== global element in "_CurveSegment" substitution group ================ -->
|
800 |
|
|
<element name="BSpline" type="gml:BSplineType" substitutionGroup="gml:_CurveSegment"/>
|
801 |
|
|
<!-- =========================================================== -->
|
802 |
|
|
<complexType name="BSplineType">
|
803 |
|
|
<annotation>
|
804 |
|
|
<documentation>A B-Spline 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 non-decreasing 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.</documentation>
|
805 |
|
|
</annotation>
|
806 |
|
|
<complexContent>
|
807 |
|
|
<extension base="gml:AbstractCurveSegmentType">
|
808 |
|
|
<sequence>
|
809 |
|
|
<choice>
|
810 |
|
|
<annotation>
|
811 |
|
|
<documentation>GML supports two different ways to specify the control points of a curve segment.
|
812 |
|
|
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).
|
813 |
|
|
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.</documentation>
|
814 |
|
|
</annotation>
|
815 |
|
|
<choice minOccurs="0" maxOccurs="unbounded">
|
816 |
|
|
<element ref="gml:pos"/>
|
817 |
|
|
<element ref="gml:pointProperty"/>
|
818 |
|
|
<element ref="gml:pointRep">
|
819 |
|
|
<annotation>
|
820 |
|
|
<documentation>Deprecated with GML version 3.1.0. Use "pointProperty" instead. Included for backwards compatibility with GML 3.0.0.</documentation>
|
821 |
|
|
</annotation>
|
822 |
|
|
</element>
|
823 |
|
|
</choice>
|
824 |
|
|
<element ref="gml:posList"/>
|
825 |
|
|
<element ref="gml:coordinates">
|
826 |
|
|
<annotation>
|
827 |
|
|
<documentation>Deprecated with GML version 3.1.0. Use "posList" instead.</documentation>
|
828 |
|
|
</annotation>
|
829 |
|
|
</element>
|
830 |
|
|
</choice>
|
831 |
|
|
<element name="degree" type="nonNegativeInteger">
|
832 |
|
|
<annotation>
|
833 |
|
|
<documentation>The attribute "degree" shall be the degree of the polynomial used for interpolation in this spline.</documentation>
|
834 |
|
|
</annotation>
|
835 |
|
|
</element>
|
836 |
|
|
<element name="knot" type="gml:KnotPropertyType" minOccurs="2" maxOccurs="unbounded">
|
837 |
|
|
<annotation>
|
838 |
|
|
<documentation>The property "knot" shall be the sequence of distinct knots used to define the spline basis functions.</documentation>
|
839 |
|
|
</annotation>
|
840 |
|
|
</element>
|
841 |
|
|
</sequence>
|
842 |
|
|
<attribute name="interpolation" type="gml:CurveInterpolationType" default="polynomialSpline">
|
843 |
|
|
<annotation>
|
844 |
|
|
<documentation>The attribute "interpolation" specifies the curve interpolation mechanism used for this segment. This mechanism
|
845 |
|
|
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".</documentation>
|
846 |
|
|
</annotation>
|
847 |
|
|
</attribute>
|
848 |
|
|
<attribute name="isPolynomial" type="boolean" use="optional">
|
849 |
|
|
<annotation>
|
850 |
|
|
<documentation>The attribute isPolynomial is set to true if this is a polynomial spline.</documentation>
|
851 |
|
|
</annotation>
|
852 |
|
|
</attribute>
|
853 |
|
|
<attribute name="knotType" type="gml:KnotTypesType" use="optional">
|
854 |
|
|
<annotation>
|
855 |
|
|
<documentation>The attribute "knotType" gives the type of knot distribution used in defining this spline. This is for information only
|
856 |
|
|
and is set according to the different construction-functions.</documentation>
|
857 |
|
|
</annotation>
|
858 |
|
|
</attribute>
|
859 |
|
|
</extension>
|
860 |
|
|
</complexContent>
|
861 |
|
|
</complexType>
|
862 |
|
|
<!-- =========== global element in "_CurveSegment" substitution group ================ -->
|
863 |
|
|
<element name="Bezier" type="gml:BezierType" substitutionGroup="gml:BSpline"/>
|
864 |
|
|
<!-- =========================================================== -->
|
865 |
|
|
<complexType name="BezierType">
|
866 |
|
|
<annotation>
|
867 |
|
|
<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.</documentation>
|
868 |
|
|
</annotation>
|
869 |
|
|
<complexContent>
|
870 |
|
|
<restriction base="gml:BSplineType">
|
871 |
|
|
<sequence>
|
872 |
|
|
<choice>
|
873 |
|
|
<annotation>
|
874 |
|
|
<documentation>GML supports two different ways to specify the control points of a curve segment.
|
875 |
|
|
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).
|
876 |
|
|
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.</documentation>
|
877 |
|
|
</annotation>
|
878 |
|
|
<choice minOccurs="0" maxOccurs="unbounded">
|
879 |
|
|
<element ref="gml:pos"/>
|
880 |
|
|
<element ref="gml:pointProperty"/>
|
881 |
|
|
<element ref="gml:pointRep">
|
882 |
|
|
<annotation>
|
883 |
|
|
<documentation>Deprecated with GML version 3.1.0. Use "pointProperty" instead. Included for backwards compatibility with GML 3.0.0.</documentation>
|
884 |
|
|
</annotation>
|
885 |
|
|
</element>
|
886 |
|
|
</choice>
|
887 |
|
|
<element ref="gml:posList"/>
|
888 |
|
|
<element ref="gml:coordinates">
|
889 |
|
|
<annotation>
|
890 |
|
|
<documentation>Deprecated with GML version 3.1.0. Use "posList" instead.</documentation>
|
891 |
|
|
</annotation>
|
892 |
|
|
</element>
|
893 |
|
|
</choice>
|
894 |
|
|
<element name="degree" type="nonNegativeInteger">
|
895 |
|
|
<annotation>
|
896 |
|
|
<documentation>The attribute "degree" shall be the degree of the polynomial used for interpolation in this spline.</documentation>
|
897 |
|
|
</annotation>
|
898 |
|
|
</element>
|
899 |
|
|
<element name="knot" type="gml:KnotPropertyType" minOccurs="2" maxOccurs="2">
|
900 |
|
|
<annotation>
|
901 |
|
|
<documentation>The property "knot" shall be the sequence of distinct knots used to define the spline basis functions.</documentation>
|
902 |
|
|
</annotation>
|
903 |
|
|
</element>
|
904 |
|
|
</sequence>
|
905 |
|
|
<attribute name="interpolation" type="gml:CurveInterpolationType" fixed="polynomialSpline">
|
906 |
|
|
<annotation>
|
907 |
|
|
<documentation>The attribute "interpolation" specifies the curve interpolation mechanism used for this segment. This mechanism
|
908 |
|
|
uses the control points and control parameters to determine the position of this curve segment. For a Bezier the interpolation is fixed as "polynomialSpline".</documentation>
|
909 |
|
|
</annotation>
|
910 |
|
|
</attribute>
|
911 |
|
|
<attribute name="isPolynomial" type="boolean" fixed="true">
|
912 |
|
|
<annotation>
|
913 |
|
|
<documentation>The attribute isPolynomial is set to true as this is a polynomial spline.</documentation>
|
914 |
|
|
</annotation>
|
915 |
|
|
</attribute>
|
916 |
|
|
<attribute name="knotType" type="gml:KnotTypesType" use="prohibited">
|
917 |
|
|
<annotation>
|
918 |
|
|
<documentation>The property "knotType" is not relevant for Bezier curve segments.</documentation>
|
919 |
|
|
</annotation>
|
920 |
|
|
</attribute>
|
921 |
|
|
</restriction>
|
922 |
|
|
</complexContent>
|
923 |
|
|
</complexType>
|
924 |
|
|
<!-- =========================================================== -->
|
925 |
|
|
<element name="Surface" type="gml:SurfaceType" substitutionGroup="gml:_Surface"/>
|
926 |
|
|
<!-- =========================================================== -->
|
927 |
|
|
<complexType name="SurfaceType">
|
928 |
|
|
<annotation>
|
929 |
|
|
<documentation>A Surface is a 2-dimensional primitive and is composed of one or more surface patches. The surface patches are connected to one another.
|
930 |
|
|
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.</documentation>
|
931 |
|
|
</annotation>
|
932 |
|
|
<complexContent>
|
933 |
|
|
<extension base="gml:AbstractSurfaceType">
|
934 |
|
|
<sequence>
|
935 |
|
|
<element ref="gml:patches">
|
936 |
|
|
<annotation>
|
937 |
|
|
<documentation>This element encapsulates the patches of the surface.</documentation>
|
938 |
|
|
</annotation>
|
939 |
|
|
</element>
|
940 |
|
|
</sequence>
|
941 |
|
|
</extension>
|
942 |
|
|
</complexContent>
|
943 |
|
|
</complexType>
|
944 |
|
|
<!-- =========================================================== -->
|
945 |
|
|
<element name="baseSurface" type="gml:SurfacePropertyType">
|
946 |
|
|
<annotation>
|
947 |
|
|
<appinfo>
|
948 |
|
|
<sch:pattern name="Check either href or content not both">
|
949 |
|
|
<sch:rule context="gml:baseSurface">
|
950 |
|
|
<sch:extends rule="hrefOrContent"/>
|
951 |
|
|
</sch:rule>
|
952 |
|
|
</sch:pattern>
|
953 |
|
|
</appinfo>
|
954 |
|
|
<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 "_Surface".</documentation>
|
955 |
|
|
</annotation>
|
956 |
|
|
</element>
|
957 |
|
|
<!-- =========================================================== -->
|
958 |
|
|
<element name="OrientableSurface" type="gml:OrientableSurfaceType" substitutionGroup="gml:_Surface"/>
|
959 |
|
|
<!-- =========================================================== -->
|
960 |
|
|
<complexType name="OrientableSurfaceType">
|
961 |
|
|
<annotation>
|
962 |
|
|
<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 Surface with an up-normal that reverses the direction for this OrientableSurface, the sense of "the top of the surface".</documentation>
|
963 |
|
|
</annotation>
|
964 |
|
|
<complexContent>
|
965 |
|
|
<extension base="gml:AbstractSurfaceType">
|
966 |
|
|
<sequence>
|
967 |
|
|
<element ref="gml:baseSurface">
|
968 |
|
|
<annotation>
|
969 |
|
|
<documentation>References or contains the base surface (positive orientation).</documentation>
|
970 |
|
|
</annotation>
|
971 |
|
|
</element>
|
972 |
|
|
</sequence>
|
973 |
|
|
<attribute name="orientation" type="gml:SignType" default="+">
|
974 |
|
|
<annotation>
|
975 |
|
|
<documentation>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 up-normal that reverses the direction for this OrientableSurface, the sense of "the top of the surface". "+" is the default value.</documentation>
|
976 |
|
|
</annotation>
|
977 |
|
|
</attribute>
|
978 |
|
|
</extension>
|
979 |
|
|
</complexContent>
|
980 |
|
|
</complexType>
|
981 |
|
|
<!-- =========================================================== -->
|
982 |
|
|
<!-- surface patches (2-dimensional) -->
|
983 |
|
|
<!-- =========================================================== -->
|
984 |
|
|
<!-- =========================================================== -->
|
985 |
|
|
<element name="_SurfacePatch" type="gml:AbstractSurfacePatchType" abstract="true">
|
986 |
|
|
<annotation>
|
987 |
|
|
<documentation>The "_SurfacePatch" element is the abstract head of the substituition group for all surface pach elements describing a continuous portion of a surface.</documentation>
|
988 |
|
|
</annotation>
|
989 |
|
|
</element>
|
990 |
|
|
<!-- =========================================================== -->
|
991 |
|
|
<complexType name="AbstractSurfacePatchType" abstract="true">
|
992 |
|
|
<annotation>
|
993 |
|
|
<documentation>A surface patch defines a homogenuous portion of a surface.</documentation>
|
994 |
|
|
</annotation>
|
995 |
|
|
<sequence/>
|
996 |
|
|
</complexType>
|
997 |
|
|
<!-- =========================================================== -->
|
998 |
|
|
<element name="patches" type="gml:SurfacePatchArrayPropertyType">
|
999 |
|
|
<annotation>
|
1000 |
|
|
<documentation>This property element contains a list of surface patches. The order of the elements is significant and shall be preserved when processing the array.</documentation>
|
1001 |
|
|
</annotation>
|
1002 |
|
|
</element>
|
1003 |
|
|
<!-- =========================================================== -->
|
1004 |
|
|
<complexType name="SurfacePatchArrayPropertyType">
|
1005 |
|
|
<annotation>
|
1006 |
|
|
<documentation>A container for an array of surface patches.</documentation>
|
1007 |
|
|
</annotation>
|
1008 |
|
|
<sequence minOccurs="0" maxOccurs="unbounded">
|
1009 |
|
|
<element ref="gml:_SurfacePatch"/>
|
1010 |
|
|
</sequence>
|
1011 |
|
|
</complexType>
|
1012 |
|
|
<!-- =========================================================== -->
|
1013 |
|
|
<element name="PolygonPatch" type="gml:PolygonPatchType" substitutionGroup="gml:_SurfacePatch"/>
|
1014 |
|
|
<!-- =========================================================== -->
|
1015 |
|
|
<complexType name="PolygonPatchType">
|
1016 |
|
|
<annotation>
|
1017 |
|
|
<documentation>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.</documentation>
|
1018 |
|
|
</annotation>
|
1019 |
|
|
<complexContent>
|
1020 |
|
|
<extension base="gml:AbstractSurfacePatchType">
|
1021 |
|
|
<sequence>
|
1022 |
|
|
<element ref="gml:exterior" minOccurs="0"/>
|
1023 |
|
|
<element ref="gml:interior" minOccurs="0" maxOccurs="unbounded"/>
|
1024 |
|
|
</sequence>
|
1025 |
|
|
<attribute name="interpolation" type="gml:SurfaceInterpolationType" fixed="planar">
|
1026 |
|
|
<annotation>
|
1027 |
|
|
<documentation>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.</documentation>
|
1028 |
|
|
</annotation>
|
1029 |
|
|
</attribute>
|
1030 |
|
|
</extension>
|
1031 |
|
|
</complexContent>
|
1032 |
|
|
</complexType>
|
1033 |
|
|
<!-- =========================================================== -->
|
1034 |
|
|
<element name="Triangle" type="gml:TriangleType" substitutionGroup="gml:_SurfacePatch"/>
|
1035 |
|
|
<!-- =========================================================== -->
|
1036 |
|
|
<complexType name="TriangleType">
|
1037 |
|
|
<annotation>
|
1038 |
|
|
<documentation>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.</documentation>
|
1039 |
|
|
</annotation>
|
1040 |
|
|
<complexContent>
|
1041 |
|
|
<extension base="gml:AbstractSurfacePatchType">
|
1042 |
|
|
<sequence>
|
1043 |
|
|
<element ref="gml:exterior">
|
1044 |
|
|
<annotation>
|
1045 |
|
|
<documentation>Constraint: The Ring shall be a LinearRing and must form a triangle, the first and the last position must be co-incident.</documentation>
|
1046 |
|
|
</annotation>
|
1047 |
|
|
</element>
|
1048 |
|
|
</sequence>
|
1049 |
|
|
<attribute name="interpolation" type="gml:SurfaceInterpolationType" fixed="planar">
|
1050 |
|
|
<annotation>
|
1051 |
|
|
<documentation>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.</documentation>
|
1052 |
|
|
</annotation>
|
1053 |
|
|
</attribute>
|
1054 |
|
|
</extension>
|
1055 |
|
|
</complexContent>
|
1056 |
|
|
</complexType>
|
1057 |
|
|
<!-- =========================================================== -->
|
1058 |
|
|
<element name="Rectangle" type="gml:RectangleType" substitutionGroup="gml:_SurfacePatch"/>
|
1059 |
|
|
<!-- =========================================================== -->
|
1060 |
|
|
<complexType name="RectangleType">
|
1061 |
|
|
<annotation>
|
1062 |
|
|
<documentation>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.</documentation>
|
1063 |
|
|
</annotation>
|
1064 |
|
|
<complexContent>
|
1065 |
|
|
<extension base="gml:AbstractSurfacePatchType">
|
1066 |
|
|
<sequence>
|
1067 |
|
|
<element ref="gml:exterior">
|
1068 |
|
|
<annotation>
|
1069 |
|
|
<documentation>Constraint: The Ring shall be a LinearRing and must form a rectangle; the first and the last position must be co-incident.</documentation>
|
1070 |
|
|
</annotation>
|
1071 |
|
|
</element>
|
1072 |
|
|
</sequence>
|
1073 |
|
|
<attribute name="interpolation" type="gml:SurfaceInterpolationType" fixed="planar">
|
1074 |
|
|
<annotation>
|
1075 |
|
|
<documentation>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.</documentation>
|
1076 |
|
|
</annotation>
|
1077 |
|
|
</attribute>
|
1078 |
|
|
</extension>
|
1079 |
|
|
</complexContent>
|
1080 |
|
|
</complexType>
|
1081 |
|
|
<!-- =========================================================== -->
|
1082 |
|
|
<element name="curveMember" type="gml:CurvePropertyType">
|
1083 |
|
|
<annotation>
|
1084 |
|
|
<documentation>This property element either references a curve via the XLink-attributes or contains the curve element. A curve element is any element which is substitutable for "_Curve".</documentation>
|
1085 |
|
|
</annotation>
|
1086 |
|
|
</element>
|
1087 |
|
|
<!-- =========================================================== -->
|
1088 |
|
|
<element name="Ring" type="gml:RingType" substitutionGroup="gml:_Ring"/>
|
1089 |
|
|
<!-- =========================================================== -->
|
1090 |
|
|
<complexType name="RingType">
|
1091 |
|
|
<annotation>
|
1092 |
|
|
<documentation>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).
|
1093 |
|
|
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.
|
1094 |
|
|
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.</documentation>
|
1095 |
|
|
</annotation>
|
1096 |
|
|
<complexContent>
|
1097 |
|
|
<extension base="gml:AbstractRingType">
|
1098 |
|
|
<sequence>
|
1099 |
|
|
<element ref="gml:curveMember" maxOccurs="unbounded">
|
1100 |
|
|
<annotation>
|
1101 |
|
|
<documentation>This element references or contains one curve in the composite curve. The curves are contiguous, the collection of curves is ordered.
|
1102 |
|
|
NOTE: This definition allows for a nested structure, i.e. a CompositeCurve may use, for example, another CompositeCurve as a curve member.</documentation>
|
1103 |
|
|
</annotation>
|
1104 |
|
|
</element>
|
1105 |
|
|
</sequence>
|
1106 |
|
|
</extension>
|
1107 |
|
|
</complexContent>
|
1108 |
|
|
</complexType>
|
1109 |
|
|
<!-- =========================================================== -->
|
1110 |
|
|
<complexType name="RingPropertyType">
|
1111 |
|
|
<annotation>
|
1112 |
|
|
<documentation>Encapsulates a ring to represent properties in features or geometry collections.</documentation>
|
1113 |
|
|
</annotation>
|
1114 |
|
|
<sequence>
|
1115 |
|
|
<element ref="gml:Ring"/>
|
1116 |
|
|
</sequence>
|
1117 |
|
|
</complexType>
|
1118 |
|
|
<!-- =========================================================== -->
|
1119 |
|
|
<group name="PointGrid">
|
1120 |
|
|
<annotation>
|
1121 |
|
|
<documentation>Reference points which are organised
|
1122 |
|
|
into sequences or grids(sequences of equal length sequences).</documentation>
|
1123 |
|
|
</annotation>
|
1124 |
|
|
<sequence>
|
1125 |
|
|
<element name="row" maxOccurs="unbounded">
|
1126 |
|
|
<complexType>
|
1127 |
|
|
<sequence>
|
1128 |
|
|
<group ref="gml:geometricPositionListGroup"/>
|
1129 |
|
|
</sequence>
|
1130 |
|
|
</complexType>
|
1131 |
|
|
</element>
|
1132 |
|
|
</sequence>
|
1133 |
|
|
</group>
|
1134 |
|
|
<!-- ====================================================== -->
|
1135 |
|
|
<element name="_ParametricCurveSurface" type="gml:AbstractParametricCurveSurfaceType" abstract="true" substitutionGroup="gml:_SurfacePatch"/>
|
1136 |
|
|
<!-- ====================================================== -->
|
1137 |
|
|
<complexType name="AbstractParametricCurveSurfaceType">
|
1138 |
|
|
<annotation>
|
1139 |
|
|
<documentation>
|
1140 |
|
|
</documentation>
|
1141 |
|
|
</annotation>
|
1142 |
|
|
<complexContent>
|
1143 |
|
|
<extension base="gml:AbstractSurfacePatchType"/>
|
1144 |
|
|
</complexContent>
|
1145 |
|
|
</complexType>
|
1146 |
|
|
<!-- ======================================================== -->
|
1147 |
|
|
<element name="_GriddedSurface" type="gml:AbstractGriddedSurfaceType" abstract="true" substitutionGroup="gml:_ParametricCurveSurface"/>
|
1148 |
|
|
<!-- ======================================================== -->
|
1149 |
|
|
<complexType name="AbstractGriddedSurfaceType">
|
1150 |
|
|
<annotation>
|
1151 |
|
|
<documentation>A gridded surface is a parametric curve
|
1152 |
|
|
surface derived from a rectangular grid in the parameter
|
1153 |
|
|
space. The rows from this grid are control points for
|
1154 |
|
|
horizontal surface curves; the columns are control points
|
1155 |
|
|
for vertical surface curves. The working assumption is that
|
1156 |
|
|
for a pair of parametric co-ordinates (s, t) that the
|
1157 |
|
|
horizontal curves for each integer offset are calculated
|
1158 |
|
|
and evaluated at "s". The defines a sequence of control
|
1159 |
|
|
points:
|
1160 |
|
|
|
1161 |
|
|
cn(s) : s 1 .....columns
|
1162 |
|
|
|
1163 |
|
|
From this sequence a vertical curve is calculated for "s",
|
1164 |
|
|
and evaluated at "t". In most cases, the order of
|
1165 |
|
|
calculation (horizontal-vertical vs. vertical-horizontal)
|
1166 |
|
|
does not make a difference. Where it does, the horizontal-
|
1167 |
|
|
vertical order shall be the one used.
|
1168 |
|
|
|
1169 |
|
|
Logically, any pair of curve interpolation types can lead
|
1170 |
|
|
to a subtype of GriddedSurface. The following clauses
|
1171 |
|
|
define some most commonly encountered surfaces that can
|
1172 |
|
|
be represented in this manner.</documentation>
|
1173 |
|
|
</annotation>
|
1174 |
|
|
<complexContent>
|
1175 |
|
|
<extension base="gml:AbstractParametricCurveSurfaceType">
|
1176 |
|
|
<sequence>
|
1177 |
|
|
<group ref="gml:PointGrid">
|
1178 |
|
|
<annotation>
|
1179 |
|
|
<documentation>This is the double indexed sequence
|
1180 |
|
|
of control points, given in row major form.
|
1181 |
|
|
NOTE! There in no assumption made about the shape
|
1182 |
|
|
of the grid.
|
1183 |
|
|
For example, the positions need not effect a "21/2D"
|
1184 |
|
|
surface, consecutive points may be equal in any or all
|
1185 |
|
|
of the ordinates. Further, the curves in either or both
|
1186 |
|
|
directions may close.</documentation>
|
1187 |
|
|
</annotation>
|
1188 |
|
|
</group>
|
1189 |
|
|
<element name="rows" type="integer" minOccurs="0">
|
1190 |
|
|
<annotation>
|
1191 |
|
|
<documentation>The attribute rows gives the number
|
1192 |
|
|
of rows in the parameter grid.</documentation>
|
1193 |
|
|
</annotation>
|
1194 |
|
|
</element>
|
1195 |
|
|
<element name="columns" type="integer" minOccurs="0">
|
1196 |
|
|
<annotation>
|
1197 |
|
|
<documentation>The attribute columns gives the number
|
1198 |
|
|
of columns in the parameter grid.</documentation>
|
1199 |
|
|
</annotation>
|
1200 |
|
|
</element>
|
1201 |
|
|
</sequence>
|
1202 |
|
|
</extension>
|
1203 |
|
|
</complexContent>
|
1204 |
|
|
</complexType>
|
1205 |
|
|
<!-- ======================================================== -->
|
1206 |
|
|
<element name="Cone" type="gml:ConeType" substitutionGroup="gml:_GriddedSurface"/>
|
1207 |
|
|
<!-- ======================================================== -->
|
1208 |
|
|
<complexType name="ConeType">
|
1209 |
|
|
<annotation>
|
1210 |
|
|
<documentation>A cone is a gridded surface given as a
|
1211 |
|
|
family of conic sections whose control points vary linearly.
|
1212 |
|
|
NOTE! A 5-point ellipse with all defining positions identical
|
1213 |
|
|
is a point. Thus, a truncated elliptical cone can be given as a
|
1214 |
|
|
2x5 set of control points
|
1215 |
|
|
((P1, P1, P1, P1, P1), (P2, P3, P4, P5, P6)). P1 is the apex
|
1216 |
|
|
of the cone. P2, P3,P4, P5 and P6 are any five distinct points
|
1217 |
|
|
around the base ellipse of the cone. If the horizontal curves
|
1218 |
|
|
are circles as opposed to ellipses, the a circular cone can
|
1219 |
|
|
be constructed using ((P1, P1, P1),(P2, P3, P4)). The apex most
|
1220 |
|
|
not coinside with the other plane.</documentation>
|
1221 |
|
|
</annotation>
|
1222 |
|
|
<complexContent>
|
1223 |
|
|
<extension base="gml:AbstractGriddedSurfaceType">
|
1224 |
|
|
<attribute name="horizontalCurveType" type="gml:CurveInterpolationType" fixed="circularArc3Points"/>
|
1225 |
|
|
<attribute name="verticalCurveType" type="gml:CurveInterpolationType" fixed="linear"/>
|
1226 |
|
|
</extension>
|
1227 |
|
|
</complexContent>
|
1228 |
|
|
</complexType>
|
1229 |
|
|
<!-- ======================================================== -->
|
1230 |
|
|
<element name="Cylinder" type="gml:CylinderType" substitutionGroup="gml:_GriddedSurface"/>
|
1231 |
|
|
<!-- ======================================================== -->
|
1232 |
|
|
<complexType name="CylinderType">
|
1233 |
|
|
<annotation>
|
1234 |
|
|
<documentation>A cylinder is a gridded surface given as a
|
1235 |
|
|
family of circles whose positions vary along a set of parallel
|
1236 |
|
|
lines, keeping the cross sectional horizontal curves of a
|
1237 |
|
|
constant shape.
|
1238 |
|
|
NOTE! Given the same working assumptions as in the previous
|
1239 |
|
|
note, a Cylinder can be given by two circles, giving us the
|
1240 |
|
|
control points of the form ((P1, P2, P3),(P4, P5, P6)).</documentation>
|
1241 |
|
|
</annotation>
|
1242 |
|
|
<complexContent>
|
1243 |
|
|
<extension base="gml:AbstractGriddedSurfaceType">
|
1244 |
|
|
<attribute name="horizontalCurveType" type="gml:CurveInterpolationType" fixed="circularArc3Points"/>
|
1245 |
|
|
<attribute name="verticalCurveType" type="gml:CurveInterpolationType" fixed="linear"/>
|
1246 |
|
|
</extension>
|
1247 |
|
|
</complexContent>
|
1248 |
|
|
</complexType>
|
1249 |
|
|
<!-- ======================================================== -->
|
1250 |
|
|
<element name="Sphere" type="gml:SphereType" substitutionGroup="gml:_GriddedSurface"/>
|
1251 |
|
|
<!-- ======================================================== -->
|
1252 |
|
|
<complexType name="SphereType">
|
1253 |
|
|
<annotation>
|
1254 |
|
|
<documentation>A sphere is a gridded surface given as a
|
1255 |
|
|
family of circles whose positions vary linearly along the
|
1256 |
|
|
axis of the sphere, and whise radius varies in proportions to
|
1257 |
|
|
the cosine function of the central angle. The horizontal
|
1258 |
|
|
circles resemble lines of constant latitude, and the vertical
|
1259 |
|
|
arcs resemble lines of constant longitude.
|
1260 |
|
|
NOTE! If the control points are sorted in terms of increasing
|
1261 |
|
|
longitude, and increasing latitude, the upNormal of a sphere
|
1262 |
|
|
is the outward normal.
|
1263 |
|
|
EXAMPLE If we take a gridded set of latitudes and longitudes
|
1264 |
|
|
in degrees,(u,v) such as
|
1265 |
|
|
|
1266 |
|
|
(-90,-180) (-90,-90) (-90,0) (-90, 90) (-90, 180)
|
1267 |
|
|
(-45,-180) (-45,-90) (-45,0) (-45, 90) (-45, 180)
|
1268 |
|
|
( 0,-180) ( 0,-90) ( 0,0) ( 0, 90) ( 0, 180)
|
1269 |
|
|
( 45,-180) ( 45,-90) ( 45,0) ( 45, -90) ( 45, 180)
|
1270 |
|
|
( 90,-180) ( 90,-90) ( 90,0) ( 90, -90) ( 90, 180)
|
1271 |
|
|
|
1272 |
|
|
And map these points to 3D using the usual equations (where R
|
1273 |
|
|
is the radius of the required sphere).
|
1274 |
|
|
|
1275 |
|
|
z = R sin u
|
1276 |
|
|
x = (R cos u)(sin v)
|
1277 |
|
|
y = (R cos u)(cos v)
|
1278 |
|
|
|
1279 |
|
|
We have a sphere of Radius R, centred at (0,0), as a gridded
|
1280 |
|
|
surface. Notice that the entire first row and the entire last
|
1281 |
|
|
row of the control points map to a single point in each 3D
|
1282 |
|
|
Euclidean space, North and South poles respectively, and that
|
1283 |
|
|
each horizontal curve closes back on itself forming a
|
1284 |
|
|
geometric cycle. This gives us a metrically bounded (of finite
|
1285 |
|
|
size), topologically unbounded (not having a boundary, a
|
1286 |
|
|
cycle) surface.</documentation>
|
1287 |
|
|
</annotation>
|
1288 |
|
|
<complexContent>
|
1289 |
|
|
<extension base="gml:AbstractGriddedSurfaceType">
|
1290 |
|
|
<attribute name="horizontalCurveType" type="gml:CurveInterpolationType" fixed="circularArc3Points"/>
|
1291 |
|
|
<attribute name="verticalCurveType" type="gml:CurveInterpolationType" fixed="circularArc3Points"/>
|
1292 |
|
|
</extension>
|
1293 |
|
|
</complexContent>
|
1294 |
|
|
</complexType>
|
1295 |
|
|
<!-- ======================================================== -->
|
1296 |
|
|
<element name="PolyhedralSurface" type="gml:PolyhedralSurfaceType" substitutionGroup="gml:Surface"/>
|
1297 |
|
|
<!-- ======================================================== -->
|
1298 |
|
|
<complexType name="PolyhedralSurfaceType">
|
1299 |
|
|
<annotation>
|
1300 |
|
|
<documentation>A polyhedral surface is a surface composed
|
1301 |
|
|
of polygon surfaces connected along their common boundary
|
1302 |
|
|
curves. This differs from the surface type only in the
|
1303 |
|
|
restriction on the types of surface patches acceptable.</documentation>
|
1304 |
|
|
</annotation>
|
1305 |
|
|
<complexContent>
|
1306 |
|
|
<restriction base="gml:SurfaceType">
|
1307 |
|
|
<sequence>
|
1308 |
|
|
<group ref="gml:StandardObjectProperties"/>
|
1309 |
|
|
<element ref="gml:polygonPatches">
|
1310 |
|
|
<annotation>
|
1311 |
|
|
<documentation>This property encapsulates the patches of
|
1312 |
|
|
the polyhedral surface.</documentation>
|
1313 |
|
|
</annotation>
|
1314 |
|
|
</element>
|
1315 |
|
|
</sequence>
|
1316 |
|
|
</restriction>
|
1317 |
|
|
</complexContent>
|
1318 |
|
|
</complexType>
|
1319 |
|
|
<!-- ======================================================== -->
|
1320 |
|
|
<element name="polygonPatches" type="gml:PolygonPatchArrayPropertyType" substitutionGroup="gml:patches">
|
1321 |
|
|
<annotation>
|
1322 |
|
|
<documentation>This property element contains a list of
|
1323 |
|
|
polygon patches. The order of the patches is significant and
|
1324 |
|
|
shall be preserved when processing the list.</documentation>
|
1325 |
|
|
</annotation>
|
1326 |
|
|
</element>
|
1327 |
|
|
<!-- ======================================================== -->
|
1328 |
|
|
<complexType name="PolygonPatchArrayPropertyType">
|
1329 |
|
|
<annotation>
|
1330 |
|
|
<documentation>This type defines a container for an array of
|
1331 |
|
|
polygon patches.</documentation>
|
1332 |
|
|
</annotation>
|
1333 |
|
|
<complexContent>
|
1334 |
|
|
<restriction base="gml:SurfacePatchArrayPropertyType">
|
1335 |
|
|
<sequence minOccurs="0" maxOccurs="unbounded">
|
1336 |
|
|
<element ref="gml:PolygonPatch"/>
|
1337 |
|
|
</sequence>
|
1338 |
|
|
</restriction>
|
1339 |
|
|
</complexContent>
|
1340 |
|
|
</complexType>
|
1341 |
|
|
<!-- ======================================================== -->
|
1342 |
|
|
<element name="trianglePatches" type="gml:TrianglePatchArrayPropertyType" substitutionGroup="gml:patches">
|
1343 |
|
|
<annotation>
|
1344 |
|
|
<documentation>This property element contains a list of
|
1345 |
|
|
triangle patches. The order of the patches is significant and
|
1346 |
|
|
shall be preserved when processing the list.</documentation>
|
1347 |
|
|
</annotation>
|
1348 |
|
|
</element>
|
1349 |
|
|
<!-- ======================================================== -->
|
1350 |
|
|
<complexType name="TrianglePatchArrayPropertyType">
|
1351 |
|
|
<annotation>
|
1352 |
|
|
<documentation>This type defines a container for an array of
|
1353 |
|
|
triangle patches.</documentation>
|
1354 |
|
|
</annotation>
|
1355 |
|
|
<complexContent>
|
1356 |
|
|
<restriction base="gml:SurfacePatchArrayPropertyType">
|
1357 |
|
|
<sequence minOccurs="0" maxOccurs="unbounded">
|
1358 |
|
|
<element ref="gml:Triangle"/>
|
1359 |
|
|
</sequence>
|
1360 |
|
|
</restriction>
|
1361 |
|
|
</complexContent>
|
1362 |
|
|
</complexType>
|
1363 |
|
|
<!-- ======================================================== -->
|
1364 |
|
|
<element name="TriangulatedSurface" type="gml:TriangulatedSurfaceType" substitutionGroup="gml:Surface"/>
|
1365 |
|
|
<!-- ======================================================== -->
|
1366 |
|
|
<complexType name="TriangulatedSurfaceType">
|
1367 |
|
|
<annotation>
|
1368 |
|
|
<documentation>A triangulated surface is a polyhedral
|
1369 |
|
|
surface that is composed only of triangles. There is no
|
1370 |
|
|
restriction on how the triangulation is derived.</documentation>
|
1371 |
|
|
</annotation>
|
1372 |
|
|
<complexContent>
|
1373 |
|
|
<restriction base="gml:SurfaceType">
|
1374 |
|
|
<sequence>
|
1375 |
|
|
<group ref="gml:StandardObjectProperties"/>
|
1376 |
|
|
<element ref="gml:trianglePatches">
|
1377 |
|
|
<annotation>
|
1378 |
|
|
<documentation>This property encapsulates the patches of
|
1379 |
|
|
the triangulated surface.</documentation>
|
1380 |
|
|
</annotation>
|
1381 |
|
|
</element>
|
1382 |
|
|
</sequence>
|
1383 |
|
|
</restriction>
|
1384 |
|
|
</complexContent>
|
1385 |
|
|
</complexType>
|
1386 |
|
|
<!-- ======================================================== -->
|
1387 |
|
|
<element name="Tin" type="gml:TinType" substitutionGroup="gml:TriangulatedSurface"/>
|
1388 |
|
|
<!-- ======================================================== -->
|
1389 |
|
|
<complexType name="TinType">
|
1390 |
|
|
<annotation>
|
1391 |
|
|
<documentation>A tin is a triangulated surface that uses
|
1392 |
|
|
the Delauny algorithm or a similar algorithm complemented with
|
1393 |
|
|
consideration of breaklines, stoplines, and maximum length of
|
1394 |
|
|
triangle sides. These networks satisfy the Delauny's criterion
|
1395 |
|
|
away from the modifications: Fore each triangle in the
|
1396 |
|
|
network, the circle passing through its vertices does not
|
1397 |
|
|
contain, in its interior, the vertex of any other triangle.</documentation>
|
1398 |
|
|
</annotation>
|
1399 |
|
|
<complexContent>
|
1400 |
|
|
<extension base="gml:TriangulatedSurfaceType">
|
1401 |
|
|
<sequence>
|
1402 |
|
|
<element name="stopLines" type="gml:LineStringSegmentArrayPropertyType" minOccurs="0" maxOccurs="unbounded">
|
1403 |
|
|
<annotation>
|
1404 |
|
|
<documentation>Stoplines are lines where the local
|
1405 |
|
|
continuity or regularity of the surface is questionable.
|
1406 |
|
|
In the area of these pathologies, triangles intersecting
|
1407 |
|
|
a stopline shall be removed from the tin surface, leaving
|
1408 |
|
|
holes in the surface. If coincidence occurs on surface
|
1409 |
|
|
boundary triangles, the result shall be a change of the
|
1410 |
|
|
surface boundary. Stoplines contains all these
|
1411 |
|
|
pathological segments as a set of line strings.</documentation>
|
1412 |
|
|
</annotation>
|
1413 |
|
|
</element>
|
1414 |
|
|
<element name="breakLines" type="gml:LineStringSegmentArrayPropertyType" minOccurs="0" maxOccurs="unbounded">
|
1415 |
|
|
<annotation>
|
1416 |
|
|
<documentation>Breaklines are lines of a critical
|
1417 |
|
|
nature to the shape of the surface, representing local
|
1418 |
|
|
ridges, or depressions (such as drainage lines) in the
|
1419 |
|
|
surface. As such their constituent segments must be
|
1420 |
|
|
included in the tin eve if doing so
|
1421 |
|
|
violates the Delauny criterion. Break lines contains these
|
1422 |
|
|
critical segments as a set of line strings.</documentation>
|
1423 |
|
|
</annotation>
|
1424 |
|
|
</element>
|
1425 |
|
|
<element name="maxLength" type="gml:LengthType">
|
1426 |
|
|
<annotation>
|
1427 |
|
|
<documentation>Areas of the surface where data is not
|
1428 |
|
|
sufficiently dense to assure reasonable calculation shall be
|
1429 |
|
|
removed by adding a retention criterion for triangles based
|
1430 |
|
|
on the length of their sides. For many triangle sides
|
1431 |
|
|
exceeding maximum length, the adjacent triangles to that
|
1432 |
|
|
triangle side shall be removed from the surface.</documentation>
|
1433 |
|
|
</annotation>
|
1434 |
|
|
</element>
|
1435 |
|
|
<element name="controlPoint">
|
1436 |
|
|
<annotation>
|
1437 |
|
|
<documentation>The corners of the triangles in the TIN
|
1438 |
|
|
are often referred to as pots. ControlPoint shall contain a
|
1439 |
|
|
set of the GM_Position used as posts for this TIN. Since each
|
1440 |
|
|
TIN contains triangles, there must be at least 3 posts. The
|
1441 |
|
|
order in which these points are given does not affect the
|
1442 |
|
|
surface that is represented. Application schemas may add
|
1443 |
|
|
information based on ordering of control points to facilitate
|
1444 |
|
|
the reconstruction of the TIN from the control points.</documentation>
|
1445 |
|
|
</annotation>
|
1446 |
|
|
<complexType>
|
1447 |
|
|
<choice>
|
1448 |
|
|
<element ref="gml:posList"/>
|
1449 |
|
|
<group ref="gml:geometricPositionGroup" minOccurs="3" maxOccurs="unbounded"/>
|
1450 |
|
|
</choice>
|
1451 |
|
|
</complexType>
|
1452 |
|
|
</element>
|
1453 |
|
|
</sequence>
|
1454 |
|
|
</extension>
|
1455 |
|
|
</complexContent>
|
1456 |
|
|
</complexType>
|
1457 |
|
|
<complexType name="LineStringSegmentArrayPropertyType">
|
1458 |
|
|
<sequence>
|
1459 |
|
|
<element ref="gml:LineStringSegment" minOccurs="0" maxOccurs="unbounded"/>
|
1460 |
|
|
</sequence>
|
1461 |
|
|
</complexType>
|
1462 |
|
|
<!-- =========================================================== -->
|
1463 |
|
|
<!-- primitive geometry objects (3-dimensional) -->
|
1464 |
|
|
<!-- =========================================================== -->
|
1465 |
|
|
<!-- =========================================================== -->
|
1466 |
|
|
<element name="_Solid" type="gml:AbstractSolidType" abstract="true" substitutionGroup="gml:_GeometricPrimitive">
|
1467 |
|
|
<annotation>
|
1468 |
|
|
<documentation>The "_Solid" element is the abstract head of the substituition group for all (continuous) solid elements.</documentation>
|
1469 |
|
|
</annotation>
|
1470 |
|
|
</element>
|
1471 |
|
|
<!-- =========================================================== -->
|
1472 |
|
|
<complexType name="AbstractSolidType">
|
1473 |
|
|
<annotation>
|
1474 |
|
|
<documentation>An abstraction of a solid to support the different levels of complexity. A solid is always contiguous.</documentation>
|
1475 |
|
|
</annotation>
|
1476 |
|
|
<complexContent>
|
1477 |
|
|
<extension base="gml:AbstractGeometricPrimitiveType"/>
|
1478 |
|
|
</complexContent>
|
1479 |
|
|
</complexType>
|
1480 |
|
|
<!-- =========================================================== -->
|
1481 |
|
|
<element name="solidProperty" type="gml:SolidPropertyType">
|
1482 |
|
|
<annotation>
|
1483 |
|
|
<appinfo>
|
1484 |
|
|
<sch:pattern name="Check either href or content not both">
|
1485 |
|
|
<sch:rule context="gml:solidProperty">
|
1486 |
|
|
<sch:extends rule="hrefOrContent"/>
|
1487 |
|
|
</sch:rule>
|
1488 |
|
|
</sch:pattern>
|
1489 |
|
|
</appinfo>
|
1490 |
|
|
<documentation>This property element either references a solid via the XLink-attributes 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.</documentation>
|
1491 |
|
|
</annotation>
|
1492 |
|
|
</element>
|
1493 |
|
|
<!-- =========================================================== -->
|
1494 |
|
|
<complexType name="SolidPropertyType">
|
1495 |
|
|
<annotation>
|
1496 |
|
|
<documentation>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.</documentation>
|
1497 |
|
|
</annotation>
|
1498 |
|
|
<sequence minOccurs="0">
|
1499 |
|
|
<element ref="gml:_Solid"/>
|
1500 |
|
|
</sequence>
|
1501 |
|
|
<attributeGroup ref="gml:AssociationAttributeGroup">
|
1502 |
|
|
<annotation>
|
1503 |
|
|
<documentation>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.
|
1504 |
|
|
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.</documentation>
|
1505 |
|
|
</annotation>
|
1506 |
|
|
</attributeGroup>
|
1507 |
|
|
</complexType>
|
1508 |
|
|
<!-- =========================================================== -->
|
1509 |
|
|
<element name="solidArrayProperty" type="gml:SolidArrayPropertyType"/>
|
1510 |
|
|
<!-- =========================================================== -->
|
1511 |
|
|
<complexType name="SolidArrayPropertyType">
|
1512 |
|
|
<annotation>
|
1513 |
|
|
<documentation>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>
|
1514 |
|
|
</annotation>
|
1515 |
|
|
<sequence minOccurs="0" maxOccurs="unbounded">
|
1516 |
|
|
<element ref="gml:_Solid"/>
|
1517 |
|
|
</sequence>
|
1518 |
|
|
</complexType>
|
1519 |
|
|
<!-- =========================================================== -->
|
1520 |
|
|
<element name="Solid" type="gml:SolidType" substitutionGroup="gml:_Solid"/>
|
1521 |
|
|
<!-- =========================================================== -->
|
1522 |
|
|
<complexType name="SolidType">
|
1523 |
|
|
<annotation>
|
1524 |
|
|
<documentation>A solid is the basis for 3-dimensional 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.</documentation>
|
1525 |
|
|
</annotation>
|
1526 |
|
|
<complexContent>
|
1527 |
|
|
<extension base="gml:AbstractSolidType">
|
1528 |
|
|
<sequence>
|
1529 |
|
|
<element name="exterior" type="gml:SurfacePropertyType" minOccurs="0">
|
1530 |
|
|
<annotation>
|
1531 |
|
|
<appinfo>
|
1532 |
|
|
<sch:pattern name="Check either href or content not both">
|
1533 |
|
|
<sch:rule context="gml:exterior">
|
1534 |
|
|
<sch:extends rule="hrefOrContent"/>
|
1535 |
|
|
</sch:rule>
|
1536 |
|
|
</sch:pattern>
|
1537 |
|
|
</appinfo>
|
1538 |
|
|
<documentation>Boundaries of solids are similar to surface boundaries. In normal 3-dimensional Euclidean space, one (composite) surface is distinguished as the exterior. In the more general case, this is not always possible.</documentation>
|
1539 |
|
|
</annotation>
|
1540 |
|
|
</element>
|
1541 |
|
|
<element name="interior" type="gml:SurfacePropertyType" minOccurs="0" maxOccurs="unbounded">
|
1542 |
|
|
<annotation>
|
1543 |
|
|
<appinfo>
|
1544 |
|
|
<sch:pattern name="Check either href or content not both">
|
1545 |
|
|
<sch:rule context="gml:interior">
|
1546 |
|
|
<sch:extends rule="hrefOrContent"/>
|
1547 |
|
|
</sch:rule>
|
1548 |
|
|
</sch:pattern>
|
1549 |
|
|
</appinfo>
|
1550 |
|
|
<documentation>Boundaries of solids are similar to surface boundaries.</documentation>
|
1551 |
|
|
</annotation>
|
1552 |
|
|
</element>
|
1553 |
|
|
</sequence>
|
1554 |
|
|
</extension>
|
1555 |
|
|
</complexContent>
|
1556 |
|
|
</complexType>
|
1557 |
|
|
<!-- =========================================================== -->
|
1558 |
|
|
<!-- predefined simple types (enumerations, simple typed arrays) -->
|
1559 |
|
|
<!-- =========================================================== -->
|
1560 |
|
|
<simpleType name="CurveInterpolationType">
|
1561 |
|
|
<annotation>
|
1562 |
|
|
<documentation>CurveInterpolationType is a list of codes that may be used to identify the interpolation mechanisms specified by an
|
1563 |
|
|
application schema.</documentation>
|
1564 |
|
|
</annotation>
|
1565 |
|
|
<restriction base="string">
|
1566 |
|
|
<enumeration value="linear"/>
|
1567 |
|
|
<enumeration value="geodesic"/>
|
1568 |
|
|
<enumeration value="circularArc3Points"/>
|
1569 |
|
|
<enumeration value="circularArc2PointWithBulge"/>
|
1570 |
|
|
<enumeration value="circularArcCenterPointWithRadius"/>
|
1571 |
|
|
<enumeration value="elliptical"/>
|
1572 |
|
|
<enumeration value="clothoid"/>
|
1573 |
|
|
<enumeration value="conic"/>
|
1574 |
|
|
<enumeration value="polynomialSpline"/>
|
1575 |
|
|
<enumeration value="cubicSpline"/>
|
1576 |
|
|
<enumeration value="rationalSpline"/>
|
1577 |
|
|
</restriction>
|
1578 |
|
|
</simpleType>
|
1579 |
|
|
<!-- =========================================================== -->
|
1580 |
|
|
<simpleType name="SurfaceInterpolationType">
|
1581 |
|
|
<annotation>
|
1582 |
|
|
<documentation>SurfaceInterpolationType is a list of codes that may be used to identify the interpolation mechanisms specified by an
|
1583 |
|
|
application schema.</documentation>
|
1584 |
|
|
</annotation>
|
1585 |
|
|
<restriction base="string">
|
1586 |
|
|
<enumeration value="none"/>
|
1587 |
|
|
<enumeration value="planar"/>
|
1588 |
|
|
<enumeration value="spherical"/>
|
1589 |
|
|
<enumeration value="elliptical"/>
|
1590 |
|
|
<enumeration value="conic"/>
|
1591 |
|
|
<enumeration value="tin"/>
|
1592 |
|
|
<enumeration value="parametricCurve"/>
|
1593 |
|
|
<enumeration value="polynomialSpline"/>
|
1594 |
|
|
<enumeration value="rationalSpline"/>
|
1595 |
|
|
<enumeration value="triangulatedSpline"/>
|
1596 |
|
|
</restriction>
|
1597 |
|
|
</simpleType>
|
1598 |
|
|
<!-- =========================================================== -->
|
1599 |
|
|
<simpleType name="KnotTypesType">
|
1600 |
|
|
<annotation>
|
1601 |
|
|
<documentation>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 quasi-uniform 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.</documentation>
|
1602 |
|
|
</annotation>
|
1603 |
|
|
<restriction base="string">
|
1604 |
|
|
<enumeration value="uniform"/>
|
1605 |
|
|
<enumeration value="quasiUniform"/>
|
1606 |
|
|
<enumeration value="piecewiseBezier"/>
|
1607 |
|
|
</restriction>
|
1608 |
|
|
</simpleType>
|
1609 |
|
|
<!-- =========================================================== -->
|
1610 |
|
|
</schema>
|