[R-sig-Geo] How to buffer a polygon by area

Barry Rowlingson b.rowlingson at lancaster.ac.uk
Thu May 29 10:01:51 CEST 2014


On Wed, May 28, 2014 at 11:30 PM, ONKELINX, Thierry
<Thierry.ONKELINX at inbo.be> wrote:
> Hi Barry,
>
> I think it is guaranteed to converge. The first estimate of the buffer width is the extra area divided by the perimeter. That would be to large in most cases. The adjustments are based on the difference between the target area and the last buffered area and the perimeter of the last buffer. So the buffer width is only updated based on the last errors.
>
> I have tried the examples below. A starlike polygon, a rectangle and a U shape, all very thin. I applied a large buffer (1e6). It takes 11, 12 and 12 steps to converge (precision < 1e-7). With small buffers like 1.1 only a few steps are needed.

My first theorem is that the perimeter of a buffered polygon is not
strictly increasing with increasing buffer width. Consider something
like the intricate palm-tree shaped islands in Dubai - for small
buffers the perimeter is large, and as the width increases all the
details are lost and the buffer perimeter shrinks even though the area
is strictly increasing.  QED with a bit of hand (palm?) waving.

Theorem 2 is that the algorithm convergence depends on Theorem 1 being
*not* true. Theorem 2 is currently better known as "Hunch 1" and its
proof (or disproof) will have to wait. I just spilled my breakfast
cornflakes on my notepad and I have to get to work now, so unlike
Fermat I do not claim to have a truly wondrous proof/disproof of this
yet.

Barry



More information about the R-sig-Geo mailing list