For a habitat selection study, I am trying to identify availability. My species lives along waterbodies and I could assess distances moved between two consecutive locations using the network analyst (Calculating distances between consecutive points along rivers (polygon) using ArcGIS Desktop?).

I would like to get a potential location the animal could have reached within the same distance.

For better understanding: I have location A and the distance d from location A to B I have a network of rivers and other waterbodies

I now want to get the location C using A as a starting location and distance d as the distance along the network.

Is that possible to do and if so, how?


I found the (or one) solution: One needs the Tool "Service Area" in Network Analyst. First, you need to have some necessary prerequisites:

a) Set up a Network in Network Analyst. You need to have the Length of the roads/rivers/etc. as an attribute added while setting up the Analyst, name it e.g "Distance"

b) You need a column in your location file which the distance to be calculated for each location (so if you have several distances per location, they need to be each on a new line), name it e.g. "New_Dist")

a) Open Network Analyst and choose "service Area", open it as a new bar

b) Click on the icon right to the Service Area. Open "Accumulation", you will see the name of attribute of Length you have set up in the Network Analyst (e.g. "Distance"). Check it

c) Open "General", uncheck "Generate Polygons" (it takes ages and makes you go way out of your way)

d) Open "Line generation", click on "Generate Line"

c) Close it.

e) Click on "Facilities" and load your locations into it. I used the ID of the location (not OBJECTID but my own so that it would not be confounded with anything else), and add on the Field "Breaks_Distance" the field with your Distances (e.g. "New_Dist")

f) Load it and then let it run. It will be slow but not very slow. The loading of the locations should be rather quick. If not, check if you have a spatial index (go to Catalog, open it and check the properties. If no spatial index is built, build it now. it goes WAY faster).

g) Export the Lines

h) Join the new File using "Facility_ID" with the "Service area Facility" using "OBJECT_ID". This is needed because the lines themselves have little information so you need to join it.

i) Add the new columsn X and Y

j) Calculate for X = "X End of line" in "Calculate Geometry" from the table and the Y = "Y End of Line"

k) Export the table as such

l) import the table again into gis with "Display X and Y", then export it as new file.

m) As the real distance is made up in segments along the different possibilities along the network but you only want to know the end location, you need now to add another colum to the table of the new file, call it as you wish but take it as "Float". Use the field calculator by using "Break_Dis" - "ToCumul" and then select only the ones that are =<0. That are the locations with the approximate distance you wanted to have.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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