<?xml version="1.0" encoding="utf-8"?>
<wps:Capabilities xmlns:ows="http://www.opengis.net/ows/1.1" xmlns:wps="http://www.opengis.net/wps/1.0.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/wps/1.0.0 http://schemas.opengis.net/wps/1.0.0/wpsGetCapabilities_response.xsd" service="WPS" version="1.0.0" xml:lang="en-US">
  <ows:ServiceIdentification>
    <ows:Title>Web Processing Service through MS4W</ows:Title>
    <ows:Abstract>Web Processing Service served through MS4W (http://ms4w.com). For more information on ZOO-Project WPS software see http://www.zoo-project.org</ows:Abstract>
    <ows:Keywords>
      <ows:Keyword>WPS</ows:Keyword>
      <ows:Keyword>service</ows:Keyword>
      <ows:Keyword>MapServer</ows:Keyword>
      <ows:Keyword>PHP</ows:Keyword>
      <ows:Keyword>Python</ows:Keyword>
      <ows:Keyword>Java</ows:Keyword>
      <ows:Keyword>CSharp</ows:Keyword>
      <ows:Keyword>GDAL</ows:Keyword>
      <ows:Keyword>OGR</ows:Keyword>
      <ows:Keyword>GIS</ows:Keyword>
      <ows:Keyword>buffer</ows:Keyword>
    </ows:Keywords>
    <ows:ServiceType>WPS</ows:ServiceType>
    <ows:ServiceTypeVersion>1.0.0</ows:ServiceTypeVersion>
    <ows:Fees>None</ows:Fees>
    <ows:AccessConstraints>none</ows:AccessConstraints>
  </ows:ServiceIdentification>
  <ows:ServiceProvider>
    <ows:ProviderName>Gateway Geomatics</ows:ProviderName>
    <ows:ProviderSite xlink:href="http://gatewaygeomatics.com"/>
    <ows:ServiceContact>
      <ows:IndividualName>Jeff McKenna</ows:IndividualName>
      <ows:PositionName>Director</ows:PositionName>
      <ows:ContactInfo>
        <ows:Phone>
          <ows:Voice>False</ows:Voice>
          <ows:Facsimile>False</ows:Facsimile>
        </ows:Phone>
        <ows:Address>
          <ows:City>Lunenburg</ows:City>
          <ows:AdministrativeArea>False</ows:AdministrativeArea>
          <ows:PostalCode>B0J 2C0</ows:PostalCode>
          <ows:Country>ca</ows:Country>
          <ows:ElectronicMailAddress>info@gatewaygeomatics.com</ows:ElectronicMailAddress>
        </ows:Address>
      </ows:ContactInfo>
    </ows:ServiceContact>
  </ows:ServiceProvider>
  <ows:OperationsMetadata>
    <ows:Operation name="GetCapabilities">
      <ows:DCP>
        <ows:HTTP>
          <ows:Get xlink:href="https://wms.decisionfarm.ca/cgi-bin/zoo_loader.cgi"/>
          <ows:Post xlink:href="https://wms.decisionfarm.ca/cgi-bin/zoo_loader.cgi"/>
        </ows:HTTP>
      </ows:DCP>
    </ows:Operation>
    <ows:Operation name="DescribeProcess">
      <ows:DCP>
        <ows:HTTP>
          <ows:Get xlink:href="https://wms.decisionfarm.ca/cgi-bin/zoo_loader.cgi"/>
          <ows:Post xlink:href="https://wms.decisionfarm.ca/cgi-bin/zoo_loader.cgi"/>
        </ows:HTTP>
      </ows:DCP>
    </ows:Operation>
    <ows:Operation name="Execute">
      <ows:DCP>
        <ows:HTTP>
          <ows:Get xlink:href="https://wms.decisionfarm.ca/cgi-bin/zoo_loader.cgi"/>
          <ows:Post xlink:href="https://wms.decisionfarm.ca/cgi-bin/zoo_loader.cgi"/>
        </ows:HTTP>
      </ows:DCP>
    </ows:Operation>
  </ows:OperationsMetadata>
  <wps:ProcessOfferings>
    <wps:Process wps:processVersion="1">
      <ows:Identifier>Boundary</ows:Identifier>
      <ows:Title>Computes boundary.</ows:Title>
      <ows:Abstract>This service shall return a feature callection representing the combinatorial boundary of each geometry in the InputPolygon feature collection.</ows:Abstract>
      <ows:Metadata xlink:title="Demo"/>
    </wps:Process>
    <wps:Process wps:processVersion="1">
      <ows:Identifier>BoundaryPy</ows:Identifier>
      <ows:Title>Computes boundary.</ows:Title>
      <ows:Abstract>A new geometry object is created and returned containing the boundary of the geometry on which the method is invoked. </ows:Abstract>
      <ows:Metadata xlink:title="Demo"/>
    </wps:Process>
    <wps:Process wps:processVersion="2">
      <ows:Identifier>Buffer</ows:Identifier>
      <ows:Title>Create a buffer around a polygon. </ows:Title>
      <ows:Abstract>This service shall return a feature collection representing the buffer of geometry InputPolygon at distance BufferDistance. The buffer of a geometry at distance d is the Polygon or MultiPolygon which contains all points within a distance d of the geometry.</ows:Abstract>
      <ows:Metadata xlink:title="Demo"/>
    </wps:Process>
    <wps:Process wps:processVersion="2">
      <ows:Identifier>BufferPy</ows:Identifier>
      <ows:Title>Creates a buffer around a polygon. </ows:Title>
      <ows:Abstract>Creates a buffer around a single polygon. Accepts the polygon as GML and provides GML output for the buffered feature. </ows:Abstract>
      <ows:Metadata xlink:title="Demo"/>
    </wps:Process>
    <wps:Process wps:processVersion="2">
      <ows:Identifier>Centroid</ows:Identifier>
      <ows:Title>Computes the centroid of a polygon. </ows:Title>
      <ows:Abstract>This service shall return the point that is the geometric centre of gravity of the geometry InputPolygon.</ows:Abstract>
      <ows:Metadata xlink:title="Demo"/>
    </wps:Process>
    <wps:Process wps:processVersion="1">
      <ows:Identifier>Clean</ows:Identifier>
      <ows:Title>Computes the centroid of a polygon </ows:Title>
      <ows:Abstract>Computes the centroid of a polygon that have a valid geometry field.</ows:Abstract>
    </wps:Process>
    <wps:Process wps:processVersion="2">
      <ows:Identifier>Contains</ows:Identifier>
      <ows:Title>Contains</ows:Title>
      <ows:Abstract>This service shall return a true value if and only if the geometry g2 lies in the closure (boundary union interior) of geometry g1 - the inverse of Within(g1: Geometry, g2: Geometry).</ows:Abstract>
    </wps:Process>
    <wps:Process wps:processVersion="1">
      <ows:Identifier>ConvexHull</ows:Identifier>
      <ows:Title>Compute convex hull.</ows:Title>
      <ows:Abstract>This service shall return a feature collection that represents the convex hull of geometry InputPolygon. The convex hull is the smallest convex polygon that contains all points of the geometry. The convex Hull for a geometry of encoding data type Point is the point itself</ows:Abstract>
      <ows:Metadata xlink:title="Demo"/>
    </wps:Process>
    <wps:Process wps:processVersion="1">
      <ows:Identifier>ConvexHullPy</ows:Identifier>
      <ows:Title>Computes convex hull.</ows:Title>
      <ows:Abstract>A new geometry object is created and returned containing the convex hull of the geometry on which the method is invoked.</ows:Abstract>
      <ows:Metadata xlink:title="Demo"/>
    </wps:Process>
    <wps:Process wps:processVersion="2">
      <ows:Identifier>Crosses</ows:Identifier>
      <ows:Title>Crosses test</ows:Title>
      <ows:Abstract>This service shall return a true value if and only if the geometries g1 and g2 share some but neither is containe in the other, and the dimension of the intersection is less than that of both of the geometries.</ows:Abstract>
    </wps:Process>
    <wps:Process wps:processVersion="1">
      <ows:Identifier>demo</ows:Identifier>
      <ows:Title>Demo long process. </ows:Title>
      <ows:Abstract>This service doesn't do anything except taking its time to return an error message, it demonstrates how to use the update_status function of the Python ZOO-API from your services code.</ows:Abstract>
    </wps:Process>
    <wps:Process wps:processVersion="2">
      <ows:Identifier>Difference</ows:Identifier>
      <ows:Title>Compute difference. </ows:Title>
      <ows:Abstract>This function shall return a bag of geometry values representing the closure of the set difference between the two geometries InputEntity1 and InputEntity2. The difference is the set of all points which lie on InputEntity1 but not on InputEntity2.</ows:Abstract>
      <ows:Metadata xlink:title="Demo"/>
    </wps:Process>
    <wps:Process wps:processVersion="2">
      <ows:Identifier>DifferencePy</ows:Identifier>
      <ows:Title>Computes difference. </ows:Title>
      <ows:Abstract>Generates a new geometry which is the region of this geometry with the region of the other geometry removed.</ows:Abstract>
      <ows:Metadata xlink:title="Demo"/>
    </wps:Process>
    <wps:Process wps:processVersion="2">
      <ows:Identifier>Disjoint</ows:Identifier>
      <ows:Title>Disjoint </ows:Title>
      <ows:Abstract>This servuce shall return a true value if and only if the geometries g1 and g2 have no point in common.</ows:Abstract>
    </wps:Process>
    <wps:Process wps:processVersion="2">
      <ows:Identifier>Distance</ows:Identifier>
      <ows:Title>Compute the distance between two geometries</ows:Title>
      <ows:Abstract>Compute the distance between two geometries</ows:Abstract>
      <ows:Metadata xlink:title="Demo"/>
    </wps:Process>
    <wps:Process wps:processVersion="2">
      <ows:Identifier>Equals</ows:Identifier>
      <ows:Title>Equals </ows:Title>
      <ows:Abstract>This service shall return a true value if and only if the geometries g1 and g2 are equal</ows:Abstract>
    </wps:Process>
    <wps:Process wps:processVersion="1">
      <ows:Identifier>GdalExtractProfile</ows:Identifier>
      <ows:Title>Extract elevation values along a line. </ows:Title>
      <ows:Abstract>Fetch the x,y,z values of a DEM raster file along a linestring</ows:Abstract>
      <ows:Metadata xlink:title="My Demo"/>
    </wps:Process>
    <wps:Process wps:processVersion="1">
      <ows:Identifier>Gdal_Contour</ows:Identifier>
      <ows:Title>Builds vector contour lines from a raster elevation model.</ows:Title>
      <ows:Abstract>http://www.gdal.org/gdal_contour.html</ows:Abstract>
    </wps:Process>
    <wps:Process wps:processVersion="1">
      <ows:Identifier>Gdal_Dem</ows:Identifier>
      <ows:Title>Tools to analyze and visualize DEMs.</ows:Title>
      <ows:Abstract>http://www.gdal.org/gdaldem.html</ows:Abstract>
    </wps:Process>
    <wps:Process wps:processVersion="1">
      <ows:Identifier>Gdal_Grid</ows:Identifier>
      <ows:Title>Computes a regular grid (raster) from scattered data read from a vector data source. </ows:Title>
      <ows:Abstract>http://www.gdal.org/gdal_grid.html</ows:Abstract>
      <ows:Metadata xlink:title="My Demo"/>
    </wps:Process>
    <wps:Process wps:processVersion="1">
      <ows:Identifier>Gdal_Translate</ows:Identifier>
      <ows:Title>Convert raster data from one format to another. </ows:Title>
      <ows:Abstract>http://www.gdal.org/gdal_translate.html</ows:Abstract>
      <ows:Metadata xlink:title="My Demo"/>
    </wps:Process>
    <wps:Process wps:processVersion="1">
      <ows:Identifier>Gdal_Warp</ows:Identifier>
      <ows:Title>GDAL Warp Tool</ows:Title>
      <ows:Abstract>The gdalwarp utility is an image mosaicing, reprojection and warping utility. The program can reproject to any supported projection, and can also apply GCPs stored with the image if the image is "raw" with control information.</ows:Abstract>
    </wps:Process>
    <wps:Process wps:processVersion="2">
      <ows:Identifier>GetArea</ows:Identifier>
      <ows:Title>Compute geometry area.</ows:Title>
      <ows:Abstract>Computes the area of a geometry</ows:Abstract>
      <ows:Metadata xlink:title="Demo"/>
    </wps:Process>
    <wps:Process wps:processVersion="1">
      <ows:Identifier>GetStatus</ows:Identifier>
      <ows:Title>Produce an updated ExecuteResponse document. </ows:Title>
      <ows:Abstract>Create an ExecuteResponse document from a sid (Service ID), it will use the internal ZOO Kernel mechanisms to access the current status from a running Service and update the percentCompleted from the original backup file used by the ZOO Kernel when running a Service in background. </ows:Abstract>
      <ows:Metadata xlink:title="Demo GetStatus request"/>
    </wps:Process>
    <wps:Process wps:processVersion="2">
      <ows:Identifier>HelloMono</ows:Identifier>
      <ows:Title>Create a welcome message string.</ows:Title>
      <ows:Abstract>Create a welcome string.</ows:Abstract>
    </wps:Process>
    <wps:Process wps:processVersion="1">
      <ows:Identifier>HelloPHP</ows:Identifier>
      <ows:Title>Display a string</ows:Title>
      <ows:Abstract>Display a string which contains an hello message</ows:Abstract>
      <ows:Metadata xlink:title="Demo"/>
    </wps:Process>
    <wps:Process wps:processVersion="3">
      <ows:Identifier>HelloPy</ows:Identifier>
      <ows:Title>Create a welcome message string.</ows:Title>
      <ows:Abstract>Create a welcome string.</ows:Abstract>
      <ows:Metadata xlink:title="Demo"/>
    </wps:Process>
    <wps:Process wps:processVersion="1">
      <ows:Identifier>HelloWorldJava</ows:Identifier>
      <ows:Title>Display a string</ows:Title>
      <ows:Abstract>Display a string which contains an hello message</ows:Abstract>
      <ows:Metadata xlink:title="Demo"/>
    </wps:Process>
    <wps:Process wps:processVersion="2">
      <ows:Identifier>Intersection</ows:Identifier>
      <ows:Title>Compute intersection. </ows:Title>
      <ows:Abstract>This function SHALL return a bag of geometry values representing the Point set intersection of geometry InputEntity1 and geometry InputEntity2.</ows:Abstract>
      <ows:Metadata xlink:title="Demo"/>
    </wps:Process>
    <wps:Process wps:processVersion="2">
      <ows:Identifier>IntersectionPy</ows:Identifier>
      <ows:Title>Computes intersection. </ows:Title>
      <ows:Abstract>Generates a new geometry which is the region of intersection of the two geometries operated on.</ows:Abstract>
      <ows:Metadata xlink:title="Demo"/>
    </wps:Process>
    <wps:Process wps:processVersion="2">
      <ows:Identifier>Intersects</ows:Identifier>
      <ows:Title>Intersects test</ows:Title>
      <ows:Abstract>This service shall return a true value if and only if the geometries g1 and g2 have at least one boundary point in common, but no interior points.</ows:Abstract>
    </wps:Process>
    <wps:Process wps:processVersion="2">
      <ows:Identifier>IsSimple</ows:Identifier>
      <ows:Title>IsSimple test </ows:Title>
      <ows:Abstract>This service shall return a true value if and only if geometry g has no anomalous geometric points, such as self intersection or self tangency. Simple curves intersect themselves only at their endpoints (only if they are also closed, see next function).</ows:Abstract>
    </wps:Process>
    <wps:Process wps:processVersion="2">
      <ows:Identifier>IsValid</ows:Identifier>
      <ows:Title>IsValid test </ows:Title>
      <ows:Abstract>This service shall return a TRUE value if and only if the geometry g is valid</ows:Abstract>
    </wps:Process>
    <wps:Process wps:processVersion="1">
      <ows:Identifier>JavaLongProcess</ows:Identifier>
      <ows:Title>Display a string</ows:Title>
      <ows:Abstract>Display a string which contains an hello message after waiting many times to illustrate the way you can use updateStatus ZOO-API function from your Java service</ows:Abstract>
      <ows:Metadata xlink:title="Demo"/>
    </wps:Process>
    <wps:Process wps:processVersion="1">
      <ows:Identifier>kmlMapServerPHP</ows:Identifier>
      <ows:Title>Generate a MapServer WFS service</ows:Title>
      <ows:Abstract>Generate a MapServer WFS service, by passing a KML file</ows:Abstract>
      <ows:Metadata xlink:title="Demo"/>
    </wps:Process>
    <wps:Process wps:processVersion="1">
      <ows:Identifier>kmlMapServerPy</ows:Identifier>
      <ows:Title>Generate a MapServer WFS service</ows:Title>
      <ows:Abstract>Generate a MapServer WFS service, by passing a KML file</ows:Abstract>
      <ows:Metadata xlink:title="Demo"/>
    </wps:Process>
    <wps:Process wps:processVersion="1">
      <ows:Identifier>longProcess</ows:Identifier>
      <ows:Title>Demo long process. </ows:Title>
      <ows:Abstract>This service doesn't do anything except taking its time, it demonstrates how to use the updateStatus function from your ZOO Service. </ows:Abstract>
      <ows:Metadata xlink:title="Demo GetStatus request"/>
    </wps:Process>
    <wps:Process wps:processVersion="2">
      <ows:Identifier>longProcessMono</ows:Identifier>
      <ows:Title>Create a welcome message string.</ows:Title>
      <ows:Abstract>Create a welcome string.</ows:Abstract>
    </wps:Process>
    <wps:Process wps:processVersion="1">
      <ows:Identifier>Ogr2Ogr</ows:Identifier>
      <ows:Title>Converts vector data from one format to another. </ows:Title>
      <ows:Abstract>http://www.gdal.org/ogr2ogr.html</ows:Abstract>
      <ows:Metadata xlink:title="My Demo"/>
    </wps:Process>
    <wps:Process wps:processVersion="2">
      <ows:Identifier>Simplify</ows:Identifier>
      <ows:Title>Simplifies polygons geometries. </ows:Title>
      <ows:Abstract>This service shall return a feature collection representing all simplified geometries with all their vertices within the distance of the original geometry defined by the given tolerance.</ows:Abstract>
    </wps:Process>
    <wps:Process wps:processVersion="2">
      <ows:Identifier>SymDifference</ows:Identifier>
      <ows:Title>Compute symmetric difference. </ows:Title>
      <ows:Abstract>This service shall return a feature collection representing the closure of the symmetric difference of two Geometries. The symmetric difference is the set of points which lie on either InputEntity1 or InputEntity2 but not in both.</ows:Abstract>
      <ows:Metadata xlink:title="Demo"/>
    </wps:Process>
    <wps:Process wps:processVersion="2">
      <ows:Identifier>SymDifferencePy</ows:Identifier>
      <ows:Title>Computes symmetric difference. </ows:Title>
      <ows:Abstract>Generates a new geometry which is the symmetric difference of this geometry and the other geometry.</ows:Abstract>
      <ows:Metadata xlink:title="Demo"/>
    </wps:Process>
    <wps:Process wps:processVersion="2">
      <ows:Identifier>Touches</ows:Identifier>
      <ows:Title>Compute intersection. </ows:Title>
      <ows:Abstract>Generates a new geometry which is the region of intersection of the two geometries operated on.</ows:Abstract>
    </wps:Process>
    <wps:Process wps:processVersion="2">
      <ows:Identifier>Union</ows:Identifier>
      <ows:Title>Compute union. </ows:Title>
      <ows:Abstract>This service shall return a bag of geometry values representing a Point set union of geometry InputEntity1 with geometry InputEntity2.</ows:Abstract>
      <ows:Metadata xlink:title="Demo"/>
    </wps:Process>
    <wps:Process wps:processVersion="2">
      <ows:Identifier>UnionPy</ows:Identifier>
      <ows:Title>Computes union. </ows:Title>
      <ows:Abstract>Generates a new geometry which is the region of union of the two geometries operated on.</ows:Abstract>
      <ows:Metadata xlink:title="Demo"/>
    </wps:Process>
    <wps:Process wps:processVersion="2">
      <ows:Identifier>Within</ows:Identifier>
      <ows:Title>Within test</ows:Title>
      <ows:Abstract>This service shall return a true value if and only if the geometry InputEntity1 is spatially within geometry InputEntity2; that is if every point on InputEntity1 is also on InputEntity2.</ows:Abstract>
    </wps:Process>
  </wps:ProcessOfferings>
  <wps:Languages>
    <wps:Default>
      <ows:Language>fr-FR</ows:Language>
    </wps:Default>
    <wps:Supported>
      <ows:Language>fr-FR</ows:Language>
      <ows:Language>en-CA</ows:Language>
    </wps:Supported>
  </wps:Languages>
</wps:Capabilities>
