I have global point data of marine species along the coast. I would like to measure the distance between the two closest points but this distance needs to be measured in the sea and not on the land mass. Attach is an image that may explain my point. I am using ArcGIS 10.6.

enter image description here

| improve this question | | | | |
  • 2
    Possible duplicate of Measure shortest distance around polygon – JimT Aug 20 '18 at 8:44
  • 2
    Solution in above post is wrong. – FelixIP Aug 20 '18 at 19:20
  • There's a paper that explains the concept of sea distance using Dijkstras method. Furthermore there's a link here which discusses a similar solution and provides code. – JimT Aug 20 '18 at 20:34
  • Hi Felix, Is there any tool in ArcGIS that can do this analysis instead of running the script? – Rakhshan Roohi Aug 24 '18 at 1:08

The following may help. Derive a raster where land contains a NoData value (eg, reclassify). Below, the white area has a raster cell value of "NoData" and this represents land. The yellow point is the origin (or source) feature.

enter image description here

Use the Path Distance tool to derive distance radiating from this origin point. Note how it curves around the NoData cells.

enter image description here

Then use the Cost Back Link tool to derive a backlink surface. This uses the same origin point.

Finally, run the Cost Path as Polyline tool to derive the path that will provide the distance value. Use the second point, your destination, as the feature destination data. The feature class's attribute table will contain the distance value.

enter image description here

You may have to set Environments>ProcessingExtent to ensure your whole area is processed while using the various tools.

| improve this answer | | | | |
  • Thank you very much. Seems like it can solve my problem. I will try and update you. – Rakhshan Roohi Sep 19 '18 at 21:39

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.