I have a table with start and end point data in each row and need to convert them into lines, but I would like something other than a straight segment.
Ideally, I want to connect the points via a segment that is determined by the bathymetry of the area (so along the same bathymetry as the start and end points). I have both raster bathymetry layers and contour shapefiles.
The only way I can think to do this is create a raster layer with the difference in bathymetry from the mean bathymetry of start and end points and create a least-cost path with large differences being very costly.
I wanted to float the idea out there though to see if there are any automated or different ways to do this. Here is a diagram of what I have/want:
enter image description here
The black lines are bathymetry contours, and the red points are examples of my start and end points. The blue line is the straight line segment that is how ArcMap tools would connect the two points.
What I need is a line connecting them that follows the bathymetry contours, i.e. the path with the least amount of change in bathymetry from the start and end points.

After exploring the idea, it is not feasible to simply snap the points to the bathymetry contour shapefile and split the lines, that would change the location of the points too much.

  • The reason I am asking is that creating a new raster for each row I have will be tedius, even if I automate it in Python or ModelBuilder.
    – AlmaThom
    Aug 8, 2012 at 17:21
  • 1
    Maybe you can start by snapping the points to the contour shapefile using the Near Tool. You can then select those lines, export them, and split them acording to the set of point (begining and end)?
    – dchaboya
    Aug 8, 2012 at 17:56
  • What do your table data represent? How were they obtained?
    – whuber
    Aug 8, 2012 at 18:04
  • Good idea dchaboya, I'll have to explore how to perform a split based on IDs like that. Maybe a SearchCursor that performs the snap and split separately for each ID. Will report back.
    – AlmaThom
    Aug 8, 2012 at 19:27
  • whuber - they are self-reported GPS locations of where a fishing net was dropped and then pulled up. Standard lat long for each point, so 4 spatial columns per row, but I can easily make each point into it's own row in a new shapefile with common IDs
    – AlmaThom
    Aug 8, 2012 at 19:32

1 Answer 1


I ended up doing this as described in the question. Here were the rough steps performed in a python scripted loop for each set of points:
- record the bathymetry values for the start and end points
- calculate an average of the two values
- use raster calculator to create a bathymetry differences raster with the difference in true bathymetry from the averaged bathymetry
- perform least cost path analysis using the raster created above as a cost raster
- merge path into single feature and snap the ends (previously centered in the raster cells) to the start and end points
- merge all the features into one shapefile

And for the occasional set of points that were contained within a single bathymetry cell I just used a straight line segment.

If you would like to see my code just comment on this answer, it is too bulky to post here.

  • It's still unclear what you're trying to accomplish. It sounds something like connecting two points with a curve that varies as little as possible in depth. If that's so, there's a simple easy solution (and it points out some of the information your question is lacking): you can subtract a linear trend from the raster to make the net depths at the two points identical. Then just take the segment of the contour connecting those points (if such a contour exists). The problems with this question should now be obvious: you need additional constraints to obtain a unique suitable solution.
    – whuber
    Jun 3, 2013 at 19:26
  • Added diagram to original question to clarify.
    – AlmaThom
    Jun 6, 2013 at 16:34

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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