Select to view content in your preferred language

Inside Buffer

3732
14
07-07-2010 06:29 AM
LornaMurison
Regular Contributor
Hi everyone,
I'm using 9.2 SP6.
I have a a fairly complex lakes feature class (shown in attached picture).  I am trying to create a buffer 20 meters inside each feature and none of the methods seems to be working.
The buffer tool with a negative distance produces some kind of error before the process can be completed.
The buffer wizard tool produces the result shown in brown in the other attached image.  First of all it's the blue area that I want to keep, so I would have to add the extra erase step, and second, it completely ignored the more complicated and larger polygon on top.
I used ArcMap advanced settings utility to change the buffer wizard method to "feature optimized coordinate system" which produced the same results.

Does anyone know how, using a script, tool, or anything, how to create a buffer inside a polygon, keeping in mind that this process will have to be run MANY times.

Thank-You!
0 Kudos
14 Replies
LornaMurison
Regular Contributor
FYI
This problem is part of the larger problem I am trying to solve in this thread:
http://forums.arcgis.com/threads/7695-Challenge-Lake-vs.-River

I have had success creating a negative buffer from a simplified polygon by converting the polygon to a line, buffering the line, and erasing the line buffer from the simplified polygon.
Creating the complement of the lakes is a really interesting idea, but I have such a huge number of lakes to do this for that I don't think it is feasible.

As part of a process further down the line I need to re-buffer my buffers to get a more accurate reading of lake area and to help with creating pour points for catchment delineation.  This second buffer process is giving me errors as well.
0 Kudos
by Anonymous User
Not applicable
Original User: whuber

Creating the complement of the lakes is a really interesting idea, but I have such a huge number of lakes to do this for that I don't think it is feasible.


You can do it all in one step, Lorna.  I wrote about focusing on just the problem lakes because they are problems!  But if buffering them succeeds, then you should be able to buffer all the lakes by computing their mutual complement (one operation) and buffering it (one operation).


As part of a process further down the line I need to re-buffer my buffers to get a more accurate reading of lake area and to help with creating pour points for catchment delineation.  This second buffer process is giving me errors as well.


Yes, it will give you problems, because all the "round" parts of buffers contain many, many vertices.  That creates a huge complex feature to buffer, potentially causing difficulties (or at least taking a lot of time).  Usually it's better not to re-buffer a buffer but to re-buffer the original feature by the difference in buffer radii.
0 Kudos
LornaMurison
Regular Contributor
You can do it all in one step, Lorna.  I wrote about focusing on just the problem lakes because they are problems!  But if buffering them succeeds, then you should be able to buffer all the lakes by computing their mutual complement (one operation) and buffering it (one operation).


You're right, I could do it in one step more or less.  I'm satisfied, however, with converting polygons to lines, buffering the lines, and erasing the buffers.
This does a good job of getting rid of narrow areas, or splitting polygons where they narrow.  As you can see in the attached picture.  The red line represents the original lake outline, and the purple is the buffered lake (26 meter buffer).

The reason why I was wanting to re-buffer the negative buffer is to get a more accurate reading of the lake area.  By re-buffering the lakes, the rivers would still be gone, except the area calculations would be more accurate.

I am now hoping that I can just add a field to my negatively buffered lakes with an estimation of lake area.  But that is another question entirely.  Is there a way to estimate the area of a buffer polygon if you know the buffer distance and the area of the original polygon?
0 Kudos
by Anonymous User
Not applicable
Original User: whuber

  Is there a way to estimate the area of a buffer polygon if you know the buffer distance and the area of the original polygon?


No, but if you're willing to do the (easy) calculation of perimeter, then there is a way: the additional buffer area is approximately equal to the buffer radius times the perimeter.  The approximation is good when the radius is small compared to the polygon's size (as measured by the square root of its area, say) and the polygon's boundary is not too tortuous.  In particular, it should work well for situations like the one you illustrated.  (If you add to the approximation the area of a circle whose radius equals the buffer radius, this approximation often gives exact answers.)

For example: suppose the polygon area is 10,000 square meters, its perimeter is 500 meters, and the buffer radius is 1 meter.  Then the (externally) buffered polygon area is estimated as

[INDENT]10,000 + 500 * 1 [+ Pi * 1^2]
= 10,500 [or 10,503.14] square meters.

[/INDENT]We expect this to work well in the example because (a) sqrt(10,000) : 1 = 100:1 shows the polygon is much larger than the buffer radius and (b) 500 : sqrt(10,000) = 5:1, a number that measures the tortuosity, is small.
0 Kudos
LornaMurison
Regular Contributor


For example: suppose the polygon area is 10,000 square meters, its perimeter is 500 meters, and the buffer radius is 1 meter.  Then the (externally) buffered polygon area is estimated as

[INDENT]10,000 + 500 * 1 [+ Pi * 1^2]
= 10,500 [or 10,503.14] square meters.
[/INDENT]


Thank you so much, this is exactly what I am looking for, it's going to be a huge help!
Could you please clarify the formula though?
I am not sure what the buffer radius is being multiplied by and what pi is being added to.  Is it 1(10,000 + 500)+(pi*1^2) ?
Thanks


*edit
I have tested out the formula and now understand it to be BufferRadius(Perimeter)+Area+(BufferRadius^2*pi)
It works extremely well, thank you.
0 Kudos