﻿<?xml version="1.0" encoding="utf-8"?>
<definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:e="http://www.esri.com/schemas/ArcGIS/9.3" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://www.esri.com/schemas/ArcGIS/9.3">
  <documentation>The ESRI Geometry Server.</documentation>
  <types>
    <xs:schema targetNamespace="http://www.esri.com/schemas/ArcGIS/9.3" xmlns="http://www.esri.com/schemas/ArcGIS/9.3">
      <xs:element name="Project">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="InSpatialReference" type="SpatialReference" />
            <xs:element name="OutSpatialReference" type="SpatialReference" />
            <xs:element name="TransformForward" type="xs:boolean" />
            <xs:element name="Transformation" type="GeoTransformation" />
            <xs:element name="Extent" type="Envelope" />
            <xs:element name="InGeometryArray" type="ArrayOfGeometry" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="ProjectResponse">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Result" type="ArrayOfGeometry" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="Buffer">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="InSpatialReference" type="SpatialReference" />
            <xs:element name="BufferSpatialReference" type="SpatialReference" />
            <xs:element name="OutSpatialReference" type="SpatialReference" />
            <xs:element name="Distances" type="ArrayOfDouble" />
            <xs:element name="Unit" type="Unit" />
            <xs:element name="UnionResults" type="xs:boolean" />
            <xs:element name="InGeometryArray" type="ArrayOfGeometry" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="BufferResponse">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Result" type="ArrayOfGeometry" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <!--
			<xs:element name="Union">
				<xs:complexType>
					<xs:sequence>
					  <xs:element name="SpatialReference"  type="SpatialReference"/>
						<xs:element name="InGeometryArray"   type="ArrayOfGeometry"/>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="UnionResponse">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="Result" type="Geometry"/>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
-->
      <xs:element name="Relation">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SpatialReference" type="SpatialReference" />
            <xs:element name="InGeometryArray1" type="ArrayOfGeometry" />
            <xs:element name="InGeometryArray2" type="ArrayOfGeometry" />
            <xs:element name="RelationName" type="esriGeometryRelationEnum" />
            <xs:element name="RelationParameter" type="xs:string" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="RelationResponse">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Result" type="ArrayOfRelationResult" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="Densify">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SpatialReference" type="SpatialReference" />
            <xs:element name="InGeometryArray" type="ArrayOfGeometry" />
            <xs:element name="MaxSegmentLength" type="xs:double" />
            <xs:element name="UseDeviationDensification" type="xs:boolean" />
            <xs:element name="DensificationParameter" type="xs:double" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="DensifyResponse">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Result" type="ArrayOfGeometry" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="Simplify">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SpatialReference" type="SpatialReference" />
            <xs:element name="InGeometryArray" type="ArrayOfGeometry" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SimplifyResponse">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Result" type="ArrayOfGeometry" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="FindSRByWKID">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="authority" type="xs:string" />
            <xs:element name="WKID" type="xs:int" />
            <xs:element name="WKID_Z" type="xs:int" />
            <xs:element name="DefaultXYResolution" type="xs:boolean" />
            <xs:element name="DefaultXYTolerance" type="xs:boolean" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="FindSRByWKIDResponse">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Result" type="SpatialReference" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="FindSRByWKT">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="WKT" type="xs:string" />
            <xs:element name="WKT_Z" type="xs:string" />
            <xs:element name="DefaultXYResolution" type="xs:boolean" />
            <xs:element name="DefaultXYTolerance" type="xs:boolean" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="FindSRByWKTResponse">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Result" type="SpatialReference" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="FindUnitsByWKID">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="authority" type="xs:string" />
            <xs:element name="WKID" type="xs:int" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="FindUnitsByWKIDResponse">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Result" type="Unit" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="FindUnitsByWKT">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="WKT" type="xs:string" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="FindUnitsByWKTResponse">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Result" type="Unit" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="GetAreasAndLengths">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SpatialReference" type="SpatialReference" />
            <xs:element name="InPolygonArray" type="ArrayOfPolygon" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="GetAreasAndLengthsResponse">
        <xs:complexType>
          <xs:sequence>
            <!-- see http://support.microsoft.com/kb/322624 -->
            <xs:element name="Areas" type="ArrayOfDouble" />
            <xs:element name="Lengths" type="ArrayOfDouble" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="GetLengths">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SpatialReference" type="SpatialReference" />
            <xs:element name="InPolylineArray" type="ArrayOfPolyline" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="GetLengthsResponse">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Result" type="ArrayOfDouble" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="GetLabelPoints">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SpatialReference" type="SpatialReference" />
            <xs:element name="InPolygonArray" type="ArrayOfPolygon" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="GetLabelPointsResponse">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Result" type="ArrayOfPoint" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:complexType name="ArrayOfGeometry">
        <xs:annotation>
          <xs:documentation />
        </xs:annotation>
        <xs:sequence>
          <xs:element minOccurs="0" maxOccurs="unbounded" name="Geometry" type="Geometry" />
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="ArrayOfRelationResult">
        <xs:annotation>
          <xs:documentation />
        </xs:annotation>
        <xs:sequence>
          <xs:element minOccurs="0" maxOccurs="unbounded" name="RelationResult" type="RelationResult" />
        </xs:sequence>
      </xs:complexType>
      <xs:simpleType name="esriGeometryRelationEnum">
        <xs:annotation>
          <xs:documentation />
        </xs:annotation>
        <xs:restriction base="xs:string">
          <xs:enumeration value="esriGeometryRelationDisjoint" />
          <xs:enumeration value="esriGeometryRelationIntersection" />
          <xs:enumeration value="esriGeometryRelationInteriorIntersection" />
          <xs:enumeration value="esriGeometryRelationIn" />
          <xs:enumeration value="esriGeometryRelationWithin" />
          <xs:enumeration value="esriGeometryRelationPointTouch" />
          <xs:enumeration value="esriGeometryRelationLineTouch" />
          <xs:enumeration value="esriGeometryRelationTouch" />
          <xs:enumeration value="esriGeometryRelationLineCoincidence" />
          <xs:enumeration value="esriGeometryRelationCross" />
          <xs:enumeration value="esriGeometryRelationOverlap" />
          <xs:enumeration value="esriGeometryRelationRelation" />
        </xs:restriction>
      </xs:simpleType>
      <xs:complexType name="RelationResult">
        <xs:annotation>
          <xs:documentation>XML shim class for esriRelationPair structure.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="leftIndex" type="xs:int" />
          <xs:element name="rightIndex" type="xs:int" />
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="GeoTransformation">
        <xs:annotation>
          <xs:documentation />
        </xs:annotation>
        <xs:sequence>
          <xs:element minOccurs="0" name="WKT" type="xs:string" />
          <xs:element minOccurs="0" name="WKID" type="xs:int" />
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="Unit" abstract="true">
        <xs:annotation>
          <xs:documentation />
        </xs:annotation>
        <xs:sequence>
          <xs:element minOccurs="0" name="WKT" type="xs:string" />
          <xs:element minOccurs="0" name="WKID" type="xs:int" />
          <xs:element name="StandardUnitsPerUnit" type="xs:double" />
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="LinearUnit">
        <xs:annotation>
          <xs:documentation>Creates a linear unit of measure.</xs:documentation>
        </xs:annotation>
        <xs:complexContent mixed="false">
          <xs:extension base="Unit" />
        </xs:complexContent>
      </xs:complexType>
      <xs:complexType name="AngularUnit">
        <xs:annotation>
          <xs:documentation>Creates a angular unit of measure.</xs:documentation>
        </xs:annotation>
        <xs:complexContent mixed="false">
          <xs:extension base="Unit" />
        </xs:complexContent>
      </xs:complexType>
      <xs:complexType name="SpatialReference" abstract="true">
        <xs:annotation>
          <xs:documentation />
        </xs:annotation>
        <xs:sequence>
          <xs:element minOccurs="0" name="WKT" type="xs:string" />
          <xs:element minOccurs="0" name="XOrigin" type="xs:double" />
          <xs:element minOccurs="0" name="YOrigin" type="xs:double" />
          <xs:element minOccurs="0" name="XYScale" type="xs:double" />
          <xs:element minOccurs="0" name="ZOrigin" type="xs:double" />
          <xs:element minOccurs="0" name="ZScale" type="xs:double" />
          <xs:element minOccurs="0" name="MOrigin" type="xs:double" />
          <xs:element minOccurs="0" name="MScale" type="xs:double" />
          <xs:element minOccurs="0" name="XYTolerance" type="xs:double">
            <xs:annotation>
              <xs:documentation>The xy tolerance used to control point coalescing in the X and Y dimensions.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element minOccurs="0" name="ZTolerance" type="xs:double">
            <xs:annotation>
              <xs:documentation>The tolerance used to control point coalescing strictly along the Z axis.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element minOccurs="0" name="MTolerance" type="xs:double">
            <xs:annotation>
              <xs:documentation>The tolerance used to determine equality of M values.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element minOccurs="0" name="HighPrecision" type="xs:boolean" />
          <xs:element minOccurs="0" name="LeftLongitude" type="xs:double" />
          <xs:element minOccurs="0" name="WKID" type="xs:int" />
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="ProjectedCoordinateSystem">
        <xs:annotation>
          <xs:documentation>Creates a projected coordinate system.</xs:documentation>
        </xs:annotation>
        <xs:complexContent mixed="false">
          <xs:extension base="SpatialReference" />
        </xs:complexContent>
      </xs:complexType>
      <xs:complexType name="GeographicCoordinateSystem">
        <xs:annotation>
          <xs:documentation>Creates a geographic coordinate system.</xs:documentation>
        </xs:annotation>
        <xs:complexContent mixed="false">
          <xs:extension base="SpatialReference" />
        </xs:complexContent>
      </xs:complexType>
      <xs:complexType name="UnknownCoordinateSystem">
        <xs:annotation>
          <xs:documentation>Creates an unknown coordinate system.</xs:documentation>
        </xs:annotation>
        <xs:complexContent mixed="false">
          <xs:extension base="SpatialReference" />
        </xs:complexContent>
      </xs:complexType>
      <xs:complexType name="Geometry">
        <xs:annotation>
          <xs:documentation />
        </xs:annotation>
      </xs:complexType>
      <xs:complexType name="Curve" abstract="true">
        <xs:annotation>
          <xs:documentation />
        </xs:annotation>
        <xs:complexContent mixed="false">
          <xs:extension base="Geometry" />
        </xs:complexContent>
      </xs:complexType>
      <xs:complexType name="Segment" abstract="true">
        <xs:annotation>
          <xs:documentation />
        </xs:annotation>
        <xs:complexContent mixed="false">
          <xs:extension base="Curve">
            <xs:sequence>
              <xs:element name="FromPoint" type="Point" />
              <xs:element name="ToPoint" type="Point" />
            </xs:sequence>
          </xs:extension>
        </xs:complexContent>
      </xs:complexType>
      <xs:complexType name="Polycurve" abstract="true">
        <xs:annotation>
          <xs:documentation />
        </xs:annotation>
        <xs:complexContent mixed="false">
          <xs:extension base="Curve" />
        </xs:complexContent>
      </xs:complexType>
      <xs:complexType name="Envelope" abstract="true">
        <xs:annotation>
          <xs:documentation>A rectangle with sides parallel to a coordinate system defining the extent of another geometry; optionally has min and max measure, height and ID attributes.</xs:documentation>
        </xs:annotation>
        <xs:complexContent mixed="false">
          <xs:extension base="Geometry" />
        </xs:complexContent>
      </xs:complexType>
      <xs:complexType name="EnvelopeN">
        <xs:annotation>
          <xs:documentation>A rectangle with sides parallel to a coordinate system defining the extent of another geometry; optionally has min and max measure, height and ID attributes.</xs:documentation>
        </xs:annotation>
        <xs:complexContent mixed="false">
          <xs:extension base="Envelope">
            <xs:sequence>
              <xs:element name="XMin" type="xs:double">
                <xs:annotation>
                  <xs:documentation>The position of the left side.</xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="YMin" type="xs:double">
                <xs:annotation>
                  <xs:documentation>The position of the bottom.</xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="XMax" type="xs:double">
                <xs:annotation>
                  <xs:documentation>The position of the right side.</xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="YMax" type="xs:double">
                <xs:annotation>
                  <xs:documentation>The position of the top.</xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element minOccurs="0" name="ZMin" type="xs:double">
                <xs:annotation>
                  <xs:documentation>The minimum Z value in the area of the envelope.</xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element minOccurs="0" name="ZMax" type="xs:double">
                <xs:annotation>
                  <xs:documentation>The maximum Z value in the area of the envelope.</xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element minOccurs="0" name="MMin" type="xs:double">
                <xs:annotation>
                  <xs:documentation>The minimum measure value in the area of the envelope.</xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element minOccurs="0" name="MMax" type="xs:double">
                <xs:annotation>
                  <xs:documentation>The maximum measure value in the area of the envelope.</xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element minOccurs="0" name="SpatialReference" type="SpatialReference">
                <xs:annotation>
                  <xs:documentation>The spatial reference associated with this geometry.</xs:documentation>
                </xs:annotation>
              </xs:element>
            </xs:sequence>
          </xs:extension>
        </xs:complexContent>
      </xs:complexType>
      <xs:complexType name="EnvelopeB">
        <xs:annotation>
          <xs:documentation>A rectangle with sides parallel to a coordinate system defining the extent of another geometry; optionally has min and max measure, height and ID attributes.</xs:documentation>
        </xs:annotation>
        <xs:complexContent mixed="false">
          <xs:extension base="Envelope">
            <xs:sequence>
              <xs:element name="Bytes" type="xs:base64Binary" />
            </xs:sequence>
          </xs:extension>
        </xs:complexContent>
      </xs:complexType>
      <xs:complexType name="Point" abstract="true">
        <xs:annotation>
          <xs:documentation>A two dimensional point, optionally with measure, height, and ID attributes.</xs:documentation>
        </xs:annotation>
        <xs:complexContent mixed="false">
          <xs:extension base="Geometry" />
        </xs:complexContent>
      </xs:complexType>
      <xs:complexType name="PointN">
        <xs:annotation>
          <xs:documentation>A two dimensional point, optionally with measure, height, and ID attributes.</xs:documentation>
        </xs:annotation>
        <xs:complexContent mixed="false">
          <xs:extension base="Point">
            <xs:sequence>
              <xs:element name="X" type="xs:double">
                <xs:annotation>
                  <xs:documentation>The X coordinate.</xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="Y" type="xs:double">
                <xs:annotation>
                  <xs:documentation>The Y coordinate.</xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element minOccurs="0" name="M" type="xs:double">
                <xs:annotation>
                  <xs:documentation>The measure attribute.</xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element minOccurs="0" name="Z" type="xs:double">
                <xs:annotation>
                  <xs:documentation>The Z attribute.</xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element minOccurs="0" name="ID" type="xs:int">
                <xs:annotation>
                  <xs:documentation>The Point ID attribute.</xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element minOccurs="0" name="SpatialReference" type="SpatialReference">
                <xs:annotation>
                  <xs:documentation>The spatial reference associated with this geometry.</xs:documentation>
                </xs:annotation>
              </xs:element>
            </xs:sequence>
          </xs:extension>
        </xs:complexContent>
      </xs:complexType>
      <xs:complexType name="PointB">
        <xs:annotation>
          <xs:documentation>A two dimensional point, optionally with measure, height, and ID attributes.</xs:documentation>
        </xs:annotation>
        <xs:complexContent mixed="false">
          <xs:extension base="Point">
            <xs:sequence>
              <xs:element name="Bytes" type="xs:base64Binary" />
            </xs:sequence>
          </xs:extension>
        </xs:complexContent>
      </xs:complexType>
      <xs:complexType name="Multipoint" abstract="true">
        <xs:annotation>
          <xs:documentation>An ordered collection of points; optionally has measure, height and ID attributes.</xs:documentation>
        </xs:annotation>
        <xs:complexContent mixed="false">
          <xs:extension base="Geometry" />
        </xs:complexContent>
      </xs:complexType>
      <xs:complexType name="MultipointB">
        <xs:annotation>
          <xs:documentation>An ordered collection of points; optionally has measure, height and ID attributes.</xs:documentation>
        </xs:annotation>
        <xs:complexContent mixed="false">
          <xs:extension base="Multipoint">
            <xs:sequence>
              <xs:element name="Bytes" type="xs:base64Binary" />
            </xs:sequence>
          </xs:extension>
        </xs:complexContent>
      </xs:complexType>
      <xs:complexType name="MultipointN">
        <xs:annotation>
          <xs:documentation>An ordered collection of points; optionally has measure, height and ID attributes.</xs:documentation>
        </xs:annotation>
        <xs:complexContent mixed="false">
          <xs:extension base="Multipoint">
            <xs:sequence>
              <xs:element name="HasID" type="xs:boolean" />
              <xs:element name="HasZ" type="xs:boolean" />
              <xs:element name="HasM" type="xs:boolean" />
              <xs:element minOccurs="0" name="Extent" type="Envelope" />
              <xs:element minOccurs="0" name="PointArray" type="ArrayOfPoint" />
              <xs:element minOccurs="0" name="SpatialReference" type="SpatialReference">
                <xs:annotation>
                  <xs:documentation>The spatial reference associated with this geometry.</xs:documentation>
                </xs:annotation>
              </xs:element>
            </xs:sequence>
          </xs:extension>
        </xs:complexContent>
      </xs:complexType>
      <xs:complexType name="Line">
        <xs:annotation>
          <xs:documentation>XML shim class for Line.</xs:documentation>
        </xs:annotation>
        <xs:complexContent mixed="false">
          <xs:extension base="Segment" />
        </xs:complexContent>
      </xs:complexType>
      <xs:complexType name="EllipticArc">
        <xs:annotation>
          <xs:documentation>XML shim class for EllipticArc.</xs:documentation>
        </xs:annotation>
        <xs:complexContent mixed="false">
          <xs:extension base="Segment">
            <xs:sequence>
              <xs:element name="EllipseStd" type="xs:boolean" />
              <xs:element name="CenterPoint" type="Point" />
              <xs:element name="Rotation" type="xs:double" />
              <xs:element name="MinorMajorRatio" type="xs:double" />
              <xs:element name="IsCounterClockWise" type="xs:boolean" />
              <xs:element name="IsMinor" type="xs:boolean" />
            </xs:sequence>
          </xs:extension>
        </xs:complexContent>
      </xs:complexType>
      <xs:complexType name="CircularArc">
        <xs:annotation>
          <xs:documentation>XML shim class for CircularArc.</xs:documentation>
        </xs:annotation>
        <xs:complexContent mixed="false">
          <xs:extension base="Segment">
            <xs:sequence>
              <xs:element name="CenterPoint" type="Point" />
              <xs:element minOccurs="0" name="FromAngle" type="xs:double" />
              <xs:element minOccurs="0" name="ToAngle" type="xs:double" />
              <xs:element name="IsCounterClockwise" type="xs:boolean" />
              <xs:element name="IsMinor" type="xs:boolean" />
              <xs:element name="IsLine" type="xs:boolean" />
            </xs:sequence>
          </xs:extension>
        </xs:complexContent>
      </xs:complexType>
      <xs:complexType name="BezierCurve">
        <xs:annotation>
          <xs:documentation>XML shim class for BezierCurve.</xs:documentation>
        </xs:annotation>
        <xs:complexContent mixed="false">
          <xs:extension base="Segment">
            <xs:sequence>
              <xs:element name="Degree" type="xs:int" />
              <xs:element name="ControlPointArray" type="ArrayOfPoint" />
            </xs:sequence>
          </xs:extension>
        </xs:complexContent>
      </xs:complexType>
      <xs:complexType name="Path">
        <xs:annotation>
          <xs:documentation>A sequence of connected segments.</xs:documentation>
        </xs:annotation>
        <xs:complexContent mixed="false">
          <xs:extension base="Curve">
            <xs:sequence>
              <xs:element minOccurs="0" name="PointArray" type="ArrayOfPoint" />
              <xs:element minOccurs="0" name="SegmentArray" type="ArrayOfSegment" />
            </xs:sequence>
          </xs:extension>
        </xs:complexContent>
      </xs:complexType>
      <xs:complexType name="Ring">
        <xs:annotation>
          <xs:documentation>An area bounded by one, closed sequence of connected segments; optionally has measure, height and ID attributes at each vertex.</xs:documentation>
        </xs:annotation>
        <xs:complexContent mixed="false">
          <xs:extension base="Path" />
        </xs:complexContent>
      </xs:complexType>
      <xs:complexType name="Polygon" abstract="true">
        <xs:annotation>
          <xs:documentation>A collection of rings ordered by their containment relationship; optionally has measure, height and ID attributes.</xs:documentation>
        </xs:annotation>
        <xs:complexContent mixed="false">
          <xs:extension base="Polycurve" />
        </xs:complexContent>
      </xs:complexType>
      <xs:complexType name="PolygonN">
        <xs:annotation>
          <xs:documentation>A collection of rings ordered by their containment relationship; optionally has measure, height and ID attributes.</xs:documentation>
        </xs:annotation>
        <xs:complexContent mixed="false">
          <xs:extension base="Polygon">
            <xs:sequence>
              <xs:element name="HasID" type="xs:boolean" />
              <xs:element name="HasZ" type="xs:boolean" />
              <xs:element name="HasM" type="xs:boolean" />
              <xs:element minOccurs="0" name="Extent" type="Envelope" />
              <xs:element name="RingArray" type="ArrayOfRing" />
              <xs:element minOccurs="0" name="SpatialReference" type="SpatialReference">
                <xs:annotation>
                  <xs:documentation>The spatial reference associated with this geometry.</xs:documentation>
                </xs:annotation>
              </xs:element>
            </xs:sequence>
          </xs:extension>
        </xs:complexContent>
      </xs:complexType>
      <xs:complexType name="PolygonB">
        <xs:annotation>
          <xs:documentation>A collection of rings ordered by their containment relationship; optionally has measure, height and ID attributes.</xs:documentation>
        </xs:annotation>
        <xs:complexContent mixed="false">
          <xs:extension base="Polygon">
            <xs:sequence>
              <xs:element name="Bytes" type="xs:base64Binary" />
            </xs:sequence>
          </xs:extension>
        </xs:complexContent>
      </xs:complexType>
      <xs:complexType name="Polyline" abstract="true">
        <xs:annotation>
          <xs:documentation>An ordered collection of paths; optionally has measure, height and ID attributes.</xs:documentation>
        </xs:annotation>
        <xs:complexContent mixed="false">
          <xs:extension base="Polycurve" />
        </xs:complexContent>
      </xs:complexType>
      <xs:complexType name="PolylineN">
        <xs:annotation>
          <xs:documentation>An ordered collection of paths; optionally has measure, height and ID attributes.</xs:documentation>
        </xs:annotation>
        <xs:complexContent mixed="false">
          <xs:extension base="Polyline">
            <xs:sequence>
              <xs:element name="HasID" type="xs:boolean" />
              <xs:element name="HasZ" type="xs:boolean" />
              <xs:element name="HasM" type="xs:boolean" />
              <xs:element minOccurs="0" name="Extent" type="Envelope" />
              <xs:element name="PathArray" type="ArrayOfPath" />
              <xs:element minOccurs="0" name="SpatialReference" type="SpatialReference">
                <xs:annotation>
                  <xs:documentation>The spatial reference associated with this geometry.</xs:documentation>
                </xs:annotation>
              </xs:element>
            </xs:sequence>
          </xs:extension>
        </xs:complexContent>
      </xs:complexType>
      <xs:complexType name="PolylineB">
        <xs:annotation>
          <xs:documentation>An ordered collection of paths; optionally has measure, height and ID attributes.</xs:documentation>
        </xs:annotation>
        <xs:complexContent mixed="false">
          <xs:extension base="Polyline">
            <xs:sequence>
              <xs:element name="Bytes" type="xs:base64Binary" />
            </xs:sequence>
          </xs:extension>
        </xs:complexContent>
      </xs:complexType>
      <xs:complexType name="ArrayOfPoint">
        <xs:annotation>
          <xs:documentation />
        </xs:annotation>
        <xs:sequence>
          <xs:element minOccurs="0" maxOccurs="unbounded" name="Point" type="Point" />
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="ArrayOfPath">
        <xs:annotation>
          <xs:documentation />
        </xs:annotation>
        <xs:sequence>
          <xs:element minOccurs="0" maxOccurs="unbounded" name="Path" type="Path" />
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="ArrayOfRing">
        <xs:annotation>
          <xs:documentation />
        </xs:annotation>
        <xs:sequence>
          <xs:element minOccurs="0" maxOccurs="unbounded" name="Ring" type="Ring" />
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="ArrayOfSegment">
        <xs:annotation>
          <xs:documentation />
        </xs:annotation>
        <xs:sequence>
          <xs:element minOccurs="0" maxOccurs="unbounded" name="Segment" type="Segment" />
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="ArrayOfPolyline">
        <xs:annotation>
          <xs:documentation>A collection of Polyline objects.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element minOccurs="0" maxOccurs="unbounded" name="Polyline" type="Polyline" />
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="ArrayOfPolygon">
        <xs:annotation>
          <xs:documentation>A collection of Polygon objects.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element minOccurs="0" maxOccurs="unbounded" name="Polygon" type="Polygon" />
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="MultiPatch" abstract="true">
        <xs:annotation>
          <xs:documentation>A collection of surface patches.</xs:documentation>
        </xs:annotation>
        <xs:complexContent mixed="false">
          <xs:extension base="Geometry" />
        </xs:complexContent>
      </xs:complexType>
      <xs:complexType name="MultiPatchB">
        <xs:annotation>
          <xs:documentation>A collection of surface patches.</xs:documentation>
        </xs:annotation>
        <xs:complexContent mixed="false">
          <xs:extension base="MultiPatch">
            <xs:sequence>
              <xs:element name="Bytes" type="xs:base64Binary" />
            </xs:sequence>
          </xs:extension>
        </xs:complexContent>
      </xs:complexType>
      <xs:complexType name="MultiPatchN">
        <xs:annotation>
          <xs:documentation>A collection of surface patches.</xs:documentation>
        </xs:annotation>
        <xs:complexContent mixed="false">
          <xs:extension base="MultiPatch">
            <xs:sequence>
              <xs:element name="HasID" type="xs:boolean" />
              <xs:element name="HasZ" type="xs:boolean" />
              <xs:element name="HasM" type="xs:boolean" />
              <xs:element name="Extent" type="Envelope" />
              <xs:element name="SurfacePatchArray" type="ArrayOfSurfacePatch" />
            </xs:sequence>
          </xs:extension>
        </xs:complexContent>
      </xs:complexType>
      <xs:complexType name="ArrayOfSurfacePatch">
        <xs:annotation>
          <xs:documentation />
        </xs:annotation>
        <xs:sequence>
          <xs:element minOccurs="0" maxOccurs="unbounded" name="SurfacePatch" type="Geometry" />
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="TriangleFan">
        <xs:annotation>
          <xs:documentation>A continuous 3D fan of triangles, where each triangle after the first shares an edge with the preceding triangle, and all triangles share a common pivot point.</xs:documentation>
        </xs:annotation>
        <xs:complexContent mixed="false">
          <xs:extension base="Geometry">
            <xs:sequence>
              <xs:element minOccurs="0" name="PointArray" type="ArrayOfPoint" />
            </xs:sequence>
          </xs:extension>
        </xs:complexContent>
      </xs:complexType>
      <xs:complexType name="TriangleStrip">
        <xs:annotation>
          <xs:documentation>A continuous 3D strip of triangles, where each triangle after the first shares an edge with the preceding triangle.</xs:documentation>
        </xs:annotation>
        <xs:complexContent mixed="false">
          <xs:extension base="Geometry">
            <xs:sequence>
              <xs:element minOccurs="0" name="PointArray" type="ArrayOfPoint" />
            </xs:sequence>
          </xs:extension>
        </xs:complexContent>
      </xs:complexType>
      <xs:complexType name="ArrayOfDouble">
        <xs:annotation>
          <xs:documentation>An object for holding a Double array.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element minOccurs="0" maxOccurs="unbounded" name="Double" type="xs:double" />
        </xs:sequence>
      </xs:complexType>
    </xs:schema>
  </types>
  <message name="BufferIn">
    <part name="parameters" element="e:Buffer" />
  </message>
  <message name="BufferOut">
    <part name="parameters" element="e:BufferResponse" />
  </message>
  <message name="GetAreasAndLengthsIn">
    <part name="parameters" element="e:GetAreasAndLengths" />
  </message>
  <message name="GetAreasAndLengthsOut">
    <part name="parameters" element="e:GetAreasAndLengthsResponse" />
  </message>
  <message name="FindUnitsByWKTIn">
    <part name="parameters" element="e:FindUnitsByWKT" />
  </message>
  <message name="FindUnitsByWKTOut">
    <part name="parameters" element="e:FindUnitsByWKTResponse" />
  </message>
  <message name="FindSRByWKIDIn">
    <part name="parameters" element="e:FindSRByWKID" />
  </message>
  <message name="FindSRByWKIDOut">
    <part name="parameters" element="e:FindSRByWKIDResponse" />
  </message>
  <message name="DensifyIn">
    <part name="parameters" element="e:Densify" />
  </message>
  <message name="DensifyOut">
    <part name="parameters" element="e:DensifyResponse" />
  </message>
  <message name="RelationIn">
    <part name="parameters" element="e:Relation" />
  </message>
  <message name="RelationOut">
    <part name="parameters" element="e:RelationResponse" />
  </message>
  <message name="SimplifyIn">
    <part name="parameters" element="e:Simplify" />
  </message>
  <message name="SimplifyOut">
    <part name="parameters" element="e:SimplifyResponse" />
  </message>
  <message name="GetLabelPointsIn">
    <part name="parameters" element="e:GetLabelPoints" />
  </message>
  <message name="GetLabelPointsOut">
    <part name="parameters" element="e:GetLabelPointsResponse" />
  </message>
  <message name="ProjectIn">
    <part name="parameters" element="e:Project" />
  </message>
  <message name="ProjectOut">
    <part name="parameters" element="e:ProjectResponse" />
  </message>
  <message name="FindSRByWKTIn">
    <part name="parameters" element="e:FindSRByWKT" />
  </message>
  <message name="FindSRByWKTOut">
    <part name="parameters" element="e:FindSRByWKTResponse" />
  </message>
  <message name="GetLengthsIn">
    <part name="parameters" element="e:GetLengths" />
  </message>
  <message name="GetLengthsOut">
    <part name="parameters" element="e:GetLengthsResponse" />
  </message>
  <message name="FindUnitsByWKIDIn">
    <part name="parameters" element="e:FindUnitsByWKID" />
  </message>
  <message name="FindUnitsByWKIDOut">
    <part name="parameters" element="e:FindUnitsByWKIDResponse" />
  </message>
  <portType name="GeometryServerPort">
    <documentation>Provides access to standard operations on geometric 'value' objects. The input geometries are never modified by these operations. Designed for use in building web services and web applications.</documentation>
    <operation name="Buffer">
      <documentation>Buffers an array of geometries by each distance specified in an array of distances. The distance units can optionally be specified. Geometries buffered at a given distance can optionally be unioned together.</documentation>
      <input message="e:BufferIn" />
      <output message="e:BufferOut" />
    </operation>
    <operation name="GetAreasAndLengths">
      <documentation>Calculates areas and perimeter lengths for each polygon in the specified array.</documentation>
      <input message="e:GetAreasAndLengthsIn" />
      <output message="e:GetAreasAndLengthsOut" />
    </operation>
    <operation name="FindUnitsByWKT">
      <documentation>Defines a unit object based upon its well known text string.</documentation>
      <input message="e:FindUnitsByWKTIn" />
      <output message="e:FindUnitsByWKTOut" />
    </operation>
    <operation name="FindSRByWKID">
      <documentation>Defines a spatial reference object based upon its well known identifier (WKID) and optionally a WKID for a vertical datum. The resolution and xy tolerances are either computed from the sr horizon or set to defaults. 'authority' is typically either 'EPSG' or 'E?煤?	</documentation>
      <input message="e:FindSRByWKIDIn" />
      <output message="e:FindSRByWKIDOut" />
    </operation>
    <operation name="Densify">
      <documentation>Applies the ArcObjects 'Densify' operation to each element of the geometry array.</documentation>
      <input message="e:DensifyIn" />
      <output message="e:DensifyOut" />
    </operation>
    <operation name="Relation">
      <documentation>Determines the pairs of geometries from the input geometry arrays that participate in the specified spatial relation.</documentation>
      <input message="e:RelationIn" />
      <output message="e:RelationOut" />
    </operation>
    <operation name="Simplify">
      <documentation>Applies the ArcObjects 'Simplify' operation to each element of the geometry array.</documentation>
      <input message="e:SimplifyIn" />
      <output message="e:SimplifyOut" />
    </operation>
    <operation name="GetLabelPoints">
      <documentation>Calculates an interior point for each polygon.</documentation>
      <input message="e:GetLabelPointsIn" />
      <output message="e:GetLabelPointsOut" />
    </operation>
    <operation name="Project">
      <documentation>Projects an array of geometries from their current spatial reference (pInSR) to a destination spatial reference (pOutSR). The projection process can optionally include a datum transformation if the source and destination SRs have different GCSs.</documentation>
      <input message="e:ProjectIn" />
      <output message="e:ProjectOut" />
    </operation>
    <operation name="FindSRByWKT">
      <documentation>Defines a spatial reference object based upon its well known text string (WKT) and optionally a WKT for a vertical datum. The resolution and xy tolerances are either computed from the sr horizon or set to defaults. The output sr is always high precision.</documentation>
      <input message="e:FindSRByWKTIn" />
      <output message="e:FindSRByWKTOut" />
    </operation>
    <operation name="GetLengths">
      <documentation>Calculates the length of eacch polyline in the specified array.</documentation>
      <input message="e:GetLengthsIn" />
      <output message="e:GetLengthsOut" />
    </operation>
    <operation name="FindUnitsByWKID">
      <documentation>Defines a unit object based upon its well known identified (WKID). 'authority' is typically either 'EPSG' or 'ESRI'.</documentation>
      <input message="e:FindUnitsByWKIDIn" />
      <output message="e:FindUnitsByWKIDOut" />
    </operation>
  </portType>
  <binding name="GeometryServerBinding" type="e:GeometryServerPort">
    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
    <operation name="Buffer">
      <soap:operation soapAction="" style="document" />
      <input>
        <soap:body use="literal" />
      </input>
      <output>
        <soap:body use="literal" />
      </output>
    </operation>
    <operation name="GetAreasAndLengths">
      <soap:operation soapAction="" style="document" />
      <input>
        <soap:body use="literal" />
      </input>
      <output>
        <soap:body use="literal" />
      </output>
    </operation>
    <operation name="FindUnitsByWKT">
      <soap:operation soapAction="" style="document" />
      <input>
        <soap:body use="literal" />
      </input>
      <output>
        <soap:body use="literal" />
      </output>
    </operation>
    <operation name="FindSRByWKID">
      <soap:operation soapAction="" style="document" />
      <input>
        <soap:body use="literal" />
      </input>
      <output>
        <soap:body use="literal" />
      </output>
    </operation>
    <operation name="Densify">
      <soap:operation soapAction="" style="document" />
      <input>
        <soap:body use="literal" />
      </input>
      <output>
        <soap:body use="literal" />
      </output>
    </operation>
    <operation name="Relation">
      <soap:operation soapAction="" style="document" />
      <input>
        <soap:body use="literal" />
      </input>
      <output>
        <soap:body use="literal" />
      </output>
    </operation>
    <operation name="Simplify">
      <soap:operation soapAction="" style="document" />
      <input>
        <soap:body use="literal" />
      </input>
      <output>
        <soap:body use="literal" />
      </output>
    </operation>
    <operation name="GetLabelPoints">
      <soap:operation soapAction="" style="document" />
      <input>
        <soap:body use="literal" />
      </input>
      <output>
        <soap:body use="literal" />
      </output>
    </operation>
    <operation name="Project">
      <soap:operation soapAction="" style="document" />
      <input>
        <soap:body use="literal" />
      </input>
      <output>
        <soap:body use="literal" />
      </output>
    </operation>
    <operation name="FindSRByWKT">
      <soap:operation soapAction="" style="document" />
      <input>
        <soap:body use="literal" />
      </input>
      <output>
        <soap:body use="literal" />
      </output>
    </operation>
    <operation name="GetLengths">
      <soap:operation soapAction="" style="document" />
      <input>
        <soap:body use="literal" />
      </input>
      <output>
        <soap:body use="literal" />
      </output>
    </operation>
    <operation name="FindUnitsByWKID">
      <soap:operation soapAction="" style="document" />
      <input>
        <soap:body use="literal" />
      </input>
      <output>
        <soap:body use="literal" />
      </output>
    </operation>
  </binding>
  <service name="Geometry_GeometryServer">
    <port name="GeometryServerPort" binding="e:GeometryServerBinding">
      <soap:address location="http://sampleserver2.arcgisonline.com/ArcGIS/services/Geometry/GeometryServer" />
    </port>
  </service>
</definitions>