<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <div class="moz-text-flowed" style="font-family: -moz-fixed;
      font-size: 12px;" lang="x-western">Greetings all,
      <br>
      <br>
      The program pasted below will produce slightly different results
      on different machines. It's calling BUFFER on a GEOMCOLLECTION.
      <br>
      On ArchLinux 64 bit with GCC 4.6.2 I get:
      <br>
      Buffer: POLYGON ((0.000 1.000, 0.000 1.000, 0.011 1.113, 0.019
      1.195, 0.019 1.195, 0.019 1.195, 0.043 1.275, 0.076 1.383, 0.076
      1.383, 0.076 1.383, 0.113 1.451, 0.169 1.556, 0.169 1.556, 0.169
      1.556, 0.184 1.574, 0.293 1.707, 0.293 1.707, 0.293 1.707, 4.293
      5.707, 4.444 5.831, 4.617 5.924, 4.805 5.981, 5.000 6.000, 5.195
      5.981, 5.383 5.924, 5.556 5.831, 5.707 5.707, 5.831 5.556, 5.924
      5.383, 5.981 5.195, 6.000 5.000, 5.981 4.805, 5.924 4.617, 5.831
      4.444, 5.707 4.293, 1.707 0.293, 1.707 0.293, 1.707 0.293, 1.707
      0.293, 1.700 0.287, 1.556 0.169, 1.556 0.169, 1.556 0.169, 1.474
      0.125, 1.383 0.076, 1.383 0.076, 1.383 0.076, 1.293 0.049, 1.195
      0.019, 1.195 0.019, 1.195 0.019, 1.094 0.009, 1.000 0.000, 1.000
      0.000, 1.000 0.000, 0.874 0.012, 0.805 0.019, 0.805 0.019, 0.805
      0.019, 0.680 0.057, 0.617 0.076, 0.617 0.076, 0.617 0.076, 0.494
      0.142, 0.444 0.169, 0.444 0.169, 0.444 0.169, 0.366 0.233, 0.293
      0.293, 0.293 0.293, 0.293 0.293, 0.218 0.384, 0.169 0.444, 0.169
      0.444, 0.169 0.444, 0.128 0.521, 0.076 0.617, 0.076 0.617, 0.076
      0.617, 0.048 0.710, 0.019 0.805, 0.019 0.805, 0.019 0.805, 0.011
      0.890, 0.000 1.000, 0.000 1.000))
      <br>
      On OpenSUSE 10 64 bit, GCC 4.1.2
      <br>
      Buffer: POLYGON ((0.000 1.000, 0.000 1.000, 0.011 1.113, 0.019
      1.195, 0.019 1.195, 0.019 1.195, 0.043 1.275, 0.076 1.383, 0.076
      1.383, 0.076 1.383, 0.113 1.451, 0.169 1.556, 0.169 1.556, 0.169
      1.556, 0.184 1.574, 0.293 1.707, 0.293 1.707, 0.293 1.707, 4.293
      5.707, 4.444 5.831, 4.617 5.924, 4.805 5.981, 5.000 6.000, 5.195
      5.981, 5.383 5.924, 5.556 5.831, 5.707 5.707, 5.831 5.556, 5.924
      5.383, 5.981 5.195, 6.000 5.000, 5.981 4.805, 5.924 4.617, 5.831
      4.444, 5.707 4.293, 1.707 0.293, 1.707 0.293, 1.707 0.293, 1.707
      0.293, 1.700 0.287, 1.556 0.169, 1.556 0.169, 1.556 0.169, 1.474
      0.125, 1.383 0.076, 1.383 0.076, 1.383 0.076, 1.293 0.049, 1.195
      0.019, 1.195 0.019, 1.195 0.019, 1.094 0.009, 1.000 0.000, 1.000
      0.000, 1.000 0.000, 0.874 0.012, 0.805 0.019, 0.805 0.019, 0.805
      0.019, 0.680 0.057, 0.617 0.076, 0.617 0.076, 0.617 0.076, 0.520
      0.128, 0.444 0.169, 0.444 0.169, 0.444 0.169, 0.384 0.218, 0.293
      0.293, 0.293 0.293, 0.293 0.293, 0.218 0.384, 0.169 0.444, 0.169
      0.444, 0.169 0.444, 0.128 0.521, 0.076 0.617, 0.076 0.617, 0.076
      0.617, 0.048 0.710, 0.019 0.805, 0.019 0.805, 0.019 0.805, 0.011
      0.890, 0.000 1.000, 0.000 1.000))
      <br>
      <br>
      The difference is in one coordinate pair:
      <br>
      0.494 0.142
      <br>
      vs
      <br>
      0.520 0.128
      <br>
      <br>
      Is Buffer supposed to work on geomcollections such as the one
      below and why would there be a slight discrepancy between results?
      <br>
      <br>
      Thanks!
      <br>
      <br>
      <br>
      #include &lt;geos_c.h&gt;
      <br>
      #include &lt;stdio.h&gt;
      <br>
      #include &lt;stdlib.h&gt;
      <br>
      <br>
      #define FALSE 0
      <br>
      #define TRUE 1
      <br>
      <br>
      int main(int argc, char *argv[])
      <br>
      {
      <br>
      &nbsp;&nbsp;&nbsp; GEOSGeometry *geom, *buffer;
      <br>
      &nbsp;&nbsp;&nbsp; GEOSContextHandle_t handle;
      <br>
      &nbsp;&nbsp;&nbsp; GEOSWKTReader *reader;
      <br>
      &nbsp;&nbsp;&nbsp; GEOSWKTWriter *writer;
      <br>
      &nbsp;&nbsp;&nbsp; char *wkt;
      <br>
      <br>
      &nbsp;&nbsp;&nbsp; handle = initGEOS_r(NULL, NULL);
      <br>
      <br>
      &nbsp;&nbsp;&nbsp; reader = GEOSWKTReader_create_r(handle);
      <br>
      &nbsp;&nbsp;&nbsp; writer = GEOSWKTWriter_create_r(handle);
      <br>
      <br>
      &nbsp;&nbsp;&nbsp; geom = GEOSWKTReader_read_r(handle, reader,
      "GEOMETRYCOLLECTION(POINT(1 1), LINESTRING(1 1, 2 2, 4 4, 5 5))");
      <br>
      <br>
      &nbsp;&nbsp;&nbsp; GEOSWKTWriter_setRoundingPrecision_r(handle, writer, 3);
      <br>
      &nbsp;&nbsp;&nbsp; GEOSWKTWriter_setTrim_r(handle, writer, FALSE);
      <br>
      &nbsp;&nbsp;&nbsp; buffer = GEOSBuffer_r(handle, geom, 1, 8);
      <br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; wkt = GEOSWKTWriter_write_r(handle, writer, buffer);
      <br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("Buffer: %s\n", wkt);
      <br>
      <br>
      &nbsp;&nbsp;&nbsp; return 0;
      <br>
      }
      <br>
    </div>
    <pre class="moz-signature" cols="72">-- 
Alex
<a class="moz-txt-link-freetext" href="http://bit.ly/geodb">http://bit.ly/geodb</a></pre>
  </body>
</html>