Buffering fails when reversing two points

1760
2
07-26-2011 09:06 AM
CoreyAlix
Occasional Contributor
This request successfully buffers around the line, but if I reverse the two points buffering fails.  Any explanation for why this happens and how it can be fixed?

Request (works):
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <soap:Body>
    <Buffer xmlns="http://www.esri.com/schemas/ArcGIS/9.3">
      <InSpatialReference xmlns:q1="http://www.esri.com/schemas/ArcGIS/9.3"
      xsi:type="q1:ProjectedCoordinateSystem" xmlns="">
        <WKT>
        PROJCS["NAD_1983_StatePlane_Nevada_East_FIPS_2701_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",656166.6666666665],PARAMETER["False_Northing",26246666.66666666],PARAMETER["Central_Meridian",-115.5833333333333],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",34.75],UNIT["Foot_US",0.3048006096012192],AUTHORITY["EPSG",3421]]</WKT>
        <XOrigin>-17790500</XOrigin>
        <YOrigin>-19184900</YOrigin>
        <XYScale>137255069.87923574</XYScale>
        <ZOrigin>-100000</ZOrigin>
        <ZScale>10000</ZScale>
        <MOrigin>-100000</MOrigin>
        <MScale>10000</MScale>
        <XYTolerance>0.0032808333333333335</XYTolerance>
        <ZTolerance>0.0002</ZTolerance>
        <MTolerance>0.0002</MTolerance>
        <HighPrecision>true</HighPrecision>
        <WKID>3421</WKID>
      </InSpatialReference>
      <BufferSpatialReference xmlns:q2="http://www.esri.com/schemas/ArcGIS/9.3"
      xsi:type="q2:ProjectedCoordinateSystem" xmlns="">
        <WKT>
        PROJCS["NAD_1983_StatePlane_Nevada_East_FIPS_2701_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",656166.6666666665],PARAMETER["False_Northing",26246666.66666666],PARAMETER["Central_Meridian",-115.5833333333333],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",34.75],UNIT["Foot_US",0.3048006096012192],AUTHORITY["EPSG",3421]]</WKT>
        <XOrigin>-17790500</XOrigin>
        <YOrigin>-19184900</YOrigin>
        <XYScale>137255069.87923574</XYScale>
        <ZOrigin>-100000</ZOrigin>
        <ZScale>10000</ZScale>
        <MOrigin>-100000</MOrigin>
        <MScale>10000</MScale>
        <XYTolerance>0.0032808333333333335</XYTolerance>
        <ZTolerance>0.0002</ZTolerance>
        <MTolerance>0.0002</MTolerance>
        <HighPrecision>true</HighPrecision>
        <WKID>3421</WKID>
      </BufferSpatialReference>
      <OutSpatialReference xmlns:q3="http://www.esri.com/schemas/ArcGIS/9.3"
      xsi:type="q3:ProjectedCoordinateSystem" xmlns="">
        <WKT>
        PROJCS["NAD_1983_StatePlane_Nevada_East_FIPS_2701_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",656166.6666666665],PARAMETER["False_Northing",26246666.66666666],PARAMETER["Central_Meridian",-115.5833333333333],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",34.75],UNIT["Foot_US",0.3048006096012192],AUTHORITY["EPSG",3421]]</WKT>
        <XOrigin>-17790500</XOrigin>
        <YOrigin>-19184900</YOrigin>
        <XYScale>137255069.87923574</XYScale>
        <ZOrigin>-100000</ZOrigin>
        <ZScale>10000</ZScale>
        <MOrigin>-100000</MOrigin>
        <MScale>10000</MScale>
        <XYTolerance>0.0032808333333333335</XYTolerance>
        <ZTolerance>0.0002</ZTolerance>
        <MTolerance>0.0002</MTolerance>
        <HighPrecision>true</HighPrecision>
        <WKID>3421</WKID>
      </OutSpatialReference>
      <Distances xmlns="">
        <Double>100</Double>
      </Distances>
      <UnionResults xmlns="">true</UnionResults>
      <InGeometryArray xmlns="">
        <Geometry xmlns:q4="http://www.esri.com/schemas/ArcGIS/9.3"
        xsi:type="q4:PolygonN">
          <HasID>false</HasID>
          <HasZ>false</HasZ>
          <HasM>false</HasM>
          <RingArray>
            <Ring>
              <PointArray>
                <Point xsi:type="q4:PointN">
                  <X>756572.316542339</X>
                  <Y>26766293.5741351</Y>
                </Point>
                <Point xsi:type="q4:PointN">
                  <X>756347.911807422</X>
                  <Y>26766299.219465</Y>
                </Point>
              </PointArray>
            </Ring>
          </RingArray>
        </Geometry>
      </InGeometryArray>
    </Buffer>
  </soap:Body>
</soap:Envelope>

But if I reverse the Point elements I get a failure message:

<soap:Fault>
  <faultcode>soap:client</faultcode>
  <faultstring>An error occurred during the buffer operation</faultstring>
  <detail></detail>
</soap:Fault>

Is there a need to pre-process the PointArray before invoking /ArcGIS/services/Geometry/GeometryServer?
0 Kudos
2 Replies
CoreyAlix
Occasional Contributor
Obviously not a valid workaround but this does seem to resolve the issue on the specific features I'm testing:

<code><pre>
try
{
var bufferGeometries = geometryService.Buffer( inSR, bufferSR, outSR, distances.ToArray( ), unit, true, geometries.ToArray( ) );
return bufferGeometries.FirstOrDefault( );
}
catch
{
var pointArray = ((Ags.Services.PolygonN)geometry).RingArray[0].PointArray;
((Ags.Services.PolygonN)geometry).RingArray[0].PointArray = pointArray.Reverse( ).ToArray( );
var bufferGeometries = geometryService.Buffer( inSR, bufferSR, outSR, distances.ToArray( ), unit, true, geometries.ToArray( ) );
return bufferGeometries.FirstOrDefault( );
}
</pre></code>
0 Kudos
CoreyAlix
Occasional Contributor
Replaced the PolygonN with a PolylineN and it started working.
0 Kudos