<!--Date Posted: 2/07/2006 -->
<xs:schema xmlns="http://www.landxml.org/schema/LandXML-1.1" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.landxml.org/schema/LandXML-1.1" elementFormDefault="unqualified" attributeFormDefault="unqualified" version="1.1" id="LandXML-1.1.xsd">
<xs:element name="LandXML">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element ref="Units"/>
<xs:element ref="CoordinateSystem" minOccurs="0"/>
<xs:element ref="Project" minOccurs="0"/>
<xs:element ref="Application" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="Alignments" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="CgPoints" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="Amendment" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="GradeModel" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="Monuments" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="Parcels" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="PlanFeatures" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="PipeNetworks" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="Roadways" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="Surfaces" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="Survey" minOccurs="0" maxOccurs="unbounded"/>
<xs:any namespace="##other" processContents="skip" minOccurs="0"/>
</xs:choice>
<xs:attribute name="date" type="xs:date" use="required"/>
<xs:attribute name="time" type="xs:time" use="required"/>
<xs:attribute name="version" type="xs:string" use="required"/>
<xs:attribute name="language" type="xs:string"/>
<xs:attribute name="readOnly" type="xs:boolean"/>
<xs:attribute name="LandXMLId" type="xs:int"/>
<xs:attribute name="crc" type="xs:integer"/>
</xs:complexType>
<xs:unique name="uCoordGeomName">
<xs:selector xpath="CoordGeom"/>
<xs:field xpath="@name"/>
</xs:unique>
<xs:unique name="uCgPointsName">
<xs:selector xpath="CgPoints"/>
<xs:field xpath="@name"/>
</xs:unique>
<xs:unique name="uRoadwayName">
<xs:selector xpath="Roadways/Roadway"/>
<xs:field xpath="@name"/>
</xs:unique>
<xs:unique name="uGradeModelName">
<xs:selector xpath="GradeModel"/>
<xs:field xpath="@name"/>
</xs:unique>
<xs:key name="MonumentKey">
<xs:selector xpath=".//Monuments/Monument"/>
<xs:field xpath="@name"/>
</xs:key>
<xs:keyref name="SurveyMonument" refer="MonumentKey">
<xs:selector xpath=".//SurveyMonument"/>
<xs:field xpath="@mntRef"/>
</xs:keyref>
<xs:key name="StructKey">
<xs:selector xpath=".//PipeNetwork/*/Struct"/>
<xs:field xpath="@name"/>
</xs:key>
<xs:keyref name="PipeStart" refer="StructKey">
<xs:selector xpath=".//PipeNetwork/*/Pipe"/>
<xs:field xpath="@refStart"/>
</xs:keyref>
<xs:keyref name="PipeEnd" refer="StructKey">
<xs:selector xpath=".//PipeNetwork/*/Pipe"/>
<xs:field xpath="@refEnd"/>
</xs:keyref>
<xs:key name="PipeKey">
<xs:selector xpath=".//PipeNetwork/*/Pipe"/>
<xs:field xpath="@name"/>
</xs:key>
<xs:keyref name="StructInvert" refer="PipeKey">
<xs:selector xpath=".//PipeNetwork/*/Struct/Invert"/>
<xs:field xpath="@refPipe"/>
</xs:keyref>
<xs:key name="ReducedObservationName">
<xs:selector xpath=".//*/ObservationGroup/*/ReducedObservation"/>
<xs:field xpath="@name"/>
</xs:key>
<xs:key name="ReducedArcObservationName">
<xs:selector xpath=".//*/ObservationGroup/*/ReducedArcObservation"/>
<xs:field xpath="@name"/>
</xs:key>
<xs:key name="Coord3DGeomName">
<xs:selector xpath=".//Parcels/*/Coord3DGeom"/>
<xs:field xpath="@name"/>
</xs:key>
<xs:key name="AnnotationName">
<xs:selector xpath=".//Survey/*/Annotation"/>
<xs:field xpath="@name"/>
</xs:key>
<xs:key name="SurveyorCertificateName">
<xs:selector xpath=".//Survey/*/SurveyorCertificate"/>
<xs:field xpath="@name"/>
</xs:key>
</xs:element>
<!-- simpleType declarations-->
<!-- Special numeric types -->
<xs:simpleType name="angle">
<xs:annotation>
<xs:documentation>Represents a normalized angular value in the specified Angular units. Assume 0 degrees = east</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="zenithAngle">
<xs:annotation>
<xs:documentation>Represents zenith angles with the 0 origin as
straight up and measured in a clockwise direction in the specified
Angular units.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="direction">
<xs:annotation>
<xs:documentation>Represents a normalized angular value that indicates a horizontal direction, expressed in the specified Direction units. Assume 0 degrees = north
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="station">
<xs:annotation>
<xs:documentation>Represents the actual measured distance along the geometry in numeric decimal form expressed in linear units. Also known as the internal station value where no station equations are applied.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="volume">
<xs:annotation>
<xs:documentation>Represents the geometric volume (area * height) of a closed boundary numeric decimal form expressed in volume units</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="area">
<xs:annotation>
<xs:documentation>Represents the geometric area of a closed boundary in numeric decimal form expressed in area units</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:double"/>
</xs:simpleType>
<!-- Cross Section data types -->
<xs:simpleType name="offsetDistance">
<xs:annotation>
<xs:documentation>Represents a linear offset distance. When associated with horizontal (planametric) road or coordinate geometry, the offset is a 2D distance measured perpendicular to the road centerline or coordinate geometry used as the origin. When used in cross sections of long section (profile) the offset is a 2d linear measurement from the origin of the cross section or long section. In all cases a positive value indicates an offset to the RIGHT of the origin and negative values indicate and offset to the LEFT of the origin. The value is in decimal form expressed in length units.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="offsetElevation">
<xs:annotation>
<xs:documentation>Represents a vertical offset distance or elevational shift. In all cases a positive value indicates a vertical elevational shift above the origin and negative values indicate a vertical elevational shift below the origin. The value is in decimal form expressed in length units.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="crossSectSurfaceVolume">
<xs:annotation>
<xs:documentation>Represents the cross section surface volume from the previous station to the current station in numeric decimal form expressed in volume units</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="crossSectSurfaceArea">
<xs:annotation>
<xs:documentation>Represents the cross sectional surface area in numeric decimal form expressed in area units</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="crossSlope">
<xs:annotation>
<xs:documentation>This item is the cross slope, the slope of the traveled way as measure perpendicular to the horizontal alignment, negative when the shoulder has a lower elevation than the centerline. The unit of measure for this item is PERCENT %.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="slope">
<xs:annotation>
<xs:documentation>This item is the slope. Unit of measure for this item is PERCENT %.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="GPSTime">
<xs:annotation>
<xs:documentation> GPS Time = Nbr of GPS weeks * 604800 (seconds in a week) + seconds in GPS week.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:double"/>
<!-- GPS Time = Nbr of GPS weeks * 604800 (seconds in a week) + seconds in GPS week -->
</xs:simpleType>
<!-- Specific attribute types for non-ID based referencing to LandXML elements -->
<xs:simpleType name="pointNameRef">
<xs:annotation>
<xs:documentation>A reference name value referring to a PointType derived name attribute. An attribute if this type contains the value of a PointType derived element "name" attribute that exists elsewhere the instance data.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="pointNameRefs">
<xs:annotation>
<xs:documentation>A list of reference names values refering to one or more PointType derived name attributes.</xs:documentation>
</xs:annotation>
<xs:list itemType="xs:string"/>
</xs:simpleType>
<xs:simpleType name="cgPointsNameRef">
<xs:annotation>
<xs:documentation>A reference name value referring to a CgPoints name attribute. An attribute if this type contains the value of a CgPoints element "name" attribute that exists elsewhere the instance data.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="cgPointsNameRefs">
<xs:annotation>
<xs:documentation>A list of reference names values refering to one or more CgPoints element name attributes.</xs:documentation>
</xs:annotation>
<xs:list itemType="xs:string"/>
</xs:simpleType>
<xs:simpleType name="alignmentNameRef">
<xs:annotation>
<xs:documentation>A reference name value referring to Alignment.name attribute.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="alignmentNameRefs">
<xs:annotation>
<xs:documentation>A list of reference names values refering to one or more Alignment.name attributes.</xs:documentation>
</xs:annotation>
<xs:list itemType="xs:string"/>
</xs:simpleType>
<xs:simpleType name="surfaceNameRef">
<xs:annotation>
<xs:documentation>A reference name value referring to Surface.name attribute.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="surfaceNameRefs">
<xs:annotation>
<xs:documentation>A list of reference names values refering to one or more Surface.name attributes.</xs:documentation>
</xs:annotation>
<xs:list itemType="xs:string"/>
</xs:simpleType>
<xs:simpleType name="parcelNameRef">
<xs:annotation>
<xs:documentation>A reference name value referring to Parcel.name attribute.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="parcelNameRefs">
<xs:annotation>
<xs:documentation>A list of reference names values refering to one or more Parcel.name attributes.</xs:documentation>
</xs:annotation>
<xs:list itemType="xs:string"/>
</xs:simpleType>
<xs:simpleType name="planFeatureNameRef">
<xs:annotation>
<xs:documentation>A reference name value referring to PlanFeature.name attribute.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="planFeatureNameRefs">
<xs:annotation>
<xs:documentation>A list of reference names values refering to one or more PlanFeature.name attributes.</xs:documentation>
</xs:annotation>
<xs:list itemType="xs:string"/>
</xs:simpleType>
<xs:simpleType name="coordGeomNameRef">
<xs:annotation>
<xs:documentation>A reference name value referring to CoordGeom.name attribute.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="coordGeomNameRefs">
<xs:annotation>
<xs:documentation>A list of reference names values refering to one or more CoordGeom.name attributes.</xs:documentation>
</xs:annotation>
<xs:list itemType="xs:string"/>
</xs:simpleType>
<xs:simpleType name="pipeNameRef">
<xs:annotation>
<xs:documentation>A reference name value referring to Pipe.name attribute.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="pipeNameRefs">
<xs:annotation>
<xs:documentation>A list of reference names values refering to one or more Pipe.name attributes.</xs:documentation>
</xs:annotation>
<xs:list itemType="xs:string"/>
</xs:simpleType>
<xs:simpleType name="structNameRef">
<xs:annotation>
<xs:documentation>A reference name value referring to Struct.name attribute.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="structNameRefs">
<xs:annotation>
<xs:documentation>A list of reference names values refering to one or more Struct.name attributes.</xs:documentation>
</xs:annotation>
<xs:list itemType="xs:string"/>
</xs:simpleType>
<xs:simpleType name="monumentNameRef">
<xs:annotation>
<xs:documentation>A reference name value referring to monument.name attribute.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="waterShedNameRef">
<xs:annotation>
<xs:documentation>A reference name value referring to WaterShed.name attribute.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="roadwayNameRef">
<xs:annotation>
<xs:documentation>A reference name value referring to Raodway.name attribute.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="roadwayNameRefs">
<xs:annotation>
<xs:documentation>A list of reference names values refering to one or more Roadway.name attributes. </xs:documentation>
</xs:annotation>
<xs:list itemType="xs:string"/>
</xs:simpleType>
<xs:simpleType name="gradeModelNameRef">
<xs:annotation>
<xs:documentation>A reference name value referring to GradeModel.name attribute.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="gradeModelNameRefs">
<xs:annotation>
<xs:documentation>A list of reference names values refering to one or more GradeModel.name attributes.</xs:documentation>
</xs:annotation>
<xs:list itemType="xs:string"/>
</xs:simpleType>
<!-- LandXML enumeration types -->
<xs:simpleType name="surveyRoleType">
<xs:restriction base="xs:string">
<xs:enumeration value="measured"/>
<xs:enumeration value="to stake out"/>
<xs:enumeration value="staked out"/>
<xs:enumeration value="calculated"/>
<xs:enumeration value="assistance point"/>
<xs:enumeration value="user entered point"/>
<xs:enumeration value="control point"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="beaconProtectionType">
<xs:annotation>
<xs:documentation>Indicates any structure that protects the
monument, these enumerations may need expanding</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="cover"/>
<xs:enumeration value="cover and box"/>
<xs:enumeration value="fence enclosure"/>
<xs:enumeration value="marker post"/>
<xs:enumeration value="no protection"/>
<xs:enumeration value="other"/>
<xs:enumeration value="quadripod"/>
<xs:enumeration value="unknown"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="beaconType">
<xs:annotation>
<xs:documentation>Indicates whether there is any physical structure
for the monument - helps location, these enumerations may need expanding
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="cairn"/>
<xs:enumeration value="chimney"/>
<xs:enumeration value="large quadripod"/>
<xs:enumeration value="lighthouse"/>
<xs:enumeration value="marine beacon"/>
<xs:enumeration value="mast"/>
<xs:enumeration value="mast with targets"/>
<xs:enumeration value="no beacon"/>
<xs:enumeration value="other"/>
<xs:enumeration value="pillar"/>
<xs:enumeration value="post"/>
<xs:enumeration value="small quadripod"/>
<xs:enumeration value="tower"/>
<xs:enumeration value="tripod"/>
<xs:enumeration value="unknown"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="clockwise">
<xs:restriction base="xs:string">
<xs:enumeration value="cw"/>
<xs:enumeration value="ccw"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="curveType">
<xs:restriction base="xs:string">
<xs:enumeration value="arc"/>
<xs:enumeration value="chord"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="DTMAttributeType">
<xs:restriction base="xs:string">
<xs:enumeration value="determinebyfeature"/>
<xs:enumeration value="donotinclude"/>
<xs:enumeration value="spot"/>
<xs:enumeration value="spotandbreak"/>
<xs:enumeration value="void"/>
<xs:enumeration value="drapevoid"/>
<xs:enumeration value="breakvoid"/>
<xs:enumeration value="island"/>
<xs:enumeration value="boundary"/>
<xs:enumeration value="contour"/>
<xs:enumeration value="feature"/>
<xs:enumeration value="ground"/>
<xs:enumeration value="xsection"/>
<xs:enumeration value="user"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="GPSSolutionTypeEnum">
<xs:annotation>
<xs:documentation>The GPS solution type indicates the type of computed solution for a GPS vector or position</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="Unknown"/>
<xs:enumeration value="Code"/>
<xs:enumeration value="Float"/>
<xs:enumeration value="Fixed"/>
<xs:enumeration value="Network Float"/>
<xs:enumeration value="Network Fixed"/>
<xs:enumeration value="WAAS Float"/>
<xs:enumeration value="WAAS Fixed"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="GPSSolutionFrequencyEnum">
<xs:annotation>
<xs:documentation>The GPS solution frequency indicates the GPS frequencies used in the computed solution for a GPS vector or position </xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="Unknown"/>
<xs:enumeration value="L1"/>
<xs:enumeration value="L2"/>
<xs:enumeration value="L2 Squared"/>
<xs:enumeration value="Wide Lane"/>
<xs:enumeration value="Narrow Lane"/>
<xs:enumeration value="Iono Free"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="impArea">
<xs:restriction base="xs:string">
<xs:enumeration value="acre"/>
<xs:enumeration value="squareFoot"/>
<xs:enumeration value="squareInch"/>
<xs:enumeration value="squareMiles"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="impLinear">
<xs:restriction base="xs:string">
<xs:enumeration value="foot"/>
<xs:enumeration value="USSurveyFoot"/>
<xs:enumeration value="inch"/>
<xs:enumeration value="mile"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="impPressure">
<xs:restriction base="xs:string">
<xs:enumeration value="inchHG"/>
<xs:enumeration value="inHG"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="impTemperature">
<xs:restriction base="xs:string">
<xs:enumeration value="fahrenheit"/>
<xs:enumeration value="kelvin"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="impDiameter">
<xs:restriction base="xs:string">
<xs:enumeration value="foot"/>
<xs:enumeration value="USSurveyFoot"/>
<xs:enumeration value="inch"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="impWidth">
<xs:restriction base="xs:string">
<xs:enumeration value="foot"/>
<xs:enumeration value="USSurveyFoot"/>
<xs:enumeration value="inch"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="impHeight">
<xs:restriction base="xs:string">
<xs:enumeration value="foot"/>
<xs:enumeration value="USSurveyFoot"/>
<xs:enumeration value="inch"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="impFlow">
<xs:restriction base="xs:string">
<xs:enumeration value="US_gallonPerDay"/>
<xs:enumeration value="IMP_gallonPerDay"/>
<xs:enumeration value="cubicFeetDay"/>
<xs:enumeration value="US_gallonPerMinute"/>
<xs:enumeration value="IMP_gallonPerMinute"/>
<xs:enumeration value="acreFeetDay"/>
<xs:enumeration value="cubicFeetSecond"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="impVolume">
<xs:restriction base="xs:string">
<xs:enumeration value="US_gallon"/>
<xs:enumeration value="IMP_gallon"/>
<xs:enumeration value="cubicInch"/>
<xs:enumeration value="cubicFeet"/>
<xs:enumeration value="cubicYard"/>
<xs:enumeration value="acreFeet"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="impVelocity">
<xs:restriction base="xs:string">
<xs:enumeration value="feetPerSecond"/>
<xs:enumeration value="milesPerHour"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="inOut">
<xs:restriction base="xs:string">
<xs:enumeration value="in"/>
<xs:enumeration value="out"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="metArea">
<xs:restriction base="xs:string">
<xs:enumeration value="hectare"/>
<xs:enumeration value="squareMeter"/>
<xs:enumeration value="squareMillimeter"/>
<xs:enumeration value="squareCentimeter"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="metLinear">
<xs:restriction base="xs:string">
<xs:enumeration value="millimeter"/>
<xs:enumeration value="centimeter"/>
<xs:enumeration value="meter"/>
<xs:enumeration value="kilometer"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="metDiameter">
<xs:restriction base="xs:string">
<xs:enumeration value="millimeter"/>
<xs:enumeration value="centimeter"/>
<xs:enumeration value="meter"/>
<xs:enumeration value="kilometer"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="metWidth">
<xs:restriction base="xs:string">
<xs:enumeration value="millimeter"/>
<xs:enumeration value="centimeter"/>
<xs:enumeration value="meter"/>
<xs:enumeration value="kilometer"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="metHeight">
<xs:restriction base="xs:string">
<xs:enumeration value="millimeter"/>
<xs:enumeration value="centimeter"/>
<xs:enumeration value="meter"/>
<xs:enumeration value="kilometer"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="metPressure">
<xs:restriction base="xs:string">
<xs:enumeration value="HPA"/>
<xs:enumeration value="milliBars"/>
<xs:enumeration value="mmHG"/>
<xs:enumeration value="millimeterHG"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="metTemperature">
<xs:restriction base="xs:string">
<xs:enumeration value="celsius"/>
<xs:enumeration value="kelvin"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="metVolume">
<xs:restriction base="xs:string">
<xs:enumeration value="cubicMeter"/>
<xs:enumeration value="liter"/>
<xs:enumeration value="hectareMeter"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="metVelocity">
<xs:restriction base="xs:string">
<xs:enumeration value="metersPerSecond"/>
<xs:enumeration value="kilometersPerHour"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="metFlow">
<xs:restriction base="xs:string">
<xs:enumeration value="cubicMeterSecond"/>
<xs:enumeration value="literPerSecond"/>
<xs:enumeration value="literPerMinute"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="monumentCategory">
<xs:annotation>
<xs:documentation>This indicates the category of a geodetic Monument</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="benchmark"/>
<xs:enumeration value="central"/>
<xs:enumeration value="reference"/>
<xs:enumeration value="rural"/>
<xs:enumeration value="standard traverse"/>
<xs:enumeration value="urban standard traverse"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="parcelStateType">
<xs:annotation>
<xs:documentation>This is an extension of the LandXML state type, but is specific to parcels</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="affected"/>
<xs:enumeration value="created"/>
<xs:enumeration value="encroached"/>
<xs:enumeration value="extinguished"/>
<xs:enumeration value="referenced"/>
<xs:enumeration value="proposed"/>
<xs:enumeration value="existing"/>
<xs:enumeration value="adjoining"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="pipeNetworkType">
<xs:restriction base="xs:string">
<xs:enumeration value="sanitary"/>
<xs:enumeration value="storm"/>
<xs:enumeration value="water"/>
<xs:enumeration value="other"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="purposeType">
<xs:annotation>
<xs:documentation>Used by many of the Survey elements</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="normal"/>
<xs:enumeration value="check"/>
<xs:enumeration value="backsight"/>
<xs:enumeration value="foresight"/>
<xs:enumeration value="traverse"/>
<xs:enumeration value="sideshot"/>
<xs:enumeration value="resection"/>
<xs:enumeration value="levelLoop"/>
<xs:enumeration value="digitalLevel"/>
<xs:enumeration value="remoteElevation"/>
<xs:enumeration value="recipricalObservation"/>
<xs:enumeration value="topo"/>
<xs:enumeration value="cutSheets"/>
<xs:enumeration value="asbuilt"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="sideType">
<xs:restriction base="xs:string">
<xs:enumeration value="right"/>
<xs:enumeration value="left"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="spiralType">
<xs:restriction base="xs:string">
<xs:enumeration value="biquadratic"/>
<xs:enumeration value="bloss"/>
<xs:enumeration value="clothoid"/>
<xs:enumeration value="cosine"/>
<xs:enumeration value="cubic"/>
<xs:enumeration value="sinusoid"/>
<xs:enumeration value="revBiquadratic"/>
<xs:enumeration value="revBloss"/>
<xs:enumeration value="revCosine"/>
<xs:enumeration value="revSinusoid"/>
<xs:enumeration value="sineHalfWave"/>
<xs:enumeration value="biquadraticParabola"/>
<xs:enumeration value="cubicParabola"/>
<xs:enumeration value="japaneseCubic"/>
<xs:enumeration value="radioid"/>
<xs:enumeration value="weinerBogen"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="stateType">
<xs:restriction base="xs:string">
<xs:enumeration value="abandoned"/>
<xs:enumeration value="destroyed"/>
<xs:enumeration value="existing"/>
<xs:enumeration value="proposed"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="surfBndType">
<xs:annotation>
<xs:documentation>Surface boundaries can be one of three types: outer, void, island</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="outer"/>
<xs:enumeration value="void"/>
<xs:enumeration value="island"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="surfFaceType">
<xs:annotation>
<xs:documentation>Represents a face on a 3D surface by referencing points from the Pnts collection"</xs:documentation>
<xs:documentation>The number of poitns are determined by the surfType attrinute: 3 for TIN, 4 for grid</xs:documentation>
<xs:documentation>Note: TIN is the acronym for "triangulated irregular network"</xs:documentation>
<xs:documentation>The point references are stored as a space delimited text value in the form of "id id id"</xs:documentation>
<xs:documentation>Example, "62 68 44" for TIN, ""62 68 44 71" for Grid</xs:documentation>
</xs:annotation>
<xs:list itemType="xs:positiveInteger"/>
</xs:simpleType>
<xs:simpleType name="surfTypeEnum">
<xs:annotation>
<xs:documentation>TIN is the acronym for "triangulated irregular network", a surface comprised of 3 point faces</xs:documentation>
<xs:documentation>grid is a surface comprised of 4 point faces.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="TIN"/>
<xs:enumeration value="grid"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="surfVolCMethodType">
<xs:restriction base="xs:string">
<xs:enumeration value="grid"/>
<xs:enumeration value="composite"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="surveyType">
<xs:annotation>
<xs:documentation>This enumeration indicates whether the survey was acutally performed in the field, compiled from a series of existing surveys, or simply computed using known observations and maths</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="compiled"/>
<xs:enumeration value="computed"/>
<xs:enumeration value="surveyed"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="survPntType">
<xs:annotation>
<xs:documentation>Optional COGO Point attribute to designate the survey point type.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="monument"/>
<xs:enumeration value="control"/>
<xs:enumeration value="sideShot"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="xsVolCalcMethodType">
<xs:restriction base="xs:string">
<xs:enumeration value="AverageEndArea"/>
<xs:enumeration value="Prismoidal"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="parcelFormat">
<xs:annotation>
<xs:documentation>Parcel Format describes how the parcel is described , ie Standard (2D), Volumertric (3D)</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="Standard"/>
<xs:enumeration value="Volumetric"/>
<xs:enumeration value="Stratum"/>
<xs:enumeration value="Restricted"/>
<xs:enumeration value="Other"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="useOfParcelType">
<xs:annotation>
<xs:documentation>Describes what the parcel is used for. This would be a jurisdictionally specific list.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="titleTypeType">
<xs:annotation>
<xs:documentation>Describes the type of title interest this parcel represents, the list will be jurisdictionally specific</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="surveyFormatType">
<xs:annotation>
<xs:documentation>Describes the format of the survey and is a jurisdictionally specific list for example a stand format survey, Building Format Survey.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="headOfPowerType">
<xs:annotation>
<xs:documentation>Details the legislation or regulation under which the survey was conducted, for example the Land Title Act2003 This list will be juridictionnally specific.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="documentStatusType">
<xs:annotation>
<xs:documentation>This field identifes the legal status for this document, for example it is the leagal record of survey, if was data captured from historical data etc. This is used to determine processing of the record</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="surveyStatusType">
<xs:annotation>
<xs:documentation>Defines the status of this version of the file and will be a jurisdictionally specific list, for example "survey Record Only", Suitable for Registration" etc</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="adminAreaTypeType">
<xs:annotation>
<xs:documentation>This is a jurdictionally specific list of types and may include parish, town, local government, locality etc</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="annotationType">
<xs:annotation>
<xs:documentation>An Annotation will be a specific type within a jurisdiction. </xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="jurisdictionType">
<xs:annotation>
<xs:documentation>This is the name of the juridiction in which the Survey Lies (ie which state)</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="zoneNumberType">
<xs:restriction base="xs:positiveInteger">
<xs:minInclusive value="1"/>
<xs:maxInclusive value="99"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="adminDateTypeType">
<xs:annotation>
<xs:documentation>This is the name of the admin date type for the Survey</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="designLocationType">
<xs:annotation>
<xs:documentation/>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="Final Surface"/>
<xs:enumeration value="Datum"/>
<xs:enumeration value="Intermediate"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="dataFormatType">
<xs:annotation>
<xs:documentation/>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="Offset Elevation"/>
<xs:enumeration value="Slope Distance"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="connectionType">
<xs:annotation>
<xs:documentation/>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="inner"/>
<xs:enumeration value="outer"/>
<xs:enumeration value="dayLight"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="Point">
<xs:annotation>
<xs:documentation>A text value that is a space delimited list of doubles. It is used as the base type to define point coordinates in the form of "northing easting" or "northing easting elevation" as well as point lists of 2D or 3D points with items such as surface boundaries or "station elevation", "station offset" lists for items such as profiles and cross sections:
Example, "1632.546 2391.045 240.30"</xs:documentation>
</xs:annotation>
<xs:list itemType="xs:double"/>
</xs:simpleType>
<!-- 3d Point in all 3 coors are optional -->
<xs:simpleType name="Point3dOpt">
<xs:restriction base="Point">
<xs:minLength value="0"/>
<xs:maxLength value="3"/>
</xs:restriction>
</xs:simpleType>
<!-- 3d point in all 3 coors are required -->
<xs:simpleType name="Point3dReq">
<xs:restriction base="Point">
<xs:minLength value="0"/>
<xs:maxLength value="3"/>
</xs:restriction>
</xs:simpleType>
<!-- 2d Point in which all coors are required -->
<xs:simpleType name="Point2dReq">
<xs:restriction base="Point">
<xs:length value="2"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="pointGeometryType">
<xs:restriction base="xs:string">
<xs:enumeration value="point"/>
<xs:enumeration value="curve"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="breakLineType">
<xs:restriction base="xs:string">
<xs:enumeration value="standard"/>
<xs:enumeration value="wall"/>
<xs:enumeration value="proximity"/>
<xs:enumeration value="nondestructive"/>
</xs:restriction>
</xs:simpleType>
<!-- The base point base class -->
<xs:complexType name="PointType" mixed="true">
<xs:annotation>
<xs:documentation>All elements derived from PointType will either contain a coordinate text value ( "north east" or "north east elev"), a "pntRef" attribute value, or both. The "pntRef" attribute contains the value of a PointType derived element "name" attribute that exists elsewhere the instance data. If this element has a "pntRef" value, then it's coordinates will be retrieved from the referenced element. If an element contains both a coordinate value and a pntRef, the coordinate value should be used as the point location and the referenced point is either ignored or is used for point attributes such as number or desc.</xs:documentation>
</xs:annotation>
<xs:simpleContent>
<xs:extension base="Point3dOpt">
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="desc" type="xs:string"/>
<xs:attribute name="code" type="xs:string"/>
<xs:attribute name="state" type="stateType"/>
<xs:attribute name="pntRef" type="pointNameRef"/>
<xs:attribute name="pointGeometry" type="pointGeometryType"/>
<xs:attribute name="DTMAttribute" type="DTMAttributeType"/>
<xs:attribute name="timeStamp" type="xs:dateTime" use="optional"/>
<xs:attribute name="role" type="surveyRoleType" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<!-- 2d Point in which all coors are required -->
<xs:complexType name="PointType3dReq">
<xs:simpleContent>
<xs:extension base="Point3dReq">
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="desc" type="xs:string"/>
<xs:attribute name="code" type="xs:string"/>
<xs:attribute name="state" type="stateType"/>
<xs:attribute name="pntRef" type="pointNameRef"/>
<xs:attribute name="pointGeometry" type="pointGeometryType"/>
<xs:attribute name="DTMAttribute" type="DTMAttributeType"/>
<xs:attribute name="timeStamp" type="xs:dateTime" use="optional"/>
<xs:attribute name="role" type="surveyRoleType" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<!-- CgPoints collection -->
<xs:element name="CgPoints">
<xs:annotation>
<xs:documentation>A collection of COGO points. (Cg = COGO = Cordinate Geometry)</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="CgPoint" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="CgPoints" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
<!-- Allow nested CgPoints collections -->
</xs:sequence>
<xs:attribute name="desc" type="xs:string"/>
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="state" type="stateType"/>
<xs:attribute name="code" type="xs:string"/>
<xs:attribute name="zoneNumber" type="zoneNumberType"/>
<xs:attribute name="DTMAttribute" type="DTMAttributeType"/>
</xs:complexType>
<xs:unique name="uPntName">
<xs:selector xpath="CgPoint"/>
<xs:field xpath="@name"/>
</xs:unique>
</xs:element>
<xs:element name="CgPoint">
<xs:annotation>
<xs:documentation>Represents a COrdinate GeOmetry Point. The Point is identified by the "name" attr and the data value will be a sequence of space delimented, two or three double numberic values: (Northing Easting) or (Northing Easting Elevation).</xs:documentation>
</xs:annotation>
<xs:complexType mixed="true">
<xs:simpleContent>
<xs:extension base="PointType">
<xs:attribute name="oID" type="xs:string"/>
<xs:attribute name="surveyOrder" type="xs:string"/>
<xs:attribute name="pntSurv" type="survPntType"/>
<xs:attribute name="zoneNumber" type="zoneNumberType"/>
<xs:attribute name="surveyHorizontalOrder" type="xs:string"/>
<xs:attribute name="surveyVerticalOrder" type="xs:string"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="DocFileRef">
<xs:annotation>
<xs:documentation>A reference to any external document file containing related information for the associated element.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="name" use="required"/>
<xs:attribute name="location" type="xs:anyURI" use="required"/>
<xs:attribute name="fileType" type="xs:string"/>
<xs:attribute name="fileFormat" type="xs:string"/>
</xs:complexType>
</xs:element>
<!-- shared elements -->
<xs:element name="Property">
<xs:annotation>
<xs:documentation>Used to include additional information that is not explicitly defined by the LandXML schema. Each Property element defines one piece of data.</xs:documentation>
<xs:documentation>The "label" attribute defines the name of the value held in the "value" attribute.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="label" use="required"/>
<xs:attribute name="value" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="Feature">
<xs:annotation>
<xs:documentation>Used to include additional information that is not explicitly defined by the LandXML schema, Feature may contain one or more Property, DocFileRef or nested Feature elements.
NOTE: to allow any valid content, the explicit definitions for Property, DocFileRef and Feature have been commented out, but are still expected in common use.</xs:documentation>
<xs:documentation>Each Property element defines one piece of data.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:choice>
<!-- <xs:element ref="Property" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="DocFileRef" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/> -->
</xs:choice>
<xs:any namespace="##any" processContents="skip" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="code" type="xs:string"/>
<xs:attribute name="source" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="PntList2D">
<xs:annotation>
<xs:documentation>A sequential space delimited list of 2D coordinates with a minimum of 2 points (4 values). </xs:documentation>
<xs:documentation>It is primarily used for ProfileSurf to hold the list of station/elevations and CrossSectSurf for offset/elevation. </xs:documentation>
<xs:documentation>Example: "0.000 86.52 6.267 86.89 12.413 87.01 26.020 87.83" </xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="Point">
<xs:minLength value="2"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="PntList3D">
<xs:annotation>
<xs:documentation>A sequential space delimited list of 3D coordinates with a minimum of 2 points (6 values). </xs:documentation>
<xs:documentation>Primarily used to store lists of northing/easting/elevation for Terrain Surface data. </xs:documentation>
<xs:documentation>Example: "0.000 86.52 50.0 6.267 86.89 50.0 12.413 87.01 50.0 26.020 87.83 50.0" </xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="Point">
<xs:minLength value="3"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Start" type="PointType">
<xs:annotation>
<xs:documentation>Represents a 2D or 3D Starting or beginning Point</xs:documentation>
<xs:documentation>Defined by either a coordinate text value ("north east" or "north east elev") or a CgPoint number reference "pntRef" attribute.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="End" type="PointType">
<xs:annotation>
<xs:documentation>Represents a 2D or 3D Ending Point</xs:documentation>
<xs:documentation>Defined by either a coordinate text value ("north east" or "north east elev") or a CgPoint number reference "pntRef" attribute.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Center" type="PointType">
<xs:annotation>
<xs:documentation>Represents a 2D or 3D Center Point</xs:documentation>
<xs:documentation>Defined by either a coordinate text value ("north east" or "north east elev") or a CgPoint number reference "pntRef" attribute.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="PI" type="PointType">
<xs:annotation>
<xs:documentation>Represents a 2D or 3D Point of Intersection</xs:documentation>
<xs:documentation>Defined by either a coordinate text value ("north east" or "north east elev") or a CgPoint number reference "pntRef" attribute.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="MapPoint" type="PointType">
<xs:annotation>
<xs:documentation>Represents a 2D or 3D Point location for general Survey location</xs:documentation>
<xs:documentation>Defined by either a coordinate text value ("north east" or "north east elev") or a PointType number reference "pntRef" attribute.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="InstrumentPoint" type="PointType">
<xs:annotation>
<xs:documentation>Represents a 2D or 3D Point location for Survey instrument location</xs:documentation>
<xs:documentation>Defined by either a coordinate text value ("north east" or "north east elev") or a PointType number reference "pntRef" attribute.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Location" type="PointType">
<xs:annotation>
<xs:documentation>Represents a 2D or 3D Point location for a PlanFeature.</xs:documentation>
<xs:documentation>Defined by either a coordinate text value ("north east" or "north east elev") or a CgPoint number reference "pntRef" attribute.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="IrregularLine">
<xs:annotation>
<xs:documentation>Used to record lines that are irregular such as river boudaries etc. It has Start and End point elements and a list of intermediate points. Point list should also include the start and end points.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="Start"/>
<xs:element ref="End"/>
<xs:choice>
<xs:element ref="PntList2D"/>
<xs:element ref="PntList3D"/>
<!-- Here PntList2D represents 2D planametric coordinate pairs expressed as space delimited Northing Easting pairs. -->
</xs:choice>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="desc" type="xs:string"/>
<xs:attribute name="dir" type="direction"/>
<xs:attribute name="length" type="xs:double"/>
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="staStart" type="xs:double"/>
<xs:attribute name="state" type="stateType"/>
<xs:attribute name="oID" type="xs:string"/>
<xs:attribute name="source" type="xs:string"/>
<xs:attribute name="note" type="xs:string"/>
</xs:complexType>
</xs:element>
<xs:simpleType name="ChainType">
<xs:annotation>
<xs:documentation>A text value that is a space delimited list of CgPoint names that form a linear connected chain.
example: <Chain>1 23 45 34</Chain>
represents a linear connection between CgPoint name 1, 23, 45 and 34.
</xs:documentation>
</xs:annotation>
<xs:list itemType="pointNameRef"/>
</xs:simpleType>
<xs:element name="Chain">
<xs:annotation>
<xs:documentation>A text value that is a space delimited list of CgPoint names that form a linear connected chain.
example: <Chain>1 23 45 34</Chain>
represents a linear connection between CgPoint name 1, 23, 45 and 34.
</xs:documentation>
</xs:annotation>
<xs:complexType mixed="true">
<xs:simpleContent>
<xs:extension base="ChainType">
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="desc" type="xs:string"/>
<xs:attribute name="code" type="xs:string"/>
<xs:attribute name="state" type="stateType"/>
<xs:attribute name="pointGeometry" type="pointGeometryType"/>
<xs:attribute name="DTMAttribute" type="DTMAttributeType"/>
<xs:attribute name="timeStamp" type="xs:dateTime" use="optional"/>
<xs:attribute name="role" type="surveyRoleType" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="Curve">
<xs:annotation>
<xs:documentation>The distance from the Start to the Center provides the radius value.</xs:documentation>
<xs:documentation>The rotation attribute "rot" defines whether the arc travels clockwise or counter-clockwise from the Start to End point.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:choice minOccurs="3" maxOccurs="unbounded">
<xs:element ref="Start"/>
<xs:element ref="Center"/>
<xs:element ref="End"/>
<xs:element ref="PI" minOccurs="0"/>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
<xs:attribute name="rot" type="clockwise" use="required"/>
<xs:attribute name="chord" type="xs:double"/>
<xs:attribute name="crvType" type="curveType"/>
<xs:attribute name="delta" type="angle"/>
<xs:attribute name="desc" type="xs:string"/>
<xs:attribute name="dirEnd" type="direction"/>
<xs:attribute name="dirStart" type="direction"/>
<xs:attribute name="external" type="xs:double"/>
<xs:attribute name="length" type="xs:double"/>
<xs:attribute name="midOrd" type="xs:double"/>
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="radius" type="xs:double"/>
<xs:attribute name="staStart" type="xs:double"/>
<xs:attribute name="state" type="stateType"/>
<xs:attribute name="tangent" type="xs:double"/>
<xs:attribute name="oID" type="xs:string"/>
<xs:attribute name="note" type="xs:string"/>
</xs:complexType>
</xs:element>
<xs:element name="Spiral">
<xs:annotation>
<xs:documentation>An "infinite" spiral radius is denoted by the value "INF". </xs:documentation>
<xs:documentation>This conforms to XML Schema which defines infinity as "INF" or "-INF" for all numeric datatypes </xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:choice minOccurs="3" maxOccurs="3">
<xs:element ref="Start"/>
<xs:element ref="PI"/>
<xs:element ref="End"/>
</xs:choice>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="length" type="xs:double" use="required"/>
<xs:attribute name="radiusEnd" type="xs:double" use="required"/>
<xs:attribute name="radiusStart" type="xs:double" use="required"/>
<xs:attribute name="rot" type="clockwise" use="required"/>
<xs:attribute name="spiType" type="spiralType" use="required"/>
<xs:attribute name="chord" type="xs:double"/>
<xs:attribute name="constant" type="xs:double"/>
<xs:attribute name="desc" type="xs:string"/>
<xs:attribute name="dirEnd" type="direction"/>
<xs:attribute name="dirStart" type="direction"/>
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="theta" type="angle"/>
<xs:attribute name="totalY" type="xs:double"/>
<xs:attribute name="totalX" type="xs:double"/>
<xs:attribute name="staStart" type="xs:double"/>
<xs:attribute name="state" type="stateType"/>
<xs:attribute name="tanLong" type="xs:double"/>
<xs:attribute name="tanShort" type="xs:double"/>
<xs:attribute name="oID" type="xs:string"/>
</xs:complexType>
</xs:element>
<xs:element name="CoordGeom">
<xs:annotation>
<xs:documentation>A sequential list of Line and/or Curve and/or Spiral elements.</xs:documentation>
<xs:documentation>After the sequential list of elements an optional vertical geometry
may be defined as a profile, which may be as simple as a list of PVIs (point to point 3D line string).</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:choice maxOccurs="unbounded">
<xs:element ref="Line" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="IrregularLine" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="Curve" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="Spiral" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="Chain" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="desc" type="xs:string"/>
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="state" type="stateType"/>
<xs:attribute name="oID" type="xs:string"/>
</xs:complexType>
</xs:element>
<xs:element name="Line">
<xs:annotation>
<xs:documentation>Modified to include official ID, as with all CoordGeom elements</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="Start"/>
<xs:element ref="End"/>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="desc" type="xs:string"/>
<xs:attribute name="dir" type="direction"/>
<xs:attribute name="length" type="xs:double"/>
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="staStart" type="xs:double"/>
<xs:attribute name="state" type="stateType"/>
<xs:attribute name="oID" type="xs:string"/>
<xs:attribute name="note" type="xs:string"/>
</xs:complexType>
</xs:element>
<xs:element name="CrossSects">
<xs:annotation>
<xs:documentation/>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="CrossSect" maxOccurs="unbounded"/>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="desc" type="xs:string"/>
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="state" type="stateType"/>
<xs:attribute name="calcMethod" type="xsVolCalcMethodType"/>
<xs:attribute name="curveCorrection" type="xs:boolean"/>
<xs:attribute name="swellFactor" type="xs:double"/>
<xs:attribute name="shrinkFactor" type="xs:double"/>
</xs:complexType>
<xs:unique name="uCrossSectSta">
<xs:selector xpath="CrossSect"/>
<xs:field xpath="@sta"/>
</xs:unique>
</xs:element>
<xs:element name="CrossSect">
<xs:annotation>
<xs:documentation/>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="CrossSectSurf" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="DesignCrossSectSurf" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="sta" type="xs:double" use="required"/>
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="desc" type="xs:string"/>
<xs:attribute name="angleSkew" type="angle"/>
<xs:attribute name="areaCut" type="crossSectSurfaceArea"/>
<xs:attribute name="areaFill" type="crossSectSurfaceArea"/>
<xs:attribute name="centroidCut" type="xs:double"/>
<xs:attribute name="centroidFill" type="xs:double"/>
<xs:attribute name="sectType" type="xs:string"/>
<xs:attribute name="volumeCut" type="crossSectSurfaceVolume"/>
<xs:attribute name="volumeFill" type="crossSectSurfaceVolume"/>
</xs:complexType>
</xs:element>
<xs:element name="CrossSectSurf">
<xs:annotation>
<xs:documentation>Defined as a space delimited PntList2D of offset-distance/offset-elevations from the centerline, also known as the profile grade line. Typically represent existing ground surfaces.</xs:documentation>
<xs:documentation>Example: "-60.00 1.52 -36.26 0.89 12.41 2.01 60.00 1.83"</xs:documentation>
<xs:documentation>Note: Gaps in the surface are handled by having 2 or more PntList2D elements.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="PntList2D" maxOccurs="unbounded"/>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="name" type="xs:string" use="required"/>
<xs:attribute name="desc" type="xs:string"/>
<xs:attribute name="state" type="stateType"/>
</xs:complexType>
</xs:element>
<xs:element name="CrossSectPnt">
<xs:annotation>
<xs:documentation/>
</xs:annotation>
<xs:complexType mixed="true">
<xs:simpleContent>
<xs:extension base="PointType">
<xs:attribute name="dataFormat" type="dataFormatType" default="Offset Elevation"/>
<xs:attribute name="alignRef" type="alignmentNameRef"/>
<xs:attribute name="alignRefStation" type="station"/>
<xs:attribute name="planFeatureRef" type="planFeatureNameRef"/>
<xs:attribute name="planFeatureRefStation" type="station"/>
<xs:attribute name="parcelRef" type="parcelNameRef"/>
<xs:attribute name="parcelRefStation" type="station"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="DesignCrossSectSurf">
<xs:annotation>
<xs:documentation/>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="CrossSectPnt" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="desc" type="xs:string"/>
<xs:attribute name="state" type="stateType"/>
<xs:attribute name="side" type="sideofRoadType"/>
<xs:attribute name="material" type="xs:string"/>
<xs:attribute name="closedArea" type="xs:boolean"/>
<xs:attribute name="typicalThickness" type="xs:double"/>
<xs:attribute name="typicalWidth" type="xs:double"/>
<xs:attribute name="area" type="crossSectSurfaceArea"/>
<xs:attribute name="volume" type="crossSectSurfaceVolume"/>
</xs:complexType>
</xs:element>
<!-- Project element -->
<xs:element name="Project">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
<xs:any namespace="##other" processContents="skip" minOccurs="0"/>
</xs:choice>
<xs:attribute name="name" type="xs:string" use="required"/>
<xs:attribute name="desc" type="xs:string"/>
<xs:attribute name="state" type="stateType"/>
</xs:complexType>
</xs:element>
<!-- Units element -->
<xs:element name="Units">
<xs:annotation>
<xs:documentation>All angular and direction values default to radians unless otherwise noted. Angular values, expressed in the specified Units.angleUnit are measured counter-clockwise from east=0. Horizontal directions, expressed in the specified Units.directionUnit are measured counter-clockwise from 0 degrees = north</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:choice>
<xs:element ref="Metric"/>
<xs:element ref="Imperial"/>
</xs:choice>
</xs:complexType>
</xs:element>
<xs:element name="Metric">
<xs:annotation>
<xs:documentation/>
</xs:annotation>
<xs:complexType>
<xs:attribute name="areaUnit" type="metArea" use="required"/>
<xs:attribute name="linearUnit" type="metLinear" use="required"/>
<xs:attribute name="volumeUnit" type="metVolume" use="required"/>
<xs:attribute name="temperatureUnit" type="metTemperature" use="required"/>
<xs:attribute name="pressureUnit" type="metPressure" use="required"/>
<xs:attribute name="diameterUnit" type="metDiameter"/>
<xs:attribute name="widthUnit" type="metWidth"/>
<xs:attribute name="heightUnit" type="metHeight"/>
<xs:attribute name="velocityUnit" type="metVelocity"/>
<xs:attribute name="flowUnit" type="metFlow"/>
<xs:attribute name="angularUnit" type="angularType" default="radians"/>
<xs:attribute name="directionUnit" type="angularType" default="radians"/>
</xs:complexType>
</xs:element>
<xs:element name="Imperial">
<xs:annotation>
<xs:documentation/>
</xs:annotation>
<xs:complexType>
<xs:attribute name="areaUnit" type="impArea" use="required"/>
<xs:attribute name="linearUnit" type="impLinear" use="required"/>
<xs:attribute name="volumeUnit" type="impVolume" use="required"/>
<xs:attribute name="temperatureUnit" type="impTemperature" use="required"/>
<xs:attribute name="pressureUnit" type="impPressure" use="required"/>
<xs:attribute name="diameterUnit" type="impDiameter"/>
<xs:attribute name="widthUnit" type="impWidth"/>
<xs:attribute name="heightUnit" type="impHeight"/>
<xs:attribute name="velocityUnit" type="impVelocity"/>
<xs:attribute name="flowUnit" type="impFlow"/>
<xs:attribute name="angularUnit" type="angularType" default="radians"/>
<xs:attribute name="directionUnit" type="angularType" default="radians"/>
</xs:complexType>
</xs:element>
<!-- Anglular Units element definition-->
<xs:simpleType name="angularType">
<xs:annotation>
<xs:documentation>angular values expressed in "decimal dd.mm.ss" units have the numeric
format "45.3025" representing 45 degrees 30 minutes and 25 seconds. Both the minutes and seconds must be two characters with a numeric range between 00 to 60.
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="radians"/>
<xs:enumeration value="grads"/>
<xs:enumeration value="decimal degrees"/>
<xs:enumeration value="decimal dd.mm.ss"/>
</xs:restriction>
</xs:simpleType>
<!-- CoordinateSystem element -->
<xs:element name="CoordinateSystem">
<xs:annotation>
<xs:documentation>
Simplified coordinate systems definitions to reuse work done by
EPSG (European Petroleum Survey Group)
EPSG Code: EPSG has reserved the integer range 0 to 32767 for use as codes for coordinate systems.
Example: Represents Australian Map Grid Zone 52
name="AGD66 - AMG Zone 52" , epsgCode="20252"
Example: Represents Colorado CS27 South Zone
name="NAD27-Colorado South" , epsgCode="26755"
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="Start" minOccurs="0"/>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
<xs:any namespace="##other" processContents="skip" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="desc" type="xs:string"/>
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="fileLocation" type="xs:anyURI"/>
<xs:attribute name="epsgCode" type="xs:string"/>
<xs:attribute name="rotationAngle" type="angle"/>
<xs:attribute name="datum" type="xs:string"/>
<xs:attribute name="horizontalDatum" type="xs:string"/>
<xs:attribute name="verticalDatum" type="xs:string"/>
<xs:attribute name="ellipsoidName" type="xs:string"/>
<xs:attribute name="fittedCoordinateSystemName" type="xs:string"/>
<xs:attribute name="horizontalCoordinateSystemName" type="xs:string"/>
<xs:attribute name="compoundCoordinateSystemName" type="xs:string"/>
<xs:attribute name="localCoordinateSystemName" type="xs:string"/>
<xs:attribute name="geographicCoordinateSystemName" type="xs:string"/>
<xs:attribute name="projectedCoordinateSystemName" type="xs:string"/>
<xs:attribute name="geocentricCoordinateSystemName" type="xs:string"/>
<xs:attribute name="verticalCoordinateSystemName" type="xs:string"/>
<!-- should obit these, never used -->
<!-- *********************** -->
</xs:complexType>
</xs:element>
<!-- Application element -->
<xs:element name="Application">
<xs:annotation>
<xs:documentation>Optional element to identify the software that was used to create the file.</xs:documentation>
</xs:annotation>
<xs:complexType mixed="true">
<xs:sequence>
<xs:choice>
<xs:element ref="Author" minOccurs="0" maxOccurs="unbounded"/>
<xs:any namespace="##other" processContents="skip" minOccurs="0"/>
</xs:choice>
</xs:sequence>
<xs:attribute name="name" type="xs:string" use="required"/>
<xs:attribute name="desc" type="xs:string"/>
<xs:attribute name="manufacturer" type="xs:string"/>
<xs:attribute name="version" type="xs:string"/>
<xs:attribute name="manufacturerURL" type="xs:string"/>
<xs:attribute name="timeStamp" type="xs:dateTime" use="optional"/>
<xs:anyAttribute/>
</xs:complexType>
</xs:element>
<xs:element name="Author">
<xs:annotation>
<xs:documentation>Optional element to identify the source of the file.</xs:documentation>
</xs:annotation>
<xs:complexType mixed="true">
<xs:sequence>
<xs:any namespace="##other" processContents="skip" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="createdBy" type="xs:string"/>
<xs:attribute name="createdByEmail" type="xs:string"/>
<xs:attribute name="company" type="xs:string"/>
<xs:attribute name="companyURL" type="xs:string"/>
<xs:attribute name="timeStamp" type="xs:dateTime" use="optional"/>
<xs:anyAttribute/>
</xs:complexType>
</xs:element>
<!-- Survey collection -->
<xs:element name="Survey">
<xs:annotation>
<xs:documentation>I've added state here as a safety net</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="SurveyHeader"/>
<xs:element ref="Equipment"/>
<xs:element ref="SurveyMonument" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="CgPoints" minOccurs="0" maxOccurs="unbounded"/>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="InstrumentSetup" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="LaserSetup" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="GPSSetup" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="TargetSetup" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="GPSVector"/>
<xs:element ref="GPSPosition"/>
<xs:element ref="ObservationGroup"/>
<xs:element ref="ControlChecks"/>
<xs:element ref="FieldNote" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
</xs:sequence>
<xs:attribute name="desc" type="xs:string"/>
<xs:attribute name="date" type="xs:date"/>
<xs:attribute name="startTime" type="xs:dateTime"/>
<xs:attribute name="endTime" type="xs:dateTime"/>
<xs:attribute name="state" type="stateType"/>
<xs:attribute name="horizontalAccuracy" type="xs:string"/>
<xs:attribute name="verticalAccuracy" type="xs:string"/>
</xs:complexType>
</xs:element>
<!--SurveyHeader Element-->
<xs:element name="SurveyHeader">
<xs:annotation>
<xs:documentation>We seemed to have doubled up on the survey purpose here, but the two are quite different - maybe need a different name</xs:documentation>
</xs:annotation>
<xs:complexType mixed="true">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="Annotation" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="AdministrativeArea" minOccurs="0"/>
<xs:element ref="AdministrativeDate" minOccurs="0"/>
<xs:element ref="CoordinateSystem" minOccurs="0"/>
<xs:element ref="Units" minOccurs="0"/>
<xs:element ref="MapPoint" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="Personnel" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="FieldNote" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="SurveyorCertificate" maxOccurs="unbounded"/>
</xs:choice>
<xs:attribute name="name" type="xs:string" use="required"/>
<xs:attribute name="desc" type="xs:string"/>
<xs:attribute name="purpose" type="purposeType"/>
<xs:attribute name="startTime" type="xs:dateTime"/>
<xs:attribute name="endTime" type="xs:dateTime"/>
<xs:attribute name="surveyor" type="xs:string"/>
<xs:attribute name="surveyorFirm" type="xs:string"/>
<xs:attribute name="surveyorReference" type="xs:string"/>
<xs:attribute name="surveyorRegistration" type="xs:string"/>
<xs:attribute name="surveyPurpose" type="xs:string"/>
<xs:attribute name="type" type="surveyType"/>
<xs:attribute name="class" type="xs:string"/>
<xs:attribute name="county" type="xs:string"/>
<xs:attribute name="applyAtmosphericCorrection" type="xs:boolean"/>
<xs:attribute name="pressure" type="xs:double"/>
<xs:attribute name="temperature" type="xs:double"/>
<xs:attribute name="applySeaLevelCorrection" type="xs:boolean"/>
<xs:attribute name="scaleFactor" type="xs:double"/>
<xs:attribute name="seaLevelCorrectionFactor" type="xs:double"/>
<xs:attribute name="combinedFactor" type="xs:double"/>
<xs:attribute name="jurisdiction" type="jurisdictionType"/>
<xs:attribute name="submissionDate" type="xs:date"/>
<xs:attribute name="documentStatus" type="documentStatusType"/>
<xs:attribute name="headOfPower" type="headOfPowerType"/>
<xs:attribute name="surveyFormat" type="surveyFormatType"/>
<xs:attribute name="surveyStatus" type="surveyStatusType"/>
<xs:attribute name="communityTitleSchemeNo" type="xs:int"/>
<xs:attribute name="communityTitleSchemeName" type="xs:string"/>
<xs:attribute name="fieldNoteFlag" type="xs:boolean"/>
<xs:attribute name="fieldNoteReference" type="xs:string"/>
<xs:attribute name="fieldReport" type="xs:string"/>
</xs:complexType>
</xs:element>
<!-- AdministrativeArea Element -->
<xs:element name="AdministrativeArea">
<xs:annotation>
<xs:documentation>This element stores the administrative boundaries for a survey</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="adminAreaType" type="adminAreaTypeType" use="required"/>
<xs:attribute name="adminAreaName" type="xs:string"/>
<xs:attribute name="adminAreaCode" type="xs:string"/>
<xs:attribute name="pclRef" type="parcelNameRefs"/>
</xs:complexType>
</xs:element>
<!-- AdministrativeDate Element -->
<xs:element name="AdministrativeDate">
<xs:annotation>
<xs:documentation>This element stores a range of Administrative dates which may vary from jurisdiction to jurisdiction.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="adminDateType" type="adminDateTypeType" use="required"/>
<xs:attribute name="adminDate" type="xs:date" use="required"/>
</xs:complexType>
</xs:element>
<!-- Annotation Element-->
<xs:element name="Annotation">
<xs:annotation>
<xs:documentation>Annotation is a descriptive string use to describe an action on survey</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="type" type="annotationType" use="required"/>
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="desc" type="xs:string"/>
<xs:attribute name="pclRef" type="parcelNameRefs"/>
</xs:complexType>
</xs:element>
<!--SurveyorCertificate Element-->
<xs:element name="SurveyorCertificate">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"/>
<xs:attribute name="certificateType" type="xs:string"/>
<xs:attribute name="textCertificate" type="xs:string"/>
<xs:attribute name="surveyDate" type="xs:date"/>
</xs:complexType>
</xs:element>
<!-- RedHorizontalPosition referenced to Observation & HorizontalPosition class in UML datamodel-->
<xs:element name="RedHorizontalPosition">
<xs:complexType>
<xs:attribute name="desc" type="xs:string"/>
<xs:attribute name="name" type="xs:string" use="required"/>
<xs:attribute name="state" type="xs:string"/>
<xs:attribute name="oID" type="xs:string"/>
<xs:attribute name="purpose" type="purposeType"/>
<xs:attribute name="date" type="xs:date"/>
<xs:attribute name="fieldNote" type="xs:string"/>
<xs:attribute name="equipmentUsed" type="xs:string"/>
<xs:attribute name="horizontalDatum" type="xs:string"/>
<xs:attribute name="horizontalAdjustment" type="xs:string"/>
<xs:attribute name="latitude" type="xs:string"/>
<xs:attribute name="longitude" type="xs:string"/>
<xs:attribute name="horizontalFix" type="xs:string"/>
<xs:attribute name="CurrencyDate" type="xs:string"/>
<xs:attribute name="localUncertainity" type="xs:double"/>
<xs:attribute name="class" type="xs:string"/>
<xs:attribute name="order" type="xs:string"/>
<xs:attribute name="PositionalUncertainity" type="xs:double"/>
</xs:complexType>
</xs:element>
<!-- RedVerticalObservation referenced to Observation & verticalPostion class in UML datamodel -->
<xs:element name="RedVerticalObservation">
<xs:complexType>
<xs:attribute name="desc" type="xs:string"/>
<xs:attribute name="name" type="xs:string" use="required"/>
<xs:attribute name="state" type="xs:string"/>
<xs:attribute name="oID" type="xs:string"/>
<xs:attribute name="purpose" type="purposeType"/>
<xs:attribute name="date" type="xs:date"/>
<xs:attribute name="equipmentUsed" type="xs:string"/>
<xs:attribute name="FieldNote" type="xs:string"/>
<xs:attribute name="height" type="xs:double"/>
<xs:attribute name="verticalAdjustment" type="xs:string"/>
<xs:attribute name="verticalFix" type="xs:string"/>
<xs:attribute name="geosphoid" type="xs:double"/>
<xs:attribute name="gsDatum" type="xs:string"/>
<xs:attribute name="gsModel" type="xs:string"/>
<xs:attribute name="gsMethod" type="xs:string"/>
<xs:attribute name="originMark" type="xs:string"/>
<xs:attribute name="VerticalDatum" type="xs:string"/>
</xs:complexType>
</xs:element>
<!--Amendment-->
<xs:element name="Amendment">
<xs:annotation>
<xs:documentation>Records the dealing information to allow audit trail between the survey document and the titling system</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="AmendmentItem" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="dealingNumber" type="xs:string"/>
<xs:attribute name="amendmentDate" type="xs:date"/>
<xs:attribute name="comments" type="xs:string"/>
</xs:complexType>
</xs:element>
<!-- AmendmentItem-->
<xs:element name="AmendmentItem">
<xs:complexType>
<xs:attribute name="elementName" type="xs:string"/>
<xs:attribute name="oldName" type="xs:string"/>
<xs:attribute name="newName" type="xs:string"/>
</xs:complexType>
</xs:element>
<xs:element name="Personnel">
<xs:complexType>
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="role" type="xs:string"/>
<xs:attribute name="regType" type="xs:string"/>
<xs:attribute name="regNumber" type="xs:string"/>
</xs:complexType>
</xs:element>
<xs:element name="FieldNote">
<xs:annotation>
<xs:documentation>Place the note as a text value between the FieldNote element tags.
You may also place any valid XML structure inside this tag.</xs:documentation>
</xs:annotation>
<xs:complexType mixed="true">
<xs:choice maxOccurs="unbounded">
<xs:any namespace="##other" processContents="skip" minOccurs="0"/>
</xs:choice>
</xs:complexType>
</xs:element>
<xs:element name="Equipment">
<xs:annotation>
<xs:documentation/>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:choice>
<xs:element ref="InstrumentDetails"/>
<xs:element ref="LaserDetails"/>
<xs:element ref="GPSReceiverDetails"/>
<xs:element ref="GPSAntennaDetails"/>
</xs:choice>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="FieldNote" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="InstrumentDetails">
<xs:annotation>
<xs:documentation/>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="Corrections"/>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="FieldNote" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
</xs:sequence>
<xs:attribute name="id" type="xs:ID" use="required"/>
<xs:attribute name="edmAccuracyConstant" type="xs:double"/>
<xs:attribute name="edmAccuracyppm" type="xs:double"/>
<xs:attribute name="edmVertOffset" type="xs:double"/>
<xs:attribute name="horizAnglePrecision" type="xs:double"/>
<xs:attribute name="manufacturer" type="xs:string"/>
<xs:attribute name="model" type="xs:string"/>
<xs:attribute name="serialNumber" type="xs:string"/>
<xs:attribute name="zenithAnglePrecision" type="xs:double"/>
<xs:attribute name="carrierWavelength" type="xs:double"/>
<xs:attribute name="refractiveIndex" type="xs:double"/>
<xs:attribute name="horizCollimation" type="xs:double"/>
<xs:attribute name="vertCollimation" type="xs:double"/>
<!-- In order to compute the atmospheric corrections correctly record the
EDM instrument carrier wavelength (carrierWavelength) and the group refractive index
for the instrument (refractiveIndex). -->
<!-- To allow for older style top mounted EDM's -->
</xs:complexType>
</xs:element>
<xs:element name="LaserDetails">
<xs:annotation>
<xs:documentation/>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="FieldNote" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
</xs:sequence>
<xs:attribute name="id" type="xs:ID" use="required"/>
<xs:attribute name="laserVertOffset" type="xs:double"/>
<xs:attribute name="manufacturer" type="xs:string"/>
<xs:attribute name="model" type="xs:string"/>
<xs:attribute name="serialNumber" type="xs:string"/>
</xs:complexType>
</xs:element>
<xs:element name="GPSAntennaDetails">
<xs:annotation>
<xs:documentation/>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="Monument" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="FieldNote" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
</xs:sequence>
<xs:attribute name="id" type="xs:ID" use="required"/>
<xs:attribute name="manufacturer" type="xs:string"/>
<xs:attribute name="model" type="xs:string"/>
<xs:attribute name="serialNumber" type="xs:string"/>
<xs:attribute name="latitude" type="xs:double"/>
<xs:attribute name="longitude" type="xs:double"/>
<xs:attribute name="altitude" type="xs:double"/>
<xs:attribute name="ellipsiodnalHeight" type="xs:double"/>
<xs:attribute name="orthometricHeight" type="xs:double"/>
</xs:complexType>
</xs:element>
<xs:element name="GPSReceiverDetails">
<xs:annotation>
<xs:documentation/>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="FieldNote" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
</xs:sequence>
<xs:attribute name="id" type="xs:ID" use="required"/>
<xs:attribute name="manufacturer" type="xs:string"/>
<xs:attribute name="model" type="xs:string"/>
<xs:attribute name="serialNumber" type="xs:string"/>
</xs:complexType>
</xs:element>
<xs:element name="Corrections">
<xs:annotation>
<xs:documentation/>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="FieldNote" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
</xs:sequence>
<xs:attribute name="refractionCoefficient" type="xs:double"/>
<xs:attribute name="applyRefractionCoefficient" type="xs:boolean"/>
<xs:attribute name="sphericity" type="xs:double"/>
<xs:attribute name="prismEccentricity" type="xs:double"/>
<!-- if 'true' then atmospheric corrections are to be applied to the measured distances read from the file -->
<!-- if 'true' then sea level corrections are to be applied to the measured distances read from the file -->
<!-- this is for recording the refraction coefficient used in the curvature and refraction correction of zenith angles -->
<!-- if 'true' then RefractionCoefficient should be applied to the measured zenith angles read from the file -->
</xs:complexType>
</xs:element>
<xs:element name="SurveyMonument">
<xs:annotation>
<xs:documentation>This relates the new monument element to a survey - indicating its purpose in the survey and distrubed / replaced info as well</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="mntRef" type="monumentNameRef" use="required"/>
<xs:attribute name="purpose" type="xs:string" use="required"/>
<xs:attribute name="state" type="xs:string"/>
<xs:attribute name="adoptedSurvey" type="xs:string"/>
<xs:attribute name="disturbedMonument" type="xs:string"/>
<xs:attribute name="disturbedDate" type="xs:date"/>
<xs:attribute name="disturbedAnnotation" type="xs:string"/>
<xs:attribute name="replacedMonument" type="xs:string"/>
<xs:attribute name="replacedDate" type="xs:date"/>
<xs:attribute name="replacedAnnotation" type="xs:string"/>
</xs:complexType>
</xs:element>
<xs:element name="InstrumentSetup">
<xs:annotation>
<xs:documentation>The Instrument setup location is defined by either a coordinate text value ("north east" or "north east elev") or a CgPoint number reference "pntRef" attribute.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="InstrumentPoint" minOccurs="0"/>
<xs:element ref="Backsight" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="TargetSetup" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="RawObservation" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="ObservationGroup" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="ControlChecks" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="FieldNote" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
</xs:sequence>
<xs:attribute name="id" type="xs:ID" use="required"/>
<xs:attribute name="instrumentDetailsID" type="xs:IDREF"/>
<xs:attribute name="stationName" type="xs:string" use="required"/>
<xs:attribute name="instrumentHeight" type="xs:double" use="required"/>
<xs:attribute name="orientationAzimuth" type="direction"/>
<xs:attribute name="circleAzimuth" type="direction"/>
</xs:complexType>
</xs:element>
<xs:element name="LaserSetup">
<xs:annotation>
<xs:documentation/>
</xs:annotation>
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="InstrumentPoint" minOccurs="0"/>
<xs:element ref="Backsight" minOccurs="0"/>
<xs:element ref="TargetSetup" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="RawObservation"/>
<xs:element ref="FieldNote" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
<xs:attribute name="id" type="xs:ID" use="required"/>
<xs:attribute name="stationName" use="required"/>
<xs:attribute name="instrumentHeight" type="xs:double"/>
<xs:attribute name="laserDetailsID" type="xs:IDREF"/>
<xs:attribute name="magDeclination" type="xs:double"/>
</xs:complexType>
</xs:element>
<xs:element name="GPSSetup">
<xs:annotation>
<xs:documentation/>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="TargetSetup" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="GPSPosition"/>
<xs:element ref="FieldNote" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
</xs:sequence>
<xs:attribute name="id" type="xs:ID" use="required"/>
<xs:attribute name="antennaHeight" type="xs:double" use="required"/>
<xs:attribute name="stationName" use="required"/>
<xs:attribute name="GPSAntennaDetailsID" type="xs:IDREF"/>
<xs:attribute name="GPSReceiverDetailsID" type="xs:IDREF"/>
<xs:attribute name="observationDataLink"/>
<xs:attribute name="stationDescription"/>
<xs:attribute name="startTime" type="GPSTime"/>
<xs:attribute name="stopTime" type="GPSTime"/>
<!-- GPS Time = Nbr of GPS weeks * 604800 (seconds in a week) + seconds in GPS week -->
</xs:complexType>
</xs:element>
<xs:element name="TargetSetup">
<xs:annotation>
<xs:documentation/>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="FieldNote" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
</xs:sequence>
<xs:attribute name="id" type="xs:ID"/>
<xs:attribute name="targetHeight" type="xs:double"/>
<xs:attribute name="edmTargetVertOffset" type="xs:double"/>
<xs:attribute name="prismConstant" type="xs:double"/>
<!-- To allow for older style EDM's -->
</xs:complexType>
</xs:element>
<xs:element name="Backsight">
<xs:annotation>
<xs:documentation/>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="BacksightPoint" minOccurs="0"/>
<xs:choice>
<xs:element ref="FieldNote" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
</xs:sequence>
<xs:attribute name="id" type="xs:ID"/>
<xs:attribute name="azimuth" type="direction"/>
<xs:attribute name="targetHeight" type="xs:double"/>
<xs:attribute name="circle" type="angle" use="required"/>
<xs:attribute name="setupID" type="xs:IDREF"/>
</xs:complexType>
</xs:element>
<xs:element name="RawObservation">
<xs:annotation>
<xs:documentation/>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="TargetPoint"/>
<xs:element ref="OffsetVals" minOccurs="0"/>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="FieldNote" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
</xs:sequence>
<xs:attribute name="setupID" type="xs:IDREF"/>
<xs:attribute name="targetSetupID" type="xs:IDREF"/>
<xs:attribute name="setID"/>
<xs:attribute name="purpose" type="purposeType"/>
<xs:attribute name="targetHeight" type="xs:double"/>
<xs:attribute name="horizAngle" type="angle" use="optional"/>
<xs:attribute name="slopeDistance" type="xs:double" use="optional"/>
<xs:attribute name="zenithAngle" type="zenithAngle" use="optional"/>
<xs:attribute name="horizDistance" type="xs:double"/>
<xs:attribute name="vertDistance" type="xs:double"/>
<xs:attribute name="azimuth" type="direction" use="optional"/>
<xs:attribute name="unused" type="xs:boolean"/>
<xs:attribute name="directFace" type="xs:boolean"/>
<xs:attribute name="coordGeomRefs" type="coordGeomNameRefs"/>
<xs:attribute name="timeStamp" type="xs:dateTime"/>
<!-- ‘unused’ = boolean attribute to indicate the record is not used.
'directFace' = indicates the scope is flipped – true if the scope is not flipped, false if it is. -->
<!-- coordGeomRefs identifies one or more 'name' values that link to specific <Line>, <Curve>, <Spiral> or <IrregularLine> in a <CoordGeom> element. This allows linking an survey observation to specific <Parcel>.<CoordGeom> based geometry. -->
</xs:complexType>
</xs:element>
<xs:element name="TargetPoint" type="PointType">
<xs:annotation>
<xs:documentation>Represents a 2D or 3D location for the target</xs:documentation>
<xs:documentation>It is defined by either a coordinate text value ("north east" or "north east elev") or a CgPoint number reference "pntRef" attribute.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="BacksightPoint" type="PointType">
<xs:annotation>
<xs:documentation>Represents a 2D or 3D location for the backsight</xs:documentation>
<xs:documentation>It is defined by either a coordinate text value ("north east" or "north east elev") or a CgPoint number reference "pntRef" attribute.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="OffsetVals">
<xs:annotation>
<xs:documentation>offsetInOut: -ve = offset in towards inst, +ve = offset away from inst </xs:documentation>
<xs:documentation>offsetLeftRight: -ve = left, +ve = right (as viewed from instrument) </xs:documentation>
<xs:documentation>offsetUpDown: -ve = down, +ve = up</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="offsetInOut" type="xs:double"/>
<xs:attribute name="offsetLeftRight" type="xs:double"/>
<xs:attribute name="offsetUpDown" type="xs:double"/>
</xs:complexType>
</xs:element>
<xs:element name="GPSVector">
<xs:annotation>
<xs:documentation/>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="TargetPoint"/>
<xs:element ref="GPSQCInfoLevel1" minOccurs="0"/>
<xs:element ref="GPSQCInfoLevel2" minOccurs="0"/>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="FieldNote" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
</xs:sequence>
<xs:attribute name="dX" type="xs:double" use="required"/>
<xs:attribute name="dY" type="xs:double" use="required"/>
<xs:attribute name="dZ" type="xs:double" use="required"/>
<xs:attribute name="setupID_A" type="xs:IDREF" use="required"/>
<xs:attribute name="setupID_B" type="xs:IDREF" use="required"/>
<xs:attribute name="startTime" type="xs:dateTime" use="optional"/>
<xs:attribute name="endTime" type="xs:dateTime" use="optional"/>
<xs:attribute name="horizontalPrecision" type="xs:double" use="optional"/>
<xs:attribute name="verticalPrecision" type="xs:double" use="optional"/>
<xs:attribute name="purpose" type="purposeType"/>
<xs:attribute name="setID"/>
<xs:attribute name="solutionDataLink"/>
<xs:attribute name="coordGeomRefs" type="coordGeomNameRefs"/>
<!-- coordGeomRefs identifies one or more 'name' values that link to specific <Line>, <Curve>, <Spiral> or <IrregularLine> in a <CoordGeom> element. This allows linking an survey observation to specific <Parcel>.<CoordGeom> based geometry. -->
</xs:complexType>
</xs:element>
<xs:element name="GPSPosition">
<xs:annotation>
<xs:documentation/>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="TargetPoint"/>
<xs:element ref="GPSQCInfoLevel1" minOccurs="0"/>
<xs:element ref="GPSQCInfoLevel2" minOccurs="0"/>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="FieldNote" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
</xs:sequence>
<xs:attribute name="setupID" type="xs:IDREF"/>
<xs:attribute name="setID"/>
<xs:attribute name="wgsHeight" type="xs:double" use="required"/>
<xs:attribute name="wgsLatitude" type="xs:double" use="required"/>
<xs:attribute name="wgsLongitude" type="xs:double" use="required"/>
<xs:attribute name="purpose"/>
<xs:attribute name="coordGeomRefs" type="coordGeomNameRefs"/>
<xs:attribute name="pntRef" type="pointNameRef"/>
<!-- coordGeomRefs identifies one or more 'name' values that link to specific <Line>, <Curve>, <Spiral> or <IrregularLine> in a <CoordGeom> element. This allows linking an survey observation to specific <Parcel>.<CoordGeom> based geometry. -->
</xs:complexType>
</xs:element>
<xs:element name="GPSQCInfoLevel1">
<xs:annotation>
<xs:documentation>GPS Time = Nbr of GPS weeks * 604800 (seconds in a week) + seconds in GPS week </xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="GPSSolnType" type="GPSSolutionTypeEnum"/>
<xs:attribute name="GPSSolnFreq" type="GPSSolutionFrequencyEnum"/>
<xs:attribute name="nbrSatellites" type="xs:integer"/>
<xs:attribute name="RDOP" type="xs:double"/>
</xs:complexType>
</xs:element>
<xs:element name="GPSQCInfoLevel2">
<xs:annotation>
<xs:documentation/>
</xs:annotation>
<xs:complexType>
<xs:attribute name="covarianceXX" type="xs:double"/>
<xs:attribute name="covarianceXY" type="xs:double"/>
<xs:attribute name="covarianceXZ" type="xs:double"/>
<xs:attribute name="covarianceYY" type="xs:double"/>
<xs:attribute name="covarianceYZ" type="xs:double"/>
<xs:attribute name="covarianceZZ" type="xs:double"/>
<xs:attribute name="GPSSolnType" type="GPSSolutionTypeEnum"/>
<xs:attribute name="GPSSolnFreq" type="GPSSolutionFrequencyEnum"/>
<xs:attribute name="RMS" type="xs:double"/>
<xs:attribute name="ratio" type="xs:double"/>
<xs:attribute name="referenceVariance" type="xs:double"/>
<xs:attribute name="nbrSatellites" type="xs:integer"/>
<xs:attribute name="startTime" type="GPSTime"/>
<xs:attribute name="stopTime" type="GPSTime"/>
<!-- GPS Time = Nbr of GPS weeks * 604800 (seconds in a week) + seconds in GPS week -->
</xs:complexType>
</xs:element>
<xs:element name="ObservationGroup">
<xs:annotation>
<xs:documentation>All observations to the same point in a group should be averaged together (they have consistant orientation)</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="TargetPoint" minOccurs="0"/>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="Backsight"/>
<xs:element ref="RawObservation" maxOccurs="unbounded"/>
<xs:element ref="ReducedObservation"/>
<xs:element name="RedHorizontalPosition" minOccurs="0">
<xs:annotation>
<xs:documentation>This element is used to define the Reduced Horizontal Position. The coordinates given in Geographical Coordinates may come in variety of means.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="FieldNote"/>
</xs:sequence>
<xs:attribute name="desc" type="xs:string"/>
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="state" type="xs:string"/>
<xs:attribute name="oID" type="xs:string"/>
<xs:attribute name="purpose" type="xs:string"/>
<xs:attribute name="date" type="xs:date"/>
<xs:attribute name="equipmentUsed" type="xs:string"/>
<xs:attribute name="filedNote" type="xs:string"/>
<xs:attribute name="horizontalDatum" type="xs:string"/>
<xs:attribute name="latitude" type="xs:double"/>
<xs:attribute name="longitude" type="xs:double"/>
<xs:attribute name="horizontaladjustment" type="xs:string"/>
<xs:attribute name="currencyDate" type="xs:date"/>
<xs:attribute name="class" type="xs:integer"/>
<xs:attribute name="positionalUncertainity" type="xs:double"/>
<xs:attribute name="localUncertainity" type="xs:double"/>
</xs:complexType>
</xs:element>
<xs:element ref="ReducedArcObservation" minOccurs="0"/>
<xs:element name="RedVerticalObservation" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>This element is used to define the Reduced Verticall Position. The coordinates given in Geographical Coordinates may come in variety of means.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="FieldNote"/>
</xs:sequence>
<xs:attribute name="desc" type="xs:string"/>
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="state" type="xs:string"/>
<xs:attribute name="oID" type="xs:string"/>
<xs:attribute name="purpose" type="xs:string"/>
<xs:attribute name="date" type="xs:date"/>
<xs:attribute name="equipmentUsed" type="xs:string"/>
<xs:attribute name="filedNote" type="xs:string"/>
<xs:attribute name="currencyDate" type="xs:date"/>
<xs:attribute name="class" type="xs:integer"/>
<xs:attribute name="positionalUncertainity" type="xs:string"/>
<xs:attribute name="localUncertainity" type="xs:string"/>
<xs:attribute name="order" type="xs:string"/>
<xs:attribute name="verticalDatum" type="xs:string"/>
<xs:attribute name="height" type="xs:double"/>
<xs:attribute name="verticalAdjustment" type="xs:string"/>
</xs:complexType>
</xs:element>
<xs:element ref="FieldNote" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
</xs:sequence>
<xs:attribute name="id" type="xs:ID" use="required"/>
<xs:attribute name="purpose" type="purposeType"/>
<xs:attribute name="setupID" type="xs:IDREF"/>
<xs:attribute name="targetSetupID" type="xs:IDREF"/>
<xs:attribute name="setID"/>
<xs:attribute name="coordGeomRefs" type="coordGeomNameRefs"/>
<!-- coordGeomRefs identifies one or more 'name' values that link to specific <Line>, <Curve>, <Spiral> or <IrregularLine> in a <CoordGeom> element. This allows linking an survey observation to specific <Parcel>.<CoordGeom> based geometry. -->
</xs:complexType>
</xs:element>
<xs:element name="ControlChecks">
<xs:annotation>
<xs:documentation>Records check shots to know locations during field observations</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="ObservationGroup" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="PointResults" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="FieldNote" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="PointResults">
<xs:annotation>
<xs:documentation/>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="TargetPoint" minOccurs="0"/>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="FieldNote" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
</xs:sequence>
<xs:attribute name="setupID" type="xs:IDREF"/>
<xs:attribute name="targetSetupID" type="xs:IDREF"/>
<xs:attribute name="meanHorizAngle" type="xs:double"/>
<xs:attribute name="horizStdDeviation" type="xs:double"/>
<xs:attribute name="meanzenithAngle" type="zenithAngle"/>
<xs:attribute name="vertStdDeviation" type="xs:double"/>
<xs:attribute name="meanSlopeDistance" type="xs:double"/>
<xs:attribute name="slopeDistanceStdDeviation" type="xs:double"/>
</xs:complexType>
</xs:element>
<!-- ReducedObservation Referenced to ObservedLine and Observation in UML datamodel-->
<xs:element name="ReducedObservation">
<xs:annotation>
<xs:documentation>This has been modified to include new fields such as accuracy, date, class and adoption. I've added in bearing (azimuth is in terms of true north whereas bearing is the projection north) </xs:documentation>
<xs:documentation> - maybe this doesn't matter, may need to discuss</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="TargetPoint" minOccurs="0"/>
<xs:element ref="OffsetVals" minOccurs="0"/>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="FieldNote" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
</xs:sequence>
<xs:attribute name="purpose" type="purposeType"/>
<xs:attribute name="setupID" type="xs:IDREF"/>
<xs:attribute name="targetSetupID" type="xs:IDREF"/>
<xs:attribute name="setID"/>
<xs:attribute name="targetHeight" type="xs:double"/>
<xs:attribute name="azimuth" type="direction" use="optional"/>
<xs:attribute name="horizDistance" type="xs:double" use="optional"/>
<xs:attribute name="vertDistance" type="xs:double" use="optional"/>
<xs:attribute name="horizAngle" type="angle" use="optional"/>
<xs:attribute name="slopeDistance" type="xs:double" use="optional"/>
<xs:attribute name="zenithAngle" type="zenithAngle" use="optional"/>
<xs:attribute name="equipmentUsed" type="xs:string"/>
<xs:attribute name="azimuthAccuracy" type="xs:double"/>
<xs:attribute name="distanceAccuracy" type="xs:double"/>
<xs:attribute name="date" type="xs:date"/>
<xs:attribute name="distanceType" type="xs:string"/>
<xs:attribute name="azimuthType" type="xs:string"/>
<xs:attribute name="adoptedAzimuthSurvey" type="xs:string"/>
<xs:attribute name="adoptedDistanceSurvey" type="xs:string"/>
<xs:attribute name="distanceAccClass" type="xs:string"/>
<xs:attribute name="azimuthAccClass" type="xs:string"/>
<xs:attribute name="azimuthAdoptionFactor" type="xs:double"/>
<xs:attribute name="distanceAdoptionFactor" type="xs:double"/>
<xs:attribute name="coordGeomRefs" type="coordGeomNameRefs"/>
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="desc" type="xs:string"/>
<xs:attribute name="state" type="stateType"/>
<xs:attribute name="oID" type="xs:string"/>
<xs:attribute name="MSLDistance" type="xs:string"/>
<xs:attribute name="spherDistance" type="xs:string"/>
<!-- coordGeomRefs identifies one or more 'name' values that link to specific <Line>, <Curve>, <Spiral> or <IrregularLine> in a <CoordGeom> element. This allows linking an survey observation to specific <Parcel>.<CoordGeom> based geometry. -->
</xs:complexType>
</xs:element>
<xs:element name="ReducedArcObservation">
<xs:annotation>
<xs:documentation>As we discussed this element is used to provide measured information for calculating boundary arcs. The definition information required is quite different to the curve element</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="TargetPoint" minOccurs="0"/>
<xs:element ref="OffsetVals" minOccurs="0"/>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="FieldNote" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
</xs:sequence>
<xs:attribute name="purpose" type="purposeType"/>
<xs:attribute name="setupID" type="xs:IDREF"/>
<xs:attribute name="targetSetupID" type="xs:IDREF"/>
<xs:attribute name="setID"/>
<xs:attribute name="chordAzimuth" type="direction" use="required"/>
<xs:attribute name="radius" type="xs:double" use="required"/>
<xs:attribute name="length" type="xs:double" use="required"/>
<xs:attribute name="rot" type="clockwise" use="required"/>
<xs:attribute name="equipmentUsed" type="xs:string"/>
<xs:attribute name="arcAzimuthAccuracy" type="xs:double"/>
<xs:attribute name="arcLengthAccuracy" type="xs:double"/>
<xs:attribute name="date" type="xs:date"/>
<xs:attribute name="arcType" type="xs:string"/>
<xs:attribute name="adoptedSurvey" type="xs:string"/>
<xs:attribute name="lengthAccClass" type="xs:string"/>
<xs:attribute name="azimuthAccClass" type="xs:string"/>
<xs:attribute name="azimuthAdoptionFactor" type="xs:double"/>
<xs:attribute name="lengthAdoptionFactor" type="xs:double"/>
<xs:attribute name="coordGeomRefs" type="coordGeomNameRefs"/>
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="desc" type="xs:string"/>
<xs:attribute name="state" type="stateType"/>
<xs:attribute name="oID" type="xs:string"/>
<!-- coordGeomRefs identifies one or more 'name' values that link to specific <Line>, <Curve>, <Spiral> or <IrregularLine> in a <CoordGeom> element. This allows linking an survey observation to specific <Parcel>.<CoordGeom> based geometry. -->
</xs:complexType>
</xs:element>
<!-- Monuments collection -->
<xs:element name="Monuments">
<xs:annotation>
<xs:documentation>This list of monuments allows them to be grouped at a file level like parcels and points etc</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="Monument" maxOccurs="unbounded"/>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="desc" type="xs:string"/>
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="state" type="stateType"/>
</xs:complexType>
<xs:unique name="uMntName">
<xs:selector xpath="Monument"/>
<xs:field xpath="@name"/>
</xs:unique>
</xs:element>
<xs:element name="Monument">
<xs:annotation>
<xs:documentation>This is a new element that represents a physical monument placed to mark a CgPoint within a survey</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"/>
<xs:attribute name="pntRef" type="pointNameRef"/>
<xs:attribute name="desc" type="xs:string"/>
<xs:attribute name="state" type="xs:string"/>
<xs:attribute name="type" type="xs:string"/>
<xs:attribute name="condition" type="xs:string"/>
<xs:attribute name="category" type="monumentCategory"/>
<xs:attribute name="beacon" type="beaconType"/>
<xs:attribute name="beaconProtection" type="beaconProtectionType"/>
<xs:attribute name="oID" type="xs:string"/>
<xs:attribute name="reference" type="xs:string"/>
<xs:attribute name="originSurvey" type="xs:string"/>
</xs:complexType>
</xs:element>
<!-- Surfaces collection -->
<xs:element name="Surfaces">
<xs:annotation>
<xs:documentation>A collection of surface models.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="Surface" maxOccurs="unbounded"/>
<xs:element ref="SurfVolumes" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="desc" type="xs:string"/>
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="state" type="stateType"/>
</xs:complexType>
<xs:unique name="uSrfName">
<xs:selector xpath="Surface"/>
<xs:field xpath="@name"/>
</xs:unique>
</xs:element>
<xs:element name="Surface">
<xs:annotation>
<xs:documentation>SourceData is an optional collection of the points, contours, breaklines and boundaries that were used to create the surface.</xs:documentation>
<xs:documentation>Definition is a collection of points and faces that define the surface.</xs:documentation>
<xs:documentation>Watersheds is a collection the watershed boundaries for the surface.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:choice maxOccurs="3">
<xs:element ref="SourceData" minOccurs="0"/>
<xs:element ref="Definition" minOccurs="0"/>
<xs:element ref="Watersheds" minOccurs="0"/>
</xs:choice>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="name" type="xs:string" use="required"/>
<xs:attribute name="desc" type="xs:string"/>
<xs:attribute name="OID" type="xs:string"/>
<xs:attribute name="state" type="stateType"/>
</xs:complexType>
</xs:element>
<xs:element name="SourceData">
<xs:annotation>
<xs:documentation>The collection of data that was used to create the surface.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence maxOccurs="unbounded">
<xs:choice>
<xs:element ref="Chain" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="PointFiles" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="Boundaries" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="Breaklines" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="Contours" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="DataPoints" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="DataPoints">
<xs:annotation>
<xs:documentation>The sub element PntList3D is group of points is defined by a 3D
north/east/elev list of points that define the geometry.</xs:documentation>
</xs:annotation>
<xs:complexType mixed="true">
<xs:sequence maxOccurs="unbounded">
<xs:element ref="PntList3D" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="desc" type="xs:string"/>
<xs:attribute name="code" type="xs:string"/>
<xs:attribute name="state" type="stateType"/>
<xs:attribute name="pntRef" type="pointNameRef"/>
<xs:attribute name="pointGeometry" type="pointGeometryType"/>
<xs:attribute name="DTMAttribute" type="DTMAttributeType"/>
</xs:complexType>
</xs:element>
<xs:element name="PointFiles">
<xs:annotation>
<xs:documentation>The collection of external point files that were used to define the surface.</xs:documentation>
<xs:documentation>Use is optional.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="PointFile" maxOccurs="unbounded"/>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="PointFile">
<xs:annotation>
<xs:documentation>A reference to an external file containing point information.</xs:documentation>
<xs:documentation>The format of the information is defined by the order and delimeter attributes.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="fileName" use="required"/>
<xs:attribute name="fileType" use="required"/>
<xs:attribute name="fileFormat" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="Boundaries">
<xs:annotation>
<xs:documentation>The collection of boundaries that were used to define the surface.</xs:documentation>
<xs:documentation>Use is optional.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="Boundary" maxOccurs="unbounded"/>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Boundary">
<xs:annotation>
<xs:documentation>The boundary region contains a 2D north/east or 3D north/east/elev list of points that define the geometry.</xs:documentation>
<xs:documentation>is identified by the "name" attribute.</xs:documentation>
<xs:documentation>If the "edgeTrim" attribute is true the faces are trimmed at the boundary edge, otherwise faces are not trimmed</xs:documentation>
<xs:documentation>and must exist entirely within the boundary.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:choice>
<xs:element ref="PntList2D"/>
<xs:element ref="PntList3D"/>
<!-- Here PntList2D represents 2D planametric coordinate pairs expressed as space delimited Northing Easting pairs. -->
</xs:choice>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="bndType" type="surfBndType" use="required"/>
<xs:attribute name="edgeTrim" type="xs:boolean" use="required"/>
<xs:attribute name="area" type="xs:double"/>
<xs:attribute name="desc" type="xs:string"/>
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="state" type="stateType"/>
</xs:complexType>
</xs:element>
<xs:element name="Breaklines">
<xs:annotation>
<xs:documentation>The collection of breaklines that were used to define the surface.</xs:documentation>
<xs:documentation>Use is optional.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="Breakline" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="RetWall" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Breakline">
<xs:annotation>
<xs:documentation>The breakline is defined by a 2D north/east or 3D north/east/elev list of points that define the geometry.</xs:documentation>
<xs:documentation>is identified by the "name" attribute.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:choice>
<xs:element ref="PntList2D"/>
<xs:element ref="PntList3D"/>
<!-- Here PntList2D represents 2D planametric coordinate pairs expressed as space delimited Northing Easting pairs. -->
</xs:choice>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="brkType" type="breakLineType"/>
<xs:attribute name="desc" type="xs:string"/>
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="state" type="stateType"/>
</xs:complexType>
</xs:element>
<xs:element name="RetWall">
<xs:annotation>
<xs:documentation>The retaining wall is defined by a sequential collection of points along the wall.</xs:documentation>
<xs:documentation>Each point has a location (northing/easting/elevation), height of wall and offset to the wall point.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="RetWallPnt" minOccurs="2" maxOccurs="unbounded"/>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="desc" type="xs:string"/>
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="state" type="stateType"/>
</xs:complexType>
</xs:element>
<xs:element name="RetWallPnt">
<xs:annotation>
<xs:documentation>A retaining wall point defined by a space delimited "northing easting elevation" text value with height and offset attributes to define the wall point</xs:documentation>
<xs:documentation>The height value is positive if the northing/easting/elevation point is at the bottom of the wall, negative if the point is at the top of the wall.</xs:documentation>
<xs:documentation>The offset value is negative for left and positive for right.</xs:documentation>
</xs:annotation>
<xs:complexType mixed="true">
<xs:simpleContent>
<xs:extension base="PointType3dReq">
<xs:attribute name="height" type="xs:double" use="required"/>
<xs:attribute name="offset" type="xs:double" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="Contours">
<xs:annotation>
<xs:documentation>The collection of contours that were used to define the surface.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="Contour" maxOccurs="unbounded"/>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Contour">
<xs:annotation>
<xs:documentation>The contour is defined by an elevation attribute and a 2D north/east list of points that define the geometry.</xs:documentation>
<xs:documentation>is identified by the "name" attribute.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="PntList2D"/>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
<!-- Here PntList2D represents 2D planametric coordinate pairs expressed as space delimited Northing Easting pairs. -->
</xs:sequence>
<xs:attribute name="elev" type="xs:double" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="Definition">
<xs:annotation>
<xs:documentation>The collection of faces and points that defined the surface.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="Pnts"/>
<xs:element ref="Faces" maxOccurs="unbounded"/>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="surfType" type="surfTypeEnum" use="required"/>
<xs:attribute name="area2DSurf" type="xs:double"/>
<xs:attribute name="area3DSurf" type="xs:double"/>
<xs:attribute name="elevMax" type="xs:double"/>
<xs:attribute name="elevMin" type="xs:double"/>
</xs:complexType>
</xs:element>
<xs:element name="Pnts">
<xs:annotation>
<xs:documentation>The collection of points that defined the surface. The "P" point id values are unique per surface.</xs:documentation>
<xs:documentation>The id values are referenced by the surface faces and breaklines.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="P" minOccurs="3" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:unique name="uSrfPntNum">
<xs:selector xpath="P"/>
<xs:field xpath="@id"/>
</xs:unique>
</xs:element>
<xs:element name="P">
<xs:annotation>
<xs:documentation>A surface point. it contains an id attribute and a space delimited "northing easting elevation" text value.</xs:documentation>
<xs:documentation>The id values are referenced by the surface faces for the coordinate values.</xs:documentation>
</xs:annotation>
<xs:complexType mixed="true">
<xs:simpleContent>
<xs:extension base="PointType">
<xs:attribute name="id" type="xs:positiveInteger" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="Faces">
<xs:annotation>
<xs:documentation>The collection of faces that defined the surface.</xs:documentation>
<xs:documentation>The faces are defined by either 3 (TIN) or 4 (grid) points, as indicated by the "surfType" attribute</xs:documentation>
<xs:documentation>For the north/east/elev values, each point of the face references a "P"point element point in the SurfPnts collection.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="F" maxOccurs="unbounded"/>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="desc" type="xs:string"/>
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="state" type="stateType"/>
</xs:complexType>
</xs:element>
<xs:simpleType name="FaceType">
<xs:list itemType="xs:integer"/>
</xs:simpleType>
<xs:element name="F">
<xs:annotation>
<xs:documentation>A surface face. It contains a space delimited list of "id" references for 3 (TIN) or 4 (grid) surface "P" points. </xs:documentation>
<xs:documentation>The 3 or 4 numbers represent the vertices on the face. Each number is a reference to the ID value of a surface point "P" for the face coordinates.</xs:documentation>
<xs:documentation>
Attribute "i" is optional, where a value of "1" indicating the face is part of the triangulation but is invisible.
Attribute "n" is optional, space delimited face index values indicating the adjacent face index for each face edge, where a value of "0" (an invalid face index value) indicates the edge has NO neighboring face. The face index value is implied and defined from 1 to n number of F elements in a a single Faces collection.
Example:
<!--
<Faces>
<F>5 10 20</F> Implied face index = 1
<F>5 10 20</F> Implied face index = 2
<F>5 10 20</F> Implied face index = 3
<F n="2 0 3" i="1">10 20 30</F> Implied face index = 4
...
</Faces>
-->
Where 2 is the neighboring face index for the edge 10 to 20, 0 means no
neighbor between 20 and 30 and 3 is the neighbor index for 30 to 10.
</xs:documentation>
</xs:annotation>
<xs:complexType mixed="true">
<xs:simpleContent>
<xs:extension base="FaceType">
<xs:attribute name="i" type="xs:integer" use="optional"/>
<xs:attribute name="n" type="FaceType" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="Watersheds">
<xs:annotation>
<xs:documentation>The collection of watershed regions for the surface.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="Watershed" maxOccurs="unbounded"/>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Watershed">
<xs:annotation>
<xs:documentation>The watershed region contains a 2D north/east or 3D north/east/elev list of points that define the boundary.</xs:documentation>
<xs:documentation>A watershed is identified by the "name" attribute.</xs:documentation>
<xs:documentation>It may have 1 or more Outlet elements.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:choice>
<xs:element ref="PntList2D"/>
<xs:element ref="PntList3D"/>
<!-- Here PntList2D represents 2D planametric coordinate pairs expressed as space delimited Northing Easting pairs. -->
</xs:choice>
<xs:element ref="Outlet" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="name" type="xs:string" use="required"/>
<xs:attribute name="area" type="xs:double"/>
<xs:attribute name="desc" type="xs:string"/>
</xs:complexType>
</xs:element>
<xs:element name="Outlet">
<xs:annotation>
<xs:documentation>Identifies a drain point from the watershed with a space delimited "northing easting elevation" value.</xs:documentation>
<xs:documentation>If it drains to another known watershed, then the name of that watershed is identified by the "refWs" attribute.</xs:documentation>
</xs:annotation>
<xs:complexType mixed="true">
<xs:simpleContent>
<xs:extension base="PointType3dReq">
<xs:attribute name="refWS" type="waterShedNameRef"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="SurfVolumes">
<xs:annotation>
<xs:documentation>A collection of surface volume data</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="SurfVolume" maxOccurs="unbounded"/>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="desc" type="xs:string"/>
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="surfVolCalcMethod" type="surfVolCMethodType" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="SurfVolume">
<xs:annotation>
<xs:documentation>volume calculation results between two surfaces</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="surfBase" type="surfaceNameRef" use="required"/>
<xs:attribute name="surfCompare" type="surfaceNameRef" use="required"/>
<xs:attribute name="volCut" type="xs:double" use="required"/>
<xs:attribute name="volFill" type="xs:double" use="required"/>
<xs:attribute name="volTotal" type="xs:double" use="required"/>
<xs:attribute name="desc" type="xs:string"/>
<xs:attribute name="name" type="xs:string"/>
</xs:complexType>
</xs:element>
<!-- Parcels collection -->
<xs:element name="Parcels">
<xs:annotation>
<xs:documentation>A collection of Parcels</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="Parcel" maxOccurs="unbounded"/>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="desc" type="xs:string"/>
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="state" type="stateType"/>
</xs:complexType>
<xs:unique name="uPclName">
<xs:selector xpath="Parcel"/>
<xs:field xpath="@name"/>
</xs:unique>
</xs:element>
<xs:element name="Parcel">
<xs:annotation>
<xs:documentation>Modified to include parcel class and an official ID</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="Center" minOccurs="0"/>
<xs:element ref="CoordGeom" minOccurs="0"/>
<xs:element name="VolumeGeom" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>Defines the properties of 3Dcoordinate Geometry Collection</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:choice minOccurs="4" maxOccurs="unbounded">
<xs:element ref="CoordGeom"/>
</xs:choice>
<xs:attribute name="desc" type="xs:string"/>
<xs:attribute name="name" type="xs:string" use="required"/>
<xs:attribute name="state" type="stateType"/>
<xs:attribute name="oID" type="xs:string"/>
</xs:complexType>
</xs:element>
<xs:element ref="Parcels" minOccurs="0"/>
<xs:element ref="Title" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="name" type="xs:string" use="required"/>
<xs:attribute name="oID" type="xs:string"/>
<xs:attribute name="area" type="xs:double"/>
<xs:attribute name="desc" type="xs:string"/>
<xs:attribute name="dirClosure" type="direction"/>
<xs:attribute name="distClosure" type="xs:double"/>
<xs:attribute name="owner" type="xs:string"/>
<xs:attribute name="parcelType" type="xs:string"/>
<xs:attribute name="setbackFront" type="xs:double"/>
<xs:attribute name="setbackRear" type="xs:double"/>
<xs:attribute name="setbackSide" type="xs:double"/>
<xs:attribute name="state" type="parcelStateType"/>
<xs:attribute name="taxId" type="xs:string"/>
<xs:attribute name="class" type="xs:string"/>
<xs:attribute name="exclussionArea" type="xs:double"/>
<xs:attribute name="useOfParcel" type="xs:string"/>
<xs:attribute name="parcelFormat" type="xs:string"/>
<xs:attribute name="buildingNo" type="xs:string"/>
<xs:attribute name="buildingLevelNo" type="xs:string"/>
<xs:attribute name="volume" type="xs:string"/>
<xs:attribute name="pclRef" type="parcelNameRefs"/>
</xs:complexType>
</xs:element>
<xs:element name="Title">
<xs:annotation>
<xs:documentation>This may be expanded, but the LandXML schema is not really aimed at providing title information so I think name is sufficient</xs:documentation>
</xs:annotation>
<xs:complexType mixed="true">
<xs:attribute name="name" type="xs:string" use="required"/>
<xs:attribute name="titleType" type="xs:anySimpleType"/>
</xs:complexType>
</xs:element>
<!-- Alignments collection -->
<xs:element name="Alignments">
<xs:annotation>
<xs:documentation>A collection of horizontal Alignments</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="Alignment" maxOccurs="unbounded"/>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="desc" type="xs:string"/>
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="state" type="stateType"/>
</xs:complexType>
<xs:unique name="uAlnName">
<xs:selector xpath="Alignment"/>
<xs:field xpath="@name"/>
</xs:unique>
</xs:element>
<xs:element name="Alignment">
<xs:annotation>
<xs:documentation>geometric horizontal alignment, PGL or chain typically representing a road design center line</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:choice>
<xs:element ref="Start" minOccurs="0"/>
<xs:element ref="CoordGeom"/>
<xs:element ref="AlignPIs" minOccurs="0"/>
<xs:element ref="Cant" minOccurs="0"/>
</xs:choice>
<xs:element ref="StaEquation" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="Profile" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="CrossSects" minOccurs="0"/>
<xs:element ref="Superelevation" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
<xs:attribute name="name" type="xs:string" use="required"/>
<xs:attribute name="length" type="xs:double" use="required"/>
<xs:attribute name="staStart" type="xs:double" use="required"/>
<xs:attribute name="desc" type="xs:string"/>
<xs:attribute name="oID" type="xs:string"/>
<xs:attribute name="state" type="stateType"/>
</xs:complexType>
</xs:element>
<xs:simpleType name="stationIncrementDirectionType">
<xs:restriction base="xs:string">
<xs:enumeration value="increasing"/>
<xs:enumeration value="decreasing"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="StaEquation">
<xs:annotation>
<xs:documentation>The "staInternal" value identifies the location of the station equation. It is the station value with no equations applied (staStart + dist). "staAhead" is the new station value and "staIncrement" indicates whether or not the station values increase or decrease.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="staAhead" type="xs:double" use="required"/>
<xs:attribute name="staBack" type="xs:double"/>
<xs:attribute name="staInternal" type="xs:double" use="required"/>
<xs:attribute name="staIncrement" type="stationIncrementDirectionType" use="optional"/>
<xs:attribute name="desc" type="xs:string"/>
</xs:complexType>
</xs:element>
<xs:element name="Profile">
<xs:annotation>
<xs:documentation>A profile or long section</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:choice maxOccurs="unbounded">
<xs:element ref="ProfSurf" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="ProfAlign" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="desc" type="xs:string"/>
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="staStart" type="xs:double"/>
<xs:attribute name="state" type="stateType"/>
</xs:complexType>
</xs:element>
<xs:element name="ProfSurf">
<xs:annotation>
<xs:documentation>The "ProfSurf" element will typically represent an existing ground surface for a profile. </xs:documentation>
<xs:documentation>It is defined with a space delimited PntList2D of station/elevations pairs. </xs:documentation>
<xs:documentation>Example: "0.000 86.52 6.267 86.89 12.413 87.01 26.020 87.83" </xs:documentation>
<xs:documentation>Note: Gaps in the profile are handled by having 2 or more PntList2D elements.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="PntList2D" maxOccurs="unbounded"/>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="name" type="xs:string" use="required"/>
<xs:attribute name="desc" type="xs:string"/>
<xs:attribute name="state" type="stateType"/>
</xs:complexType>
</xs:element>
<xs:element name="ProfAlign">
<xs:annotation>
<xs:documentation>The "ProfAlign" element will typically represent a proposed vertical alignment for a profile.</xs:documentation>
<xs:documentation>It is defined by a sequential series of any combination of the four "PVI" element types.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:choice maxOccurs="unbounded">
<xs:element ref="PVI" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="ParaCurve" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="UnsymParaCurve" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="CircCurve" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
<!-- <xs:element ref="PVI"/> -->
<!-- <xs:element ref="PVI"/> -->
</xs:sequence>
<xs:attribute name="name" type="xs:string" use="required"/>
<xs:attribute name="desc" type="xs:string"/>
<xs:attribute name="state" type="stateType"/>
</xs:complexType>
</xs:element>
<xs:element name="PVI">
<xs:annotation>
<xs:documentation>Represents a Point of Vertical Intersection with a space delimited "station elevation" text value</xs:documentation>
</xs:annotation>
<xs:complexType mixed="true">
<xs:simpleContent>
<xs:extension base="Point2dReq">
<xs:attribute name="desc" type="xs:string"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="ParaCurve">
<xs:annotation>
<xs:documentation>A Point of Vertical Intersection with a space delimited "station elevation" text value and a parabolic vertical curve defined by the "length" attribute.</xs:documentation>
</xs:annotation>
<xs:complexType mixed="true">
<xs:simpleContent>
<xs:extension base="Point2dReq">
<xs:attribute name="length" type="xs:double" use="required"/>
<xs:attribute name="desc" type="xs:string"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="UnsymParaCurve">
<xs:annotation>
<xs:documentation>A Point of Vertical Intersection with a space delimited "station elevation" text value.</xs:documentation>
<xs:documentation>with an unsymetrical parabolic vertical curve defined by "lengthIn and "lengthOut" attributes.</xs:documentation>
</xs:annotation>
<xs:complexType mixed="true">
<xs:simpleContent>
<xs:extension base="Point2dReq">
<xs:attribute name="lengthIn" type="xs:double" use="required"/>
<xs:attribute name="lengthOut" type="xs:double" use="required"/>
<xs:attribute name="desc" type="xs:string"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="CircCurve">
<xs:annotation>
<xs:documentation>A Point of Vertical Intersection with a space delimited "station elevation" text value</xs:documentation>
<xs:documentation>with a circular vertical curve defined by "length and "radius" attributes.</xs:documentation>
</xs:annotation>
<xs:complexType mixed="true">
<xs:simpleContent>
<xs:extension base="Point">
<xs:attribute name="length" type="xs:double" use="required"/>
<xs:attribute name="radius" type="xs:double" use="required"/>
<xs:attribute name="desc" type="xs:string"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<!-- PipeNetworks collection -->
<xs:element name="PipeNetworks">
<xs:annotation>
<xs:documentation/>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="PipeNetwork" maxOccurs="unbounded"/>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="desc" type="xs:string"/>
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="state" type="stateType"/>
</xs:complexType>
<xs:unique name="uPipeNetName">
<xs:selector xpath="PipeNetwork"/>
<xs:field xpath="@name"/>
</xs:unique>
</xs:element>
<xs:element name="PipeNetwork">
<xs:annotation>
<xs:documentation>This element contains one "Structs" collection element and one "Pipes" collection element.</xs:documentation>
<xs:documentation>keyRef is a Schema validation mechanism that ensures that the "structRef" and "pipeRef" attribute values have corresponding Pipe and Struct "name" values"</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="Structs"/>
<xs:element ref="Pipes"/>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="name" type="xs:string" use="required"/>
<xs:attribute name="pipeNetType" type="pipeNetworkType" use="required"/>
<xs:attribute name="alignmentRef" type="alignmentNameRef"/>
<xs:attribute name="desc" type="xs:string"/>
<xs:attribute name="oID" type="xs:string"/>
<xs:attribute name="state" type="stateType"/>
</xs:complexType>
</xs:element>
<xs:element name="Pipes">
<xs:annotation>
<xs:documentation/>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="Units" minOccurs="0"/>
<xs:element ref="Pipe" maxOccurs="unbounded"/>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:unique name="uPipeName">
<xs:selector xpath="Pipe"/>
<xs:field xpath="@name"/>
</xs:unique>
</xs:element>
<xs:element name="Pipe">
<xs:annotation>
<xs:documentation>Each Pipe within a Pipes collection element will have a unique "name" attribute.</xs:documentation>
<xs:documentation>The pipe type is determined by the existance of one of the following elements: CircPipe, ElliPipe or RectPipe.</xs:documentation>
<xs:documentation>The "startRef and "endRef" attributes reference Struct "name" values.</xs:documentation>
<xs:documentation>The start and end invert elevations for the pipe are defined in the Invert elements of referenced structures.</xs:documentation>
<xs:documentation>Since a struct may have more than one Invert element, the Invert "pipeRef" attribute is used to select the correct invert element.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:choice>
<xs:element ref="CircPipe"/>
<xs:element ref="EggPipe"/>
<xs:element ref="ElliPipe"/>
<xs:element ref="RectPipe"/>
<xs:element ref="Channel"/>
</xs:choice>
<xs:element ref="PipeFlow" minOccurs="0"/>
<xs:element ref="Center" minOccurs="0"/>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
<!-- <Center> point of the Pipe is the point of center on the curved pipe arc. If this optional element is specified, then the pipe starts at refStart, passes through the <Center> point, and end at refEnd. -->
</xs:sequence>
<xs:attribute name="name" type="xs:string" use="required"/>
<xs:attribute name="refEnd" type="structNameRef" use="required"/>
<xs:attribute name="refStart" type="structNameRef" use="required"/>
<xs:attribute name="desc" type="xs:string"/>
<xs:attribute name="length" type="xs:double"/>
<xs:attribute name="oID" type="xs:string"/>
<xs:attribute name="slope" type="xs:double"/>
<xs:attribute name="state" type="stateType"/>
</xs:complexType>
</xs:element>
<xs:element name="CircPipe">
<xs:annotation>
<xs:documentation/>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="diameter" type="xs:double" use="required"/>
<xs:attribute name="desc" type="xs:string"/>
<xs:attribute name="hazenWilliams" type="xs:double"/>
<xs:attribute name="mannings" type="xs:double"/>
<xs:attribute name="material"/>
<xs:attribute name="thickness" type="xs:double"/>
</xs:complexType>
</xs:element>
<xs:element name="ElliPipe">
<xs:annotation>
<xs:documentation/>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="height" type="xs:double" use="required"/>
<xs:attribute name="span" type="xs:double" use="required"/>
<xs:attribute name="desc" type="xs:string"/>
<xs:attribute name="hazenWilliams" type="xs:double"/>
<xs:attribute name="mannings" type="xs:double"/>
<xs:attribute name="material"/>
<xs:attribute name="thickness" type="xs:double"/>
</xs:complexType>
</xs:element>
<xs:element name="EggPipe">
<xs:annotation>
<xs:documentation/>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="height" type="xs:double" use="required"/>
<xs:attribute name="span" type="xs:double" use="required"/>
<xs:attribute name="desc" type="xs:string"/>
<xs:attribute name="hazenWilliams" type="xs:double"/>
<xs:attribute name="mannings" type="xs:double"/>
<xs:attribute name="material"/>
<xs:attribute name="thickness" type="xs:double"/>
</xs:complexType>
</xs:element>
<xs:element name="RectPipe">
<xs:annotation>
<xs:documentation/>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="height" type="xs:double" use="required"/>
<xs:attribute name="width" type="xs:double" use="required"/>
<xs:attribute name="desc" type="xs:string"/>
<xs:attribute name="hazenWilliams" type="xs:double"/>
<xs:attribute name="mannings" type="xs:double"/>
<xs:attribute name="material"/>
<xs:attribute name="thickness" type="xs:double"/>
</xs:complexType>
</xs:element>
<xs:element name="Channel">
<xs:annotation>
<xs:documentation/>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="height" type="xs:double" use="required"/>
<xs:attribute name="widthTop" type="xs:double" use="required"/>
<xs:attribute name="widthBottom" type="xs:double" use="required"/>
<xs:attribute name="desc" type="xs:string"/>
<xs:attribute name="hazenWilliams" type="xs:double"/>
<xs:attribute name="mannings" type="xs:double"/>
<xs:attribute name="material"/>
<xs:attribute name="thickness" type="xs:double"/>
</xs:complexType>
</xs:element>
<xs:element name="PipeFlow">
<xs:annotation>
<xs:documentation/>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="flowIn" type="xs:double" use="required"/>
<xs:attribute name="areaCatchment" type="xs:double"/>
<xs:attribute name="desc" type="xs:string"/>
<xs:attribute name="depthCritical" type="xs:double"/>
<xs:attribute name="hglDown" type="xs:double"/>
<xs:attribute name="hglUp" type="xs:double"/>
<xs:attribute name="intensity" type="xs:double"/>
<xs:attribute name="runoffCoeff" type="xs:double"/>
<xs:attribute name="slopeCritical" type="xs:double"/>
<xs:attribute name="timeInlet" type="xs:double"/>
<xs:attribute name="velocityCritical" type="xs:double"/>
</xs:complexType>
</xs:element>
<xs:element name="Structs">
<xs:annotation>
<xs:documentation/>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="Units" minOccurs="0"/>
<xs:element ref="Struct" minOccurs="2" maxOccurs="unbounded"/>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:unique name="uStructName">
<xs:selector xpath="Struct"/>
<xs:field xpath="@name"/>
</xs:unique>
</xs:element>
<xs:element name="Struct">
<xs:annotation>
<xs:documentation>Each Struct within a Structs collection element must have a unique "name" attribute.</xs:documentation>
<xs:documentation>The structure type is determined by the existance of one of the following elements: CircStruct or RectStruct.</xs:documentation>
<xs:documentation>The Center element will contain the "north east" coordinate text value or a CgPoint "refPnt" attribute.</xs:documentation>
<xs:documentation>Each Invert element contains a "refPipe" attribute to reference a Pipe element "name"</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="Center"/>
<xs:choice>
<xs:element ref="CircStruct"/>
<xs:element ref="RectStruct"/>
<xs:element ref="InletStruct"/>
<xs:element ref="OutletStruct"/>
<xs:element ref="Connection"/>
</xs:choice>
<xs:element ref="Invert" maxOccurs="unbounded"/>
<xs:element ref="StructFlow" minOccurs="0"/>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="name" type="xs:string" use="required"/>
<xs:attribute name="desc" type="xs:string"/>
<xs:attribute name="elevRim" type="xs:double"/>
<xs:attribute name="elevSump" type="xs:double"/>
<xs:attribute name="oID" type="xs:string"/>
<xs:attribute name="state" type="stateType"/>
</xs:complexType>
</xs:element>
<xs:element name="CircStruct">
<xs:annotation>
<xs:documentation/>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="diameter" type="xs:double" use="required"/>
<xs:attribute name="desc" type="xs:string"/>
<xs:attribute name="inletCase"/>
<xs:attribute name="lossCoeff" type="xs:double"/>
<xs:attribute name="material"/>
<xs:attribute name="thickness" type="xs:double"/>
</xs:complexType>
</xs:element>
<xs:element name="RectStruct">
<xs:annotation>
<xs:documentation/>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="length" type="xs:double" use="required"/>
<xs:attribute name="lengthDir" type="direction" use="optional"/>
<xs:attribute name="width" type="xs:double" use="required"/>
<xs:attribute name="desc" type="xs:string"/>
<xs:attribute name="inletCase"/>
<xs:attribute name="lossCoeff" type="xs:double"/>
<xs:attribute name="material"/>
<xs:attribute name="thickness" type="xs:double"/>
</xs:complexType>
</xs:element>
<xs:element name="InletStruct">
<xs:annotation>
<xs:documentation/>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="OutletStruct">
<xs:annotation>
<xs:documentation/>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Connection">
<xs:annotation>
<xs:documentation/>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Invert">
<xs:annotation>
<xs:documentation/>
</xs:annotation>
<xs:complexType>
<xs:attribute name="desc" type="xs:string"/>
<xs:attribute name="elev" type="xs:double" use="required"/>
<xs:attribute name="flowDir" type="inOut" use="required"/>
<xs:attribute name="refPipe" type="pipeNameRef" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="StructFlow">
<xs:annotation>
<xs:documentation/>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="lossIn" type="xs:double" use="required"/>
<xs:attribute name="lossOut" type="xs:double" use="required"/>
<xs:attribute name="desc" type="xs:string"/>
<xs:attribute name="hglIn" type="xs:double"/>
<xs:attribute name="hglOut" type="xs:double"/>
<xs:attribute name="localDepression" type="xs:double"/>
<xs:attribute name="slopeSurf" type="xs:double"/>
<xs:attribute name="slopeGutter" type="xs:double"/>
<xs:attribute name="widthGutter" type="xs:double"/>
</xs:complexType>
</xs:element>
<!-- PlanFeatures collection -->
<xs:element name="PlanFeatures">
<xs:annotation>
<xs:documentation>A collection of planimetric features not otherwise defined by the schema, such as building footprints, guard rails, tree lines, lightpoles or signage.</xs:documentation>
<xs:documentation>Typically a PlanFeatures element will contain a collection of similar items.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="PlanFeature" maxOccurs="unbounded"/>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="desc" type="xs:string"/>
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="state" type="stateType"/>
</xs:complexType>
</xs:element>
<!-- PlanFeature class -->
<xs:element name="PlanFeature">
<xs:annotation>
<xs:documentation>A planimetric feature not otherwise defined by the schema, such as building footprints, guard rails, tree lines, lightpoles or signage.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="CoordGeom"/>
<xs:element ref="Location" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
<xs:attribute name="desc" type="xs:string"/>
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="state" type="stateType"/>
</xs:complexType>
</xs:element>
<!-- GradeModel class -->
<xs:simpleType name="zoneCategoryType">
<xs:restriction base="xs:string">
<xs:enumeration value="road surface"/>
<xs:enumeration value="road subsurface"/>
<xs:enumeration value="road shoulder"/>
<xs:enumeration value="road foreSlope"/>
<xs:enumeration value="road backSlope"/>
<xs:enumeration value="road curb-gutter"/>
<xs:enumeration value="bridge surface"/>
<xs:enumeration value="bridge body"/>
<xs:enumeration value="sidewalk"/>
<xs:enumeration value="ground"/>
<xs:enumeration value="ditch"/>
<xs:enumeration value="wall"/>
<xs:enumeration value="channel"/>
<xs:enumeration value="bike facilities"/>
<xs:enumeration value="obstruction offset"/>
<xs:enumeration value="longitudinal barrier"/>
<xs:enumeration value="sound barrier"/>
<xs:enumeration value="bridge abutment"/>
<xs:enumeration value="vertical pillar"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="zoneVertType">
<xs:restriction base="xs:string">
<xs:enumeration value="slope"/>
<xs:enumeration value="vertical distance"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="zoneSurfaceType">
<xs:restriction base="xs:string">
<xs:enumeration value="finalSurface"/>
<xs:enumeration value="subgrade"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="zoneHingeType">
<xs:restriction base="xs:string">
<xs:enumeration value="center"/>
<xs:enumeration value="left edge"/>
<xs:enumeration value="right edge"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="zoneMaterialType">
<xs:restriction base="xs:string">
<xs:enumeration value="pavement-high-type"/>
<xs:enumeration value="pavement-intermediate-type"/>
<xs:enumeration value="pavement-low-type"/>
<xs:enumeration value="soil"/>
<xs:enumeration value="concrete"/>
<xs:enumeration value="stone"/>
<xs:enumeration value="riprap"/>
<xs:enumeration value="turf"/>
<xs:enumeration value="gravel"/>
<xs:enumeration value="paved"/>
<xs:enumeration value="metal"/>
<xs:enumeration value="metal grate"/>
<xs:enumeration value="composite"/>
<xs:enumeration value="timber"/>
<xs:enumeration value="other"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="GradeModel">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element ref="GradeSurface" maxOccurs="unbounded"/>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
<xs:attribute name="desc" type="xs:string"/>
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="state" type="stateType"/>
</xs:complexType>
</xs:element>
<xs:element name="GradeSurface">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element ref="Start" minOccurs="0"/>
<xs:element ref="Zones" maxOccurs="2"/>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
<xs:attribute name="alignmentRef" type="alignmentNameRef" use="required"/>
<xs:attribute name="stationAlignmentRef" type="alignmentNameRef"/>
<xs:attribute name="surfaceType" type="zoneSurfaceType" use="required"/>
<xs:attribute name="surfaceRef" type="surfaceNameRef"/>
<xs:attribute name="surfaceRefs" type="surfaceNameRefs"/>
<xs:attribute name="cgPointRefs" type="pointNameRefs"/>
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="desc" type="xs:string"/>
<xs:attribute name="state" type="stateType"/>
</xs:complexType>
</xs:element>
<xs:element name="Zones">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element ref="Zone" maxOccurs="unbounded"/>
<xs:element ref="ZoneHinge" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
<xs:attribute name="side" type="sideofRoadType" use="required"/>
<xs:attribute name="desc" type="xs:string"/>
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="state" type="stateType"/>
</xs:complexType>
</xs:element>
<!-- Note: The vertValue used in any Zone element is a double that indicates the cross slope (measure perpendicular to the referenced horizontal alignment OR a vertical distance offset. This is determined by the vertType attribute which is either "slope" or "vertDistance", the default is "slope".
-->
<xs:element name="Zone">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="ZoneWidth" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="ZoneSlope" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="ZoneCutFill" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="ZoneMaterial" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="ZoneCrossSectStructure" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
<xs:attribute name="desc" type="xs:string"/>
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="state" type="stateType"/>
<xs:attribute name="priority" type="xs:int" use="required"/>
<xs:attribute name="category" type="zoneCategoryType" use="required"/>
<xs:attribute name="staStart" type="station" use="required"/>
<xs:attribute name="staEnd" type="station"/>
<xs:attribute name="startWidth" type="xs:double" use="required"/>
<xs:attribute name="startVertValue" type="xs:double" use="required"/>
<xs:attribute name="startVertType" type="zoneVertType" use="required"/>
<xs:attribute name="endWidth" type="xs:double"/>
<xs:attribute name="endVertValue" type="xs:double"/>
<xs:attribute name="endVertType" type="zoneVertType"/>
</xs:complexType>
</xs:element>
<xs:element name="ZoneWidth">
<xs:complexType>
<xs:choice>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
<xs:attribute name="staStart" type="station" use="required"/>
<xs:attribute name="staEnd" type="station" use="required"/>
<xs:attribute name="startWidth" type="xs:double" use="required"/>
<xs:attribute name="endWidth" type="xs:double"/>
</xs:complexType>
</xs:element>
<xs:element name="ZoneSlope">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
<xs:attribute name="staStart" type="station" use="required"/>
<xs:attribute name="staEnd" type="station" use="required"/>
<xs:attribute name="startVertValue" type="xs:double"/>
<xs:attribute name="startVertType" type="zoneVertType"/>
<xs:attribute name="endVertValue" type="xs:double" use="required"/>
<xs:attribute name="endVertType" type="zoneVertType" use="required"/>
<xs:attribute name="parabolicStartStation" type="station"/>
<xs:attribute name="parabolicEndStation" type="station"/>
<!-- changeType is a flag that indicates the use of slope or vertical change it can be either "slope" or "vertDistance"-->
</xs:complexType>
</xs:element>
<xs:element name="ZoneHinge">
<xs:complexType>
<xs:choice>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
<xs:attribute name="staStart" type="station" use="required"/>
<xs:attribute name="staEnd" type="station" use="required"/>
<xs:attribute name="hingeType" type="zoneHingeType" use="required"/>
<xs:attribute name="zonePriorityRef" type="xs:int" use="required"/>
</xs:complexType>
<!-- This element describes the non-center hinge point for superelevated roadways
The zonePriorityRef should contain the zone priority number (zone identifier) where the hinge point is located. The hingeType attribute identifies the left or right side of the zone to use as the hinge point.
-->
</xs:element>
<xs:element name="ZoneCutFill">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
<xs:attribute name="staStart" type="station" use="required"/>
<xs:attribute name="staEnd" type="station" use="required"/>
<xs:attribute name="cutSlope" type="crossSlope"/>
<xs:attribute name="fillSlope" type="crossSlope"/>
</xs:complexType>
</xs:element>
<xs:element name="ZoneMaterial">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
<xs:attribute name="staStart" type="station" use="required"/>
<xs:attribute name="staEnd" type="station" use="required"/>
<xs:attribute name="material" type="zoneMaterialType" use="required"/>
</xs:complexType>
</xs:element>
<xs:simpleType name="zoneTransitionType">
<xs:restriction base="xs:string">
<xs:enumeration value="parallel"/>
<xs:enumeration value="linear"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="zoneOffsetType">
<xs:restriction base="xs:string">
<xs:enumeration value="centerline"/>
<xs:enumeration value="zone"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="zonePlacementType">
<xs:restriction base="xs:string">
<xs:enumeration value="dependent"/>
<xs:enumeration value="independent"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="ZoneCrossSectStructure">
<xs:complexType>
<xs:sequence>
<xs:annotation>
<xs:documentation>
The PntList2D contains space delimited offsetDistance / elevation pairs describing a crossectional shape, typically a closed shape representing a retaining wall, traffic barriers or vertical pillars. As is common with road cross sections the origin is the Profile Grade Line (PGL) of the design road. The offsetDistance measure is the 2D distance from the PGL and the elevation values are absolute (real world) elevations for the entire data set.</xs:documentation>
</xs:annotation>
<xs:element ref="PntList2D"/>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="innerConnectPnt" type="crossSectionPnt" use="required"/>
<xs:attribute name="outerConnectPnt" type="crossSectionPnt" use="required"/>
<xs:attribute name="offsetMode" type="zoneOffsetType" default="zone"/>
<xs:attribute name="startOffset" type="offsetDistance" default="0.0"/>
<xs:attribute name="startOffsetElev" type="offsetElevation" default="0.0"/>
<xs:attribute name="endOffset" type="offsetDistance" default="0.0"/>
<xs:attribute name="endOffsetElev" type="offsetElevation" default="0.0"/>
<xs:attribute name="transition" type="zoneTransitionType" default="parallel"/>
<xs:attribute name="placement" type="zonePlacementType" default="dependent"/>
<xs:attribute name="catalogReference" type="xs:anyURI" use="optional"/>
</xs:complexType>
</xs:element>
<!-- Roadway Elements Added 02-21-2002, Nathan Crews -->
<xs:annotation>
<xs:documentation>Proposed Road model elements for FHWA IHSDM project</xs:documentation>
</xs:annotation>
<!-- enumeration types -->
<xs:simpleType name="sideofRoadType">
<xs:restriction base="xs:string">
<xs:enumeration value="right"/>
<xs:enumeration value="left"/>
<xs:enumeration value="both"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="roadTerrainType">
<xs:restriction base="xs:string">
<xs:enumeration value="flat"/>
<xs:enumeration value="rolling"/>
<xs:enumeration value="mountainous"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="functionalClassType">
<xs:restriction base="xs:string">
<xs:enumeration value="arterial"/>
<xs:enumeration value="collector "/>
<xs:enumeration value="local"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="adverseSEType">
<xs:restriction base="xs:string">
<xs:enumeration value="non-adverse"/>
<xs:enumeration value="adverse"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="pavementSurfaceType">
<xs:restriction base="xs:string">
<xs:enumeration value="high-type"/>
<xs:enumeration value="intermediate-type"/>
<xs:enumeration value="low-type"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="shoulderMaterialType">
<xs:restriction base="xs:string">
<xs:enumeration value="turf"/>
<xs:enumeration value="gravel"/>
<xs:enumeration value="paved"/>
<xs:enumeration value="composite"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="shoulderCategoryType">
<xs:restriction base="xs:string">
<xs:enumeration value="usable"/>
<xs:enumeration value="graded"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="laneTaperType">
<xs:restriction base="xs:string">
<xs:enumeration value="straight-line"/>
<xs:enumeration value="partial-tangent"/>
<xs:enumeration value="symmetrical-reverse-curve"/>
<xs:enumeration value="asymmetrical-reverse-curve"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="turnLaneType">
<xs:restriction base="xs:string">
<xs:enumeration value="left"/>
<xs:enumeration value="right"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="ditchBottomShape">
<xs:restriction base="xs:string">
<xs:enumeration value="true-V"/>
<xs:enumeration value="rounded-V"/>
<xs:enumeration value="rounded-trapezoidal"/>
<xs:enumeration value="flat-trapezoidal"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="trafficControlType">
<xs:restriction base="xs:string">
<xs:enumeration value="none"/>
<xs:enumeration value="signal"/>
<xs:enumeration value="stop"/>
<xs:enumeration value="yield"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="trafficControlPosition">
<xs:restriction base="xs:string">
<xs:enumeration value="side"/>
<xs:enumeration value="overhead"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="trafficTurnRestriction">
<xs:restriction base="xs:string">
<xs:enumeration value="none"/>
<xs:enumeration value="no-left-turn"/>
<xs:enumeration value="no-right-turn"/>
<xs:enumeration value="no-U-turn "/>
<xs:enumeration value="no-turn "/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="intersectionConstructionType">
<xs:restriction base="xs:string">
<xs:enumeration value="existing"/>
<xs:enumeration value="improvement"/>
<xs:enumeration value="new"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="curbType">
<xs:restriction base="xs:string">
<xs:enumeration value="unknown"/>
</xs:restriction>
<!-- PLACEHOLDER NEED ENUMERATION VALUES ! -->
</xs:simpleType>
<xs:simpleType name="cornerType">
<xs:restriction base="xs:string">
<xs:enumeration value="unknown"/>
</xs:restriction>
<!-- PLACEHOLDER NEED ENUMERATION VALUES ! -->
</xs:simpleType>
<!-- Road sign types and details from FHWA Manual on Traffic Control Devices (MUTCD) -->
<xs:simpleType name="roadSignType">
<xs:restriction base="xs:string">
<xs:enumeration value="regulatory"/>
<xs:enumeration value="guide"/>
<xs:enumeration value="warning"/>
<xs:enumeration value="specificService"/>
<xs:enumeration value="tourist"/>
<xs:enumeration value="recreation-cultural"/>
<xs:enumeration value="emergencyManagement"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="crashSeverityType">
<xs:restriction base="xs:string">
<xs:enumeration value="fatal"/>
<xs:enumeration value="nonfatal "/>
<xs:enumeration value="propery-damage-only"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="crashIntersectionRelation">
<xs:restriction base="xs:string">
<xs:enumeration value="unknown"/>
<xs:enumeration value="non-intersection-related"/>
<xs:enumeration value="intersection-related"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="maneuverType">
<xs:restriction base="xs:string">
<xs:enumeration value="A-stop-on-rural-road"/>
<xs:enumeration value="C-speed-path-direction-change-on-rural-road"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="bridgeProjectType">
<xs:restriction base="xs:string">
<xs:enumeration value="new"/>
<xs:enumeration value="existing"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="crossSectionPnt">
<xs:annotation>
<xs:documentation>Attribute that represents a space delimited, cross section offset/elevation pair.
Example: crossSectionPnt="12.0 723.3456"
</xs:documentation>
</xs:annotation>
<xs:restriction base="Point2dReq"/>
</xs:simpleType>
<!-- FHWA IHSDM types -->
<xs:simpleType name="drivewayDensity">
<xs:annotation>
<xs:documentation>This item is the driveway density for both sides of the roadway combined. The unit of measure for this item is driveways/kilometer for Metric units and driveways/mile for Imperial. </xs:documentation>
</xs:annotation>
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="speed">
<xs:annotation>
<xs:documentation>This item is the speed or velocity of travel. The unit of measure for this item is kilometers/hour for Metric units and miles/hour for Imperial. </xs:documentation>
</xs:annotation>
<xs:restriction base="xs:double"/>
</xs:simpleType>
<!-- FHWA IHSDM elements -->
<xs:element name="Roadways">
<xs:complexType>
<xs:choice>
<xs:element ref="Roadway" maxOccurs="unbounded"/>
<xs:element ref="Intersections" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="desc" type="xs:string"/>
<xs:attribute name="state" type="stateType"/>
</xs:complexType>
</xs:element>
<xs:element name="Roadway">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="Classification" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="Lanes" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="Roadside" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="Speeds" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="NoPassingZone" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="TrafficVolume" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="CrashData" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="DecisionSightDistance" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="BridgeElement" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="PlanFeature" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
<xs:attribute name="name" type="xs:string" use="required"/>
<xs:attribute name="alignmentRefs" type="alignmentNameRefs" use="required"/>
<xs:attribute name="surfaceRefs" type="surfaceNameRefs"/>
<xs:attribute name="gradeModelRefs" type="gradeModelNameRefs"/>
<xs:attribute name="staStart" type="station"/>
<xs:attribute name="staEnd" type="station"/>
<xs:attribute name="desc" type="xs:string"/>
<xs:attribute name="roadTerrain" type="roadTerrainType"/>
<xs:attribute name="state" type="stateType"/>
</xs:complexType>
</xs:element>
<xs:element name="Classification">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
<xs:attribute name="staStart" type="station"/>
<xs:attribute name="staEnd" type="station"/>
<xs:attribute name="functionalClass" type="functionalClassType"/>
</xs:complexType>
</xs:element>
<!-- Road design speed elements -->
<xs:element name="DesignSpeed">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
<xs:attribute name="staStart" type="station"/>
<xs:attribute name="staEnd" type="station"/>
<xs:attribute name="speed" type="speed"/>
</xs:complexType>
</xs:element>
<xs:element name="DesignSpeed85th">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
<xs:attribute name="staStart" type="station"/>
<xs:attribute name="staEnd" type="station"/>
<xs:attribute name="sideofRoad" type="sideofRoadType"/>
<xs:attribute name="speed" type="speed"/>
</xs:complexType>
</xs:element>
<xs:element name="Speeds">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="DesignSpeed" maxOccurs="unbounded"/>
<xs:element ref="DesignSpeed85th" maxOccurs="unbounded"/>
<xs:element ref="PostedSpeed" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
</xs:complexType>
</xs:element>
<!-- Road Traffic Volume elements -->
<xs:element name="DailyTrafficVolume">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
<xs:attribute name="staStart" type="station"/>
<xs:attribute name="staEnd" type="station"/>
<xs:attribute name="ADT" type="xs:double"/>
<xs:attribute name="year" type="xs:date"/>
<xs:attribute name="escFactor" type="xs:double"/>
<!-- ADT, the average daily traffic for the specified year. This item specifies the average daily traffic for the specified year. No value needs to be specified for this item. The unit of measure for this item is vehicles/day. -->
<!-- escFactor is the subsequent year annual traffic volume escalation factor. This item specifies the annual percent increase (or decrease) in traffic volume for subsequent traffic volume years. No value needs to be specified for this item. The unit of measure for this item is percent %. -->
</xs:complexType>
</xs:element>
<xs:element name="DesignHour">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
<xs:attribute name="staStart" type="station"/>
<xs:attribute name="staEnd" type="station"/>
<xs:attribute name="volume" type="xs:double"/>
</xs:complexType>
<!-- Design Hour Volume - This item is the design hourly volume (DHV). The 30th highest volume of the year should be used as the DHV, which can be approximated as 15 percent of the average daily traffic (ADT). On two-lane rural highways, the DHV is the total traffic in both directions of travel. The unit of measure for this item is vehicles/hour. -->
</xs:element>
<xs:element name="PeakHour">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
<xs:attribute name="staStart" type="station"/>
<xs:attribute name="staEnd" type="station"/>
<xs:attribute name="sideofRoad" type="sideofRoadType"/>
<xs:attribute name="volume" type="xs:double"/>
</xs:complexType>
<!-- Peak Hour Volume - This item is the peak hour volume (PHV). The 30th highest volume of the year should be used as the PHV, which can be approximated as 15 percent of the average daily traffic (ADT). On two-lane rural highways, the DHV is the total traffic in both directions of travel. The unit of measure for this item is vehicles/hour. -->
</xs:element>
<xs:element name="TrafficVolume">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element ref="DailyTrafficVolume"/>
<xs:element ref="DesignHour"/>
<xs:element ref="PeakHour"/>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
</xs:complexType>
</xs:element>
<xs:annotation>
<xs:documentation>BeginRunoutSta (NORMAL CROWN) - Entry Curve Beginning Runout Location - Unit of measure: STATION. Entry Curve Beginning Runout Location - This item is the station of entry curve beginning of runout. This item specifies the location for the entry curve of the start of tangent runout (location Entry A).
</xs:documentation>
</xs:annotation>
<xs:element name="BeginRunoutSta" type="station" nillable="true"/>
<xs:annotation>
<xs:documentation>BeginRunoffSta (HALF CROWN) - Entry Curve Beginning Runoff Location - Unit of measure: STATION. Entry Curve Beginning Runoff Location - This item is the station of entry curve beginning of runoff location. This item specifies the location for the entry curve of the end of tangent runout and the start of runoff (location Entry B).
</xs:documentation>
</xs:annotation>
<xs:element name="BeginRunoffSta" type="station" nillable="true"/>
<xs:annotation>
<xs:documentation>FullSuperSta - Full Superelevation Location - Unit of measure: STATION. Full Superelevation Location - This item is the station location at which full superelevation begins. This item specifies the location for the entry curve of the end of runout and the start of full superelevation (location Entry E)
</xs:documentation>
</xs:annotation>
<xs:element name="FullSuperSta" type="station"/>
<xs:annotation>
<xs:documentation>FullSuperelev - Full Superelevation - Unit of measure: PERCENT. Full Superelevation - This item is the full superelevation rate on horizontal curve. This item specifies the rate of full superelevation for the superelevation element. The unit of measure for this item is percent.
</xs:documentation>
</xs:annotation>
<xs:element name="FullSuperelev" type="slope"/>
<xs:annotation>
<xs:documentation>RunoffSta - Runoff Location - Exiting Curve - Unit of measure: STATION. Runoff Location - Exiting Curve - This item is the location (station) of start of curve exit runoff. This item specifies the location for the exit curve of the end of full superelevation and the start of runoff (location Exit E).
</xs:documentation>
</xs:annotation>
<xs:element name="RunoffSta" type="station" nillable="true"/>
<xs:annotation>
<xs:documentation>StartofRunoutSta (HALF CROWN) - Start of Tangent Runout - Exiting Curve - Unit of measure: STATION. Start of Tangent Runout - Exiting Curve - This item is the location of start of tangent runout when exiting curve. This item specifies the location for the exit curve of the end of runoff and the start of tangent runout (location Exit B).
</xs:documentation>
</xs:annotation>
<xs:element name="StartofRunoutSta" type="station" nillable="true"/>
<xs:annotation>
<xs:documentation>EndofRunoutSta (FULL CROWN) - Exiting End of Tangent Runout - Unit of measure: STATION. Exiting End of Tangent Runout - This item is the location of end of tangent runout on exiting curve. This item specifies the location for the exit curve of the end of tangent runout (location Exit A).
</xs:documentation>
</xs:annotation>
<xs:element name="EndofRunoutSta" type="station" nillable="true"/>
<xs:annotation>
<xs:documentation>AdverseSE - Adverse SE - This item determines if superelevation is adverse. The enumeration values are: non-adverse and adverse.
</xs:documentation>
</xs:annotation>
<xs:element name="AdverseSE" type="adverseSEType"/>
<xs:annotation>
<xs:documentation>Superelevation - The superelevation rate should be steep enough to provide adequate drainage of the roadway surface, but not so steep as to cause vehicles to slide down the cross slope. To prevent vehicles from leaving the roadway as they travel around curve, curves are banked, or superelevated. One edge of the pavement is constructed higher than the other edge, so that the road surface slopes toward the inside of the curve. Superelevation is expressed as a decimal value or as a percentage, and is the amount of elevation difference per unit of horizontal unit of roadway width. A 6 meter wide road with a difference in elevation between pavement edges of 0.3 m has a superelevation of 0.05, or 5%.
</xs:documentation>
</xs:annotation>
<xs:element name="Superelevation">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element ref="BeginRunoutSta" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="BeginRunoffSta" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="FullSuperSta" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="FullSuperelev" maxOccurs="unbounded"/>
<xs:element ref="RunoffSta" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="StartofRunoutSta" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="EndofRunoutSta" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="AdverseSE" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
<xs:attribute name="staStart" type="station"/>
<xs:attribute name="staEnd" type="station"/>
</xs:complexType>
</xs:element>
<!-- Pavement Type - This element determines the pavement type. Pavements are categorized as high, intermediate, and low. High-type pavements are smoother and more stable than lower types and have good skid resistance, which is important for braking and turning maneuvers. These qualities withstand heavy traffic volumes and all weather. Intermediate-type pavements also retain their good skid resistance and smooth riding properties in all weather, but they are designed for lighter traffic loads and volumes. Low-type pavements can be surface-treated earth or other stabilized materials, or loose aggregate. Low-type surfaces do not hold their shape or drain as well as higher types, and they tend to ravel at the edges, which can affect steering. The enumeration values are: high-type, intermediate-type and low-type. -->
<!-- Road Lane elements -->
<xs:element name="Lanes">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="ThruLane" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="PassingLane" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="TurnLane" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="TwoWayLeftTurnLane" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="ClimbLane" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="OffsetLane" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="WideningLane" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
</xs:complexType>
</xs:element>
<xs:element name="ThruLane">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
<xs:attribute name="staStart" type="station"/>
<xs:attribute name="staEnd" type="station"/>
<xs:attribute name="width" type="xs:double"/>
<xs:attribute name="sideofRoad" type="sideofRoadType"/>
</xs:complexType>
</xs:element>
<xs:element name="PassingLane">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
<xs:attribute name="staStart" type="station"/>
<xs:attribute name="staEnd" type="station"/>
<xs:attribute name="beginFullWidthSta" type="station"/>
<xs:attribute name="endFullWidthSta" type="station"/>
<xs:attribute name="width" type="xs:double"/>
<xs:attribute name="sideofRoad" type="sideofRoadType"/>
</xs:complexType>
</xs:element>
<xs:element name="TurnLane">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
<xs:attribute name="staStart" type="station"/>
<xs:attribute name="staEnd" type="station"/>
<xs:attribute name="beginFullWidthSta" type="station"/>
<xs:attribute name="width" type="xs:double"/>
<xs:attribute name="sideofRoad" type="sideofRoadType"/>
<xs:attribute name="type" type="turnLaneType"/>
<xs:attribute name="taperType" type="laneTaperType"/>
<xs:attribute name="taperTangentLength" type="xs:double"/>
</xs:complexType>
</xs:element>
<xs:element name="TwoWayLeftTurnLane">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
<xs:attribute name="staStart" type="station"/>
<xs:attribute name="staEnd" type="station"/>
<xs:attribute name="beginFullWidthSta" type="station"/>
<xs:attribute name="endFullWidthSta" type="station"/>
<xs:attribute name="startOffset" type="offsetDistance"/>
<xs:attribute name="endOffset" type="offsetDistance"/>
<xs:attribute name="width" type="xs:double"/>
<xs:attribute name="sideofRoad" type="sideofRoadType"/>
</xs:complexType>
<!--
* Start Centerline Offset - Unit of measure: SHORT_DIST. Start Centerline Offset - This item is the starting lateral offset of the TWLTL relative to the roadway centerline. This item specifies the lateral offset of the start of the two-way left turn lane from the centerline of the roadway. A poistive value represents an offset to the right side of the road (relative to the direction of increasing stations) and a negative value represent represents an offset to the left side of the road. The unit of measure for this item is meters (feet).
* Begin Full Width - Unit of measure: STATION. Begin Full Width - This item is the station location at which full lane width begins. It specifies the station at which the initial taper ends and the full width begins.
Lane Width - Unit of measure: SHORT_DIST. Lane Width - This item is the width of lane. The unit of measure for this item is meters (feet).
* End Full Width - Unit of measure: STATION. End Full Width - This item is the station location at which final taper begins. This item specifies the station at which the full width ends and the final taper begins.
* End Centerline Offset - Unit of measure: SHORT_DIST. End Centerline Offset - This item is the ending lateral offset of the TWLTL relative to the roadway centerline. This item specifies the lateral offset of the end of the two-way left turn lane from the centerline of the roadway. A poistive value represents an offset to the right side of the road (relative to the direction of increasing stations) and a negative value represent represents an offset to the left side of the road. The unit of measure for this item is meters (feet). -->
</xs:element>
<xs:element name="ClimbLane">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
<xs:attribute name="staStart" type="station"/>
<xs:attribute name="staEnd" type="station"/>
<xs:attribute name="beginFullWidthSta" type="station"/>
<xs:attribute name="endFullWidthSta" type="station"/>
<xs:attribute name="width" type="xs:double"/>
<xs:attribute name="sideofRoad" type="sideofRoadType"/>
</xs:complexType>
</xs:element>
<xs:element name="OffsetLane">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
<xs:attribute name="staStart" type="station"/>
<xs:attribute name="staEnd" type="station"/>
<xs:attribute name="beginFullWidthSta" type="station"/>
<xs:attribute name="endFullWidthSta" type="station"/>
<xs:attribute name="fullOffset" type="offsetDistance"/>
<xs:attribute name="width" type="xs:double"/>
<xs:attribute name="sideofRoad" type="sideofRoadType"/>
</xs:complexType>
</xs:element>
<xs:element name="WideningLane">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
<xs:attribute name="staStart" type="station"/>
<xs:attribute name="staEnd" type="station"/>
<xs:attribute name="beginFullWidthSta" type="station"/>
<xs:attribute name="endFullWidthSta" type="station"/>
<xs:attribute name="offset" type="offsetDistance"/>
<xs:attribute name="widening" type="xs:double"/>
<xs:attribute name="width" type="xs:double"/>
<xs:attribute name="sideofRoad" type="sideofRoadType"/>
</xs:complexType>
</xs:element>
<!-- Roadside elements -->
<xs:element name="Roadside">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="ObstructionOffset" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="BikeFacilities" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="RoadSign" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="DrivewayDensity" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="HazardRating" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="Ditch" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
</xs:complexType>
</xs:element>
<xs:element name="Ditch">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
<xs:attribute name="staStart" type="station" use="required"/>
<xs:attribute name="staEnd" type="station" use="required"/>
<xs:attribute name="bottomWidth" type="xs:double" use="required"/>
<xs:attribute name="bottomShape" type="ditchBottomShape"/>
</xs:complexType>
</xs:element>
<xs:element name="ObstructionOffset">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
<xs:attribute name="staStart" type="station"/>
<xs:attribute name="staEnd" type="station"/>
<xs:attribute name="offset" type="offsetDistance"/>
<xs:attribute name="sideofRoad" type="sideofRoadType"/>
</xs:complexType>
</xs:element>
<xs:element name="BikeFacilities">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
<xs:attribute name="staStart" type="station"/>
<xs:attribute name="staEnd" type="station"/>
<xs:attribute name="width" type="xs:double"/>
<xs:attribute name="sideofRoad" type="sideofRoadType"/>
</xs:complexType>
</xs:element>
<xs:element name="RoadSign">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
<xs:attribute name="MUTCDCode" type="xs:string"/>
<xs:attribute name="station" type="station"/>
<xs:attribute name="offset" type="offsetDistance"/>
<xs:attribute name="sideofRoad" type="sideofRoadType"/>
<xs:attribute name="type" type="roadSignType"/>
<xs:attribute name="mountHeight" type="xs:double"/>
<xs:attribute name="width" type="xs:double"/>
<xs:attribute name="height" type="xs:double"/>
</xs:complexType>
</xs:element>
<xs:element name="DrivewayDensity">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
<xs:attribute name="staStart" type="station"/>
<xs:attribute name="staEnd" type="station"/>
<xs:attribute name="density" type="xs:int"/>
<!-- Driveway Density - Unit of measure: integer. The driveway density for both sides of the roadway combined. The unit of measure for this item is driveways/kilometer (driveways/mile). -->
</xs:complexType>
</xs:element>
<xs:element name="HazardRating">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
<xs:attribute name="staStart" type="station"/>
<xs:attribute name="staEnd" type="station"/>
<xs:attribute name="rating" type="xs:int"/>
<!-- Unit of measure: INT. Roadside Hazard Rating - The roadside hazard rating for both sides of the road. The enumeration values are: 1, 2, 3, 4, 5, 6 and 7. -->
</xs:complexType>
</xs:element>
<!-- Intersection elements -->
<xs:element name="Intersections">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element ref="Intersection" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
</xs:complexType>
</xs:element>
<xs:element name="Intersection">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="TrafficControl" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="Timing" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="Volume" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="TurnSpeed" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="TurnRestriction" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="Curb" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="Corner" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
<xs:attribute name="roadwayRef" type="roadwayNameRef"/>
<xs:attribute name="roadwayPI" type="station"/>
<xs:attribute name="intersectingRoadwayRef" type="roadwayNameRef"/>
<xs:attribute name="intersectRoadwayPI" type="station"/>
<xs:attribute name="contructionType" type="intersectionConstructionType"/>
</xs:complexType>
</xs:element>
<xs:element name="TrafficControl">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
<xs:attribute name="station" type="station"/>
<xs:attribute name="signalPeriod" type="xs:double"/>
<xs:attribute name="controlPosition" type="trafficControlPosition"/>
<xs:attribute name="controlType" type="trafficControlType"/>
</xs:complexType>
</xs:element>
<xs:element name="Timing">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
<xs:attribute name="station" type="station"/>
<xs:attribute name="legNumber" type="xs:int"/>
<xs:attribute name="protectedTurnPercent" type="xs:double"/>
<xs:attribute name="unprotectedTurnPercent" type="xs:double"/>
</xs:complexType>
</xs:element>
<xs:element name="Volume">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
<xs:attribute name="station" type="station"/>
<xs:attribute name="legNumber" type="xs:int"/>
<xs:attribute name="turnPercent" type="xs:double"/>
<xs:attribute name="percentTrucks" type="xs:double"/>
</xs:complexType>
</xs:element>
<xs:element name="TurnSpeed">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
<xs:attribute name="station" type="station"/>
<xs:attribute name="legNumber" type="xs:int"/>
<xs:attribute name="speed" type="xs:double"/>
</xs:complexType>
</xs:element>
<xs:element name="TurnRestriction">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
<xs:attribute name="station" type="station"/>
<xs:attribute name="legNumber" type="xs:int"/>
<xs:attribute name="type" type="trafficTurnRestriction"/>
</xs:complexType>
</xs:element>
<xs:element name="Curb">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
<xs:attribute name="staStart" type="station"/>
<xs:attribute name="staEnd" type="station"/>
<xs:attribute name="sideofRoad" type="sideofRoadType"/>
<xs:attribute name="type" type="curbType"/>
</xs:complexType>
</xs:element>
<xs:element name="Corner">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
<xs:attribute name="staStart" type="station"/>
<xs:attribute name="staEnd" type="station"/>
<xs:attribute name="type" type="cornerType"/>
</xs:complexType>
</xs:element>
<!-- Crash data and other misc data -->
<!--
* Year - Unit of measure: YEAR. Year - This is the year associated with the date of the crash. Note that the day and month are not required.
* Severity - Severity - This item is the severity level of the crash. The enumeration values are: Fatal or nonfatal injury and Propery damage only.
* Location(1) - Unit of measure: STATION. Location(1) - This item is the location (station) of the crash, or the start station of a range of locations.
* Location(2) - Unit of measure: STATION. Location(2) - This item is the end location (station) of a range for the location of the crash. No value needs to be specified for this item.
* Relation To Intersection - Relation To Intersection - This item is the relationship of a crash to an intersection. This item specifies the relationship of the crash to an intersection. If the value of this item is specified as Intersection-related, the Intersection Location data item must be specified. The enumeration values are: Unknown, Non-intersection-related and Intersection-related.
* Intersection Location - Unit of measure: STATION. Intersection Location - This item is the location of the related intersection. This item specifies the location (station) of the intersection related to the crash. This item must be specified in the intersection relationship is specified as Intersection-related. No value needs to be specified for this item.
-->
<xs:element name="CrashData">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element ref="CrashHistory" maxOccurs="unbounded"/>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
</xs:complexType>
</xs:element>
<xs:element name="CrashHistory">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
<xs:attribute name="year" type="xs:date"/>
<xs:attribute name="location-1" type="station"/>
<xs:attribute name="location-2" type="station"/>
<xs:attribute name="severity" type="crashSeverityType"/>
<xs:attribute name="intersectionRelation" type="crashIntersectionRelation"/>
<xs:attribute name="intersectionLocation" type="station"/>
</xs:complexType>
</xs:element>
<xs:element name="PostedSpeed">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
<xs:attribute name="staStart" type="station"/>
<xs:attribute name="staEnd" type="station"/>
<xs:attribute name="sideofRoad" type="sideofRoadType"/>
<xs:attribute name="speedLimit" type="speed"/>
</xs:complexType>
</xs:element>
<xs:element name="NoPassingZone">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
<xs:attribute name="staStart" type="station"/>
<xs:attribute name="staEnd" type="station"/>
<xs:attribute name="sideofRoad" type="sideofRoadType"/>
</xs:complexType>
</xs:element>
<xs:element name="DecisionSightDistance">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
<xs:attribute name="station" type="station"/>
<xs:attribute name="maneuver" type="maneuverType"/>
</xs:complexType>
</xs:element>
<xs:element name="BridgeElement">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
<xs:attribute name="staStart" type="station"/>
<xs:attribute name="staEnd" type="station"/>
<xs:attribute name="width" type="xs:double"/>
<xs:attribute name="projectType" type="bridgeProjectType"/>
</xs:complexType>
</xs:element>
<xs:element name="AlignPI">
<xs:annotation>
<xs:documentation>A Single Alignment PI Definition</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:all>
<xs:element name="Station" type="xs:double">
<xs:annotation>
<xs:documentation>Station Name</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element ref="PI"/>
<xs:element name="InSpiral" minOccurs="0">
<xs:annotation>
<xs:documentation>In Spiral Definition</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:all>
<xs:element ref="Spiral"/>
</xs:all>
</xs:complexType>
</xs:element>
<xs:element name="Curve1" minOccurs="0">
<xs:annotation>
<xs:documentation>First Curve Definition</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:all>
<xs:element ref="Curve"/>
</xs:all>
</xs:complexType>
</xs:element>
<xs:element name="ConnSpiral" minOccurs="0">
<xs:annotation>
<xs:documentation>Connecting Spiral Definition</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:all>
<xs:element ref="Spiral"/>
</xs:all>
</xs:complexType>
</xs:element>
<xs:element name="Curve2" minOccurs="0">
<xs:annotation>
<xs:documentation>Second Curve Definition</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:all>
<xs:element ref="Curve"/>
</xs:all>
</xs:complexType>
</xs:element>
<xs:element name="OutSpiral" minOccurs="0">
<xs:annotation>
<xs:documentation>Out Spiral Definition</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:all>
<xs:element ref="Spiral"/>
</xs:all>
</xs:complexType>
</xs:element>
</xs:all>
</xs:complexType>
</xs:element>
<xs:element name="AlignPIs">
<xs:annotation>
<xs:documentation>A sequential list of Alignment PI Definitions</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence minOccurs="2" maxOccurs="unbounded">
<xs:element ref="AlignPI"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Cant">
<xs:annotation>
<xs:documentation>The "Cant" element will typically represent a proposed railway cant / superelevation alignment.</xs:documentation>
<xs:documentation>It is defined by a sequential series of any combination of the cant stations and speed-only stations.
The “name”, “desc” and “state” attributes are typical LandXML “alignment” attributes.
The “equilibriumConstant” is a unitless optional double that is used as the equilibrium constant in the cant equilibrium equation (cant = constant * speed * speed / radius).
The “appliedCantConstant” is a unitless optional double that is used as the applied cant constant in the cant equilibrium equation (cant = constant * speed * speed / radius).
The “gauge” is a required double that is the rail to rail distance. This value is expressed in meters or feet depending upon the units.
The “rotationPoint” is an optional string that defines the rotation point. Valid values are “insideRail”, “outsideRail”, “center”, “leftRail” and “rightRail”.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:choice maxOccurs="unbounded">
<xs:element ref="CantStation" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="SpeedStation" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="name" type="xs:string" use="required"/>
<xs:attribute name="desc" type="xs:string" use="optional"/>
<xs:attribute name="state" type="stateType" use="optional"/>
<xs:attribute name="equilibriumConstant" type="xs:double" use="optional"/>
<xs:attribute name="appliedCantConstant" type="xs:double" use="optional"/>
<xs:attribute name="gauge" type="xs:double" use="required"/>
<xs:attribute name="rotationPoint" type="xs:string" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="CantStation">
<xs:annotation>
<xs:documentation>A cant station.
The “station” is a required double that is internal station value.
The “equilibriumCant” is an optional double that is the equilibrium cant. This value is expressed in millimeters or inches depending upon the units
The “appliedCant” is a required double that is the applied cant. This value is expressed in millimeters or inches depending upon the units.
The “deficiencyCant” is an optional double that is the cant deficiency. This value is expressed in millimeters or inches depending upon the units.
The “cantExcess” is an optional double that is the cant excess. This value is expressed in millimeters or inches upon the units.
The “rateOfChangeOfAppliedCantOverTime” is an optional double that is the rate of change of applied cant as a function of time. This value is in millimeters /seconds or inches/seconds depending upon the units.
The “rateOfChangeOfAppliedCantOverLength” is an optional double that is the rate of change of applied cant as a function of length. This value is in millimeters /meters or inches/feet depending upon the units.
The “rateOfChangeOfCantDeficiencyOverTime” is an optional double that is the rate of change of cant deficiency as a function of time. This value is in millimeters /seconds or inches/seconds depending upon the units.
The “cantGradient” is an optional double that is the cant gradient. This value is unitless.
The “speed” is an optional double that is the design speed. This value is in kmph or mph depending upon the units.
The “transitionType” is an optional enumerated type.
The “curvature” is a required enumerated type.
The “adverse” is an optional Boolean that indicates whether the cant is adverse.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="station" type="xs:double" use="required"/>
<xs:attribute name="equilibriumCant" type="xs:double" use="optional"/>
<xs:attribute name="appliedCant" type="xs:double" use="required"/>
<xs:attribute name="cantDeficiency" type="xs:double" use="optional"/>
<xs:attribute name="cantExcess" type="xs:double" use="optional"/>
<xs:attribute name="rateOfChangeOfAppliedCantOverTime" type="xs:double" use="optional"/>
<xs:attribute name="rateOfChangeOfAppliedCantOverLength" type="xs:double" use="optional"/>
<xs:attribute name="rateOfChangeOfCantDeficiencyOverTime" type="xs:double" use="optional"/>
<xs:attribute name="cantGradient" type="xs:double" use="optional"/>
<xs:attribute name="speed" type="xs:double" use="optional"/>
<xs:attribute name="transitionType" type="spiralType" use="optional"/>
<xs:attribute name="curvature" type="clockwise" use="required"/>
<xs:attribute name="adverse" type="xs:boolean" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="SpeedStation">
<xs:annotation>
<xs:documentation>A cant speed-only station.
The “station” is a required double that is internal station value.
The “speed” is an optional double that is the design speed. This value is in kmph or mph depending upon the units.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="station" type="xs:double" use="required"/>
<xs:attribute name="speed" type="xs:double" use="required"/>
</xs:complexType>
</xs:element>
</xs:schema>
|