Creating a buffer of a polyline that overlaps itself

2263
7
11-22-2011 10:36 AM
AdamBebko
New Contributor
Hello all,

I'm getting going on a project analyzing animal movement GPS data, and am running into a problem with buffers. I'm trying to determine the area where an animal revisits more than once. So I'm looking for the area where two buffers (made from the movement polylines) overlap (intersect). I can get it to work for different days' data, but the problem is they can also overlap within the same polyline (same day's data). In this case the buffer dissolves over the entire polyline, losing this self-overlap.

An analogy for city dwellers: picture a road (a single polyline) that curves around under itself. I want to determine the area where a 10m buffer of the road overlaps itself.

Is there any way to make a buffer from a polyline such that it creates a self-overlapping polygon when it overlaps with a later part of the same line? Or perhaps a way to get this same behaviour directly from the intersect tool?

I'm somewhat new to ArcGIS, but have extensive math and computing background. I'm starting get familiar with python and writing scripts, so I'm not scared of going down that path if needed. I've browsed the forums but seems that most ArcGIS users want to get rid of self-intersections, whereas that's what I'm interested in!

Any help would be much appreciated!
Adam Bebko
0 Kudos
7 Replies
AnthonyTimpson2
Occasional Contributor
If you have GPS point Data you could create the Buffers and separate them temporally.

Point information could be better suited to finding overlap especially if each point has a time stamp. 

If you want to maintain the Polylines I would split the lines at vertices using the ET Geowizards package (or arcInfo if you have it)

Once the Lines are split you can generate Buffers for each Time interval represented by the line.

These types of buffers will happily overlap one another as well, Anything overlapping at all in time and space will be represented by individual buffer features
0 Kudos
AdamBebko
New Contributor
Thanks a lot for replying,

Points won't work because it will miss intersects that happen between two consecutive points, where the line would be connecting them.

Splitting the line sounds like a possible solution, but how can I avoid the inherent overlap at each vertex of the polyline, between the buffers of the current and preceding line segment? here's a diagram explaining what I mean. The period is the vertex, there will be an overlap at every vertex where the buffer from the two line segments meet (the parentheses).

[[[[[[[(.)]]]]]]]]]

Thanks a lot for your help.
Adam
0 Kudos
AnthonyTimpson2
Occasional Contributor
you can try creating voronoi polygons instead of basic buffers. This will put a hard straight line between data instead of allowing overlap.
0 Kudos
AdamBebko
New Contributor
That sounds like a really good solution. Could you perhaps go into more detail on how I could actually do that? I'm still somewhat new to ArcGIS and GIS analysis in general.

I've done a little bit of searching, and found a bunch of tools in ArcGIS to generate thiessen polygons, but that seems to fill the entire space, not a space within a certain proximity of the line segments i'm using. It also seems to be generated by points and not line segments. Recall that I need to handle overlaps along the line connecting the points as well.

I really appreciate your help on this.
Adam
0 Kudos
AdamBebko
New Contributor
Ok, so I did a TON of research and fiddling around, I think what I may be able to do is the following:

1. Split the polyline into individual line segments.
2. Also convert the polyline into a point file.
3. take the first two line segments and create a buffer around them
4. take the first 3 points and create thiessen polygons from them
5. clip the thiessen polygons using the buffer created in 3.
6. add the thiessen polygon containing the first point into a new shapefile
7. repeat, on the 2nd and 3rd line segments and the 2nd-4th points, etc etc....

This will end up with the original buffer split into sections corresponding to each vertex. The iterative method (only looking at 3 points at a time) will mean that it will create polygons that can overlap, as long as they're at least two points distant.

The only issue I see now is when the animal doubles back on itself right away, I won't catch it until the 2nd waypoint of overlap, But hopefully that will be a minimal problem.

Does this sound feasible or have I been thinking about this for too long and missed something? 🙂

Thanks so much for your suggestions, I never would have come up with this on my own.
Adam
0 Kudos
AdamBebko
New Contributor
OH just a quick addition, The first iteration will have to use the polygons containing the first and second points, and subsequent iterations will have to only include the middle point's polygon. Just wanted to clarify that, I got a little mixed up.
0 Kudos
AnthonyTimpson2
Occasional Contributor
Your process sounds like it would work.. have you had a chance to fiddle with it? 

im trying to think of a way you could get the double back data to overlap at a mid point rather than at the end..
0 Kudos