Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I don't think it is possible, but I'm looking for a way to stop my buffer at a certain physical barrier.

For example, I have point near a river and I'm creating a buffer around my point that is larger than the river-point distance. So, I'm buffering on the other side of the river.

I can erase my buffer polygon with my river polygon and then erase what's on the other side, but I have ~50 sites, with a couple thousands points total so that's a lot of cleaning...

Any ideas?

share|improve this question
up vote 5 down vote accepted

If I understand the question correctly, I would perform the buffer as normal, then intersect your buffer result with your physical barrier features (rivers?). Then do a select by location to select the features in the intersect results that do not touch your points. Delete these, and you are done. It is essentially what you are already doing manually, but in an automated fashion.

share|improve this answer
If by "intersect" you really mean "split," then this would be on the right track. However, the selection is generally not as simple as you suggest: what happens when the unwanted part of a buffer overlaps some other point? Your recipe would retain it. – whuber Jul 30 '12 at 16:10
Sorry; Split in the ESRI world I guess. I was using 'intersect' in a generic sense. To deal with the parts overlapping other points, you could transfer attributes from the points back to the result of your intersect, and delete all the features where the point ID from the transfer and the point ID from the original buffer are not the same. Hard to explain, but the concept should work. – Darren Cope Jul 30 '12 at 16:59
That could work. I looked so hard on how to do it while creating my buffers that I think I overlooked simple geoprocessing that I could do after. I think that It could also work when creating a density layer (I'll also have to calculate a point density layer and convert it in vector), and the same process could work... even in a script. Thanks! – fgcartographix Jul 31 '12 at 17:12

Assuming you have Spatial Analyst, you could consider transforming the problem to raster space.

Using "cost distance" in spatial analyst, it is possible to bufffer and account for barriers. The tool has some limitations, but should suffice for your purpose. You would need to covert your river to a raster and have each cell it occupies as zero value (or perhaps novalue, I forget), which represents a barrier. The rest of the cells of your extent would need to have a value of any positive number. The input for the tool can be vector. At the end you would probably want to convert the cost path raster back to vector. From that vector you could query all the places the buffer reached. Hope that helps.

share|improve this answer
That helps too. I'll have a bunch of other analysis to do after and I'll definitly be looking into that solution too| :) – fgcartographix Jul 31 '12 at 17:14

Merge all 50 sites of points if feasible (no need to do this 50 times, unless differing projections or other important reason to do so). Create study area extent from points envelope (Minimum Bounding Geometry is one such tool to do this). Union river with extent and Add/Calculate Field as text type named "SIDE": 'sideA', 'River', 'sideB' (alternatively, use integers - in either case you will need to interactively select polygons prior to calculating the appropriate values); example name for this output may be river_side. Intersect points with river_side to associate "SIDE" attribute with points; example name for this output may be points_side. Buffer points_side. Intersect buffers with river_side to get 'SIDE_1' attribute (automatic field naming convention appends a '_1' to the end). Select Features By Attribute where "SIDE" = "SIDE_1". Dissolve by all required fields to get full, contiguous, and possibly overlapping buffers on one side of the river (same side as the original point). The idea here is that the points and buffers on same correct side of river will have matching side values - all else (inside river and other side of river will get discarded).

share|improve this answer
Very interesting. My initial processing is scripted in python. That could be implemented as well... – fgcartographix Jul 31 '12 at 17:16

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.