123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- File: geometry.xsd -->
- <schema targetNamespace="http://www.opengis.net/gml"
- xmlns="http://www.w3.org/2001/XMLSchema"
- xmlns:gml="http://www.opengis.net/gml"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- elementFormDefault="qualified"
- version="2.05a">
- <annotation>
- <appinfo>geometry.xsd v2.05a 2001-06</appinfo>
- <documentation xml:lang="en">
- GML Geometry schema. Copyright (c) 2001 OGC, All Rights Reserved.
- Modified to comply with http://www.w3.org/2001/XMLSchema.
- Support for null-able and empty geometries has been added.
- </documentation>
- </annotation>
- <!-- bring in the XLink attributes -->
- <import namespace="http://www.w3.org/1999/xlink" schemaLocation="xlinks.xsd"/>
- <!-- ==============================================================
- global declarations
- =================================================================== -->
- <element name="_Geometry" type="gml:AbstractGeometryType" abstract="true"/>
- <element name="_GeometryCollectionBase" type="gml:AbstractGeometryCollectionBaseType"
- abstract="true" substitutionGroup="gml:_Geometry"/>
- <element name="_GeometryCollection" type="gml:GeometryCollectionType"
- abstract="true" substitutionGroup="gml:_GeometryCollectionBase"/>
- <element name="geometryMember" type="gml:GeometryAssociationType"/>
- <!-- primitive geometry elements -->
- <element name="Point" type="gml:PointType" substitutionGroup="gml:_Geometry" nillable="true"/>
- <element name="LineString" type="gml:LineStringType"
- substitutionGroup="gml:_Geometry" nillable="true"/>
- <element name="LinearRing" type="gml:LinearRingType"
- substitutionGroup="gml:_Geometry"/>
- <element name="Polygon" type="gml:PolygonType"
- substitutionGroup="gml:_Geometry" nillable="true"/>
- <element name="Box" type="gml:BoxType"/>
- <!-- aggregate geometry elements -->
- <element name="MultiGeometry" type="gml:GeometryCollectionType" nillable="true"/>
- <element name="MultiPoint" type="gml:MultiPointType"
- substitutionGroup="gml:_GeometryCollection" nillable="true"/>
- <element name="MultiLineString" type="gml:MultiLineStringType"
- substitutionGroup="gml:_GeometryCollection" nillable="true"/>
- <element name="MultiPolygon" type="gml:MultiPolygonType"
- substitutionGroup="gml:_GeometryCollection" nillable="true"/>
- <!-- coordinate elements -->
- <element name="coord" type="gml:CoordType"/>
- <element name="coordinates" type="gml:CoordinatesType"/>
- <!-- this attribute gives the location where an element is defined -->
- <attribute name="remoteSchema" type="anyURI" />
- <!-- ==============================================================
- abstract supertypes
- =================================================================== -->
- <complexType name="AbstractGeometryType" abstract="true">
- <annotation>
- <documentation>
- All geometry elements are derived from this abstract supertype;
- a geometry element may have an identifying attribute ('gid').
- It may be associated with a spatial reference system.
- </documentation>
- </annotation>
- <attribute name="gid" type="ID" use="optional"/>
- <attribute name="srsName" type="anyURI" use="optional"/>
- </complexType>
- <complexType name="AbstractGeometryCollectionBaseType" abstract="true">
- <annotation>
- <documentation>
- This abstract base type for geometry collections just makes the
- srsName attribute mandatory.
- </documentation>
- </annotation>
- <complexContent>
- <restriction base="gml:AbstractGeometryType">
- <attribute name="gid" type="ID" use="optional"/>
- <attribute name="srsName" type="anyURI" use="required"/>
- </restriction>
- </complexContent>
- </complexType>
- <attributeGroup name="AssociationAttributeGroup">
- <annotation>
- <documentation>
- These attributes can be attached to any element, thus allowing it
- to act as a pointer. The 'remoteSchema' attribute allows an element
- that carries link attributes to indicate that the element is declared
- in a remote schema rather than by the schema that constrains the
- current document instance.
- </documentation>
- </annotation>
- <attributeGroup ref="xlink:simpleLink"/>
- <attribute ref="gml:remoteSchema" use="optional"/>
- </attributeGroup>
- <complexType name="GeometryAssociationType">
- <annotation>
- <documentation>
- A geometryMember encapsulates any primitive geometry element.
- Alternatively, it can function as a simple link that points to a
- remote geometry.
- </documentation>
- </annotation>
- <sequence>
- <element ref="gml:_Geometry" minOccurs="0"/>
- </sequence>
- <attributeGroup ref="gml:AssociationAttributeGroup"/>
- </complexType>
- <!-- ==============================================================
- primitive geometry types
- =================================================================== -->
- <complexType name="PointType">
- <annotation>
- <documentation>
- A Point is defined by a single coordinate tuple.
- </documentation>
- </annotation>
- <complexContent>
- <extension base="gml:AbstractGeometryType">
- <sequence minOccurs="0">
- <choice>
- <element ref="gml:coord"/>
- <element ref="gml:coordinates"/>
- </choice>
- </sequence>
- </extension>
- </complexContent>
- </complexType>
- <complexType name="LineStringType">
- <annotation>
- <documentation>
- A LineString is defined by two or more coordinate tuples, with
- linear interpolation between them.
- </documentation>
- </annotation>
- <complexContent>
- <extension base="gml:AbstractGeometryType">
- <sequence minOccurs="0">
- <choice>
- <element ref="gml:coord" minOccurs="2" maxOccurs="unbounded"/>
- <element ref="gml:coordinates"/>
- </choice>
- </sequence>
- </extension>
- </complexContent>
- </complexType>
- <complexType name="LinearRingType">
- <annotation>
- <documentation>
- A LinearRing is defined by four or more coordinate tuples, with
- linear interpolation between them; the first and last coordinates
- must be coincident.
- </documentation>
- </annotation>
- <complexContent>
- <extension base="gml:AbstractGeometryType">
- <sequence minOccurs="0">
- <choice>
- <element ref="gml:coord" minOccurs="4" maxOccurs="unbounded"/>
- <element ref="gml:coordinates"/>
- </choice>
- </sequence>
- </extension>
- </complexContent>
- </complexType>
- <complexType name="BoxType">
- <annotation>
- <documentation>
- The Box structure defines an extent using a pair of coordinate tuples.
- </documentation>
- </annotation>
- <complexContent>
- <extension base="gml:AbstractGeometryType">
- <sequence minOccurs="0">
- <choice>
- <element ref="gml:coord" minOccurs="2" maxOccurs="2"/>
- <element ref="gml:coordinates"/>
- </choice>
- </sequence>
- </extension>
- </complexContent>
- </complexType>
- <complexType name="PolygonType">
- <annotation>
- <documentation>
- A Polygon is defined by an outer boundary and zero or more inner
- boundaries which are in turn defined by LinearRings.
- </documentation>
- </annotation>
- <complexContent>
- <extension base="gml:AbstractGeometryType">
- <sequence minOccurs="0">
- <element name="outerBoundaryIs">
- <complexType>
- <sequence>
- <element ref="gml:LinearRing"/>
- </sequence>
- </complexType>
- </element>
- <element name="innerBoundaryIs" minOccurs="0" maxOccurs="unbounded">
- <complexType>
- <sequence>
- <element ref="gml:LinearRing"/>
- </sequence>
- </complexType>
- </element>
- </sequence>
- </extension>
- </complexContent>
- </complexType>
- <!-- ==============================================================
- aggregate geometry types
- =================================================================== -->
- <complexType name="GeometryCollectionType">
- <annotation>
- <documentation>
- A geometry collection must include one or more geometries, referenced
- through geometryMember elements. User-defined geometry collections
- that accept GML geometry classes as members must instantiate--or
- derive from--this type.
- </documentation>
- </annotation>
- <complexContent>
- <extension base="gml:AbstractGeometryCollectionBaseType">
- <sequence minOccurs="0">
- <element ref="gml:geometryMember" maxOccurs="unbounded"/>
- </sequence>
- </extension>
- </complexContent>
- </complexType>
- <complexType name="MultiPointType">
- <annotation>
- <documentation>
- A MultiPoint is defined by one or more Points, referenced through
- pointMember elements.
- </documentation>
- </annotation>
- <complexContent>
- <restriction base="gml:GeometryCollectionType">
- <sequence minOccurs="0">
- <element name="pointMember" maxOccurs="unbounded">
- <complexType>
- <sequence>
- <element ref="gml:Point"/>
- </sequence>
- </complexType>
- </element>
- </sequence>
- </restriction>
- </complexContent>
- </complexType>
- <complexType name="MultiLineStringType">
- <annotation>
- <documentation>
- A MultiLineString is defined by one or more LineStrings, referenced
- through lineStringMember elements.
- </documentation>
- </annotation>
- <complexContent>
- <restriction base="gml:GeometryCollectionType">
- <sequence minOccurs="0">
- <element name="lineStringMember" maxOccurs="unbounded">
- <complexType>
- <sequence>
- <element ref="gml:LineString"/>
- </sequence>
- </complexType>
- </element>
- </sequence>
- </restriction>
- </complexContent>
- </complexType>
- <complexType name="MultiPolygonType">
- <annotation>
- <documentation>
- A MultiPolygon is defined by one or more Polygons, referenced through
- polygonMember elements.
- </documentation>
- </annotation>
- <complexContent>
- <restriction base="gml:GeometryCollectionType">
- <sequence minOccurs="0">
- <element name="polygonMember" maxOccurs="unbounded">
- <complexType>
- <sequence>
- <element ref="gml:Polygon"/>
- </sequence>
- </complexType>
- </element>
- </sequence>
- </restriction>
- </complexContent>
- </complexType>
- <!-- ==============================================================
- There are two ways to represent coordinates: (1) as a sequence
- of <coord> elements that encapsulate tuples, or (2) using a
- single <coordinates> string.
- =================================================================== -->
- <complexType name="CoordType">
- <annotation>
- <documentation>
- Represents a coordinate tuple in one, two, or three dimensions.
- </documentation>
- </annotation>
- <sequence>
- <element name="X" type="decimal"/>
- <element name="Y" type="decimal" minOccurs="0"/>
- <element name="Z" type="decimal" minOccurs="0"/>
- </sequence>
- </complexType>
- <complexType name="CoordinatesType">
- <annotation>
- <documentation>
- Coordinates can be included in a single string, but there is no
- facility for validating string content. The value of the 'cs' attribute
- is the separator for coordinate values, and the value of the 'ts'
- attribute gives the tuple separator (a single space by default); the
- default values may be changed to reflect local usage.
- </documentation>
- </annotation>
- <simpleContent>
- <extension base="string">
- <attribute name="decimal" type="string" use="optional" default="."/>
- <attribute name="cs" type="string" use="optional" default=","/>
- <attribute name="ts" type="string" use="optional" default=" "/>
- </extension>
- </simpleContent>
- </complexType>
- </schema>
|