We are a group of ecologists interested in designing and evaluating road-based wildlife survey designs. Using a complex road network over a large geographic extent (e.g. thousands of square km), we require a method that will create, based on a specified radius distance, an output file of

Advice on how to implement this with ArcGIS, R, SAS/GIS, or other software would be very helpful. Our preference is for a script or similar solution that could be set up to run in batch-mode after the starting point and radius definition were designated.

**all possible, adjacent, non-overlapping, road-centred circles for the entire road network - given a single, arbitrarily chosen starting point.**The method must be robust to complex road patterns (including intersections and switchbacks). Conceptually, the problem seems fairly straightforward: from a given centroid, search exactly 2*radius until a road is encountered, then establish another centroid (and circle of radius x distance) and continue searching while complying with the 2*radius rule. If conflicts result from complying with the search rule - e.g., a new centroid could be in location A or B - simply taking the first new centroid would be an acceptable solution.Advice on how to implement this with ArcGIS, R, SAS/GIS, or other software would be very helpful. Our preference is for a script or similar solution that could be set up to run in batch-mode after the starting point and radius definition were designated.

Geoprocessing tools work best on the whole dataset at once, not in the interative solution that you are imagining.

My first thought is that a set of stepped circles along a road is a Buffer. So why not a buffer of distance equal to the radius. Then the circles will fit inside the buffer. So how do you get the centres?

Centres along the roads can be easily created using a linear referencing system and using an event table with distances equal to twice the radius. I can see this might clash at intersections, so some sort of sphere-packing might be required there. Maybe linear referencing can be used there to only pass through the intersection once to resolve that, with side roads stopping at a suitable distance that does not intersect the main road buffer.

All of these processes would run once for the whole dataset, maybe there would be several steps (say less than 10) to handle exceptions to weed out strange cases, but not millions of iterations.