[postgis-users] Buffer() Arc Tolerance
Paul Ramsey
pramsey at refractions.net
Wed Oct 13 11:25:27 PDT 2004
Richard_D_Levine at raytheon.com wrote:
> LLOL (Lunatic LOL)
>
> My project is safety critical. Our safety engineers want the polygon
> scribed outside of the circle instead of inside it to ensure that the
> radius is covered at a minimum. There's just no talking to those folks. I
> add the arc tolerance to the radius before calling Make_Buffer_Polygon() to
> solve the problem.
>
> If the extra parameter is exposed, I can figure out the rest. An
> icosidodecagon is overkill for my stuff most of the time. Using a value
> smaller than 8 should enhance performance.
You'll have to pick this up off of the 0.9 CVS branch when it gets
added. Should be a day or so (or you can submit the patch to us yourself :)
> Does the world really need a word for 32 sided polygon? Icosidodecagon has
> the same number of characters as 32sidedpolygon.
>
> Thanks,
>
> Rick
>
>
> Richard_D_Levine at raytheon.com wrote:
>
>
>>Forgive me for using the O word, but my application is currently using
>>Oracle Spatial, and I want to try it out on PostGIS. Oracle Spatial's
>>Buffer() function (Make_Buffer_Polygon()) takes arc tolerance as a
>>parameter. For a point, it scribes a equal-sided polygon inside the
>
> circle
>
>>described by the point and buffer distance (radius). The arc tolerance
>
> is
>
>>the farthest distance from any side of the polygon to the circumference
>
> of
>
>>the (imaginary) circle. The number of points in the returned polygon
>
> from
>
>>Oracle is determined by the radius of the circle and the arc tolerance.
>
>
> I see. I don't know if I like the way Oracle has exposed that particular
> knob (seems needlessly obfuscating the underlying action, which is the
> creation of N edges to approximate the arc). However, I can see that the
> occasional lunatic user (*cough*) might actually need to twiddle it.
>
>
>>>From what you said below, it appears that the PostGIS Buffer() will
>
> return
>
>>an octagon. Is that correct?
>
>
> No, as Martin noted, the parameter refers to the number of segments per
> 90 degrees, so applying it circularly, you will get an icosidodecagon (I
> love the internet). http://www.google.com/search?q=icosidodecagon
>
>
>>It appears I've hit a snag, because I need to construct arbitrarily
>
> complex
>
>>polygons by taking the union of buffer polygons around points and
>>(multi)lines.
>>
>>Any ideas?
>
>
> We can add a parameter to the Buffer() postgis exposes easily enough,
> since GEOS/JTS allows this parameter to be modified.
>
> Paul
>
>
>>For nitty gritty the details, sometime you have to "use the source,
>
> Luke".
>
>> From PostGIS source:
>>
>> Geometry *g3 = g1->buffer(width);
>>
>>So, PostGIS is not defining a stroke angle, or using anything other than
>>the defaults, it's the GEOS code which is controlling what is done.
>>
>>Hitting the GEOS code, source/operation/buffer is the place to go, but
>>the documentation of DEFAULT_QUADRANT_SEGMENTS seems a bit thin. I can
>>tell you that the default is 8, which is what PostGIS uses.
>>
>>What do you mean by the arc tolerance? The number of vertices used to
>>approximate the circular structure?
>>
>>Richard_D_Levine at Raytheon.com wrote:
>>
>>
>>>If I use Buffer() on a point to approximate a geodetic circle, how do I
>>>determine the arc tolerance of the returned polygon to the circle?
>>>
>>>Is there any documentation that contains answers to questions like this?
>>>I've read the PostGIS documentation cover to cover and the function
>>>explanations are at a very high level (mostly copied from the OGC spec.)
>
>
> _______________________________________________
> postgis-users mailing list
> postgis-users at postgis.refractions.net
> http://postgis.refractions.net/mailman/listinfo/postgis-users
>
>
>
>
>
> _______________________________________________
> postgis-users mailing list
> postgis-users at postgis.refractions.net
> http://postgis.refractions.net/mailman/listinfo/postgis-users
More information about the postgis-users
mailing list