I have a global grid of points in the ocean and need to calculate the distance to and identify the closest 10 polygons along the coastline for the entire world while also avoiding crossing land.

For example, in the Figure below, the circled point would not include the green line distance. Instead the distance would consider going around the peninsula.

Near table produces the type of output I need but calculates distances without consideration for whether the path crosses land.

I also tried cost distance by creating a raster of the land at high cost and ocean area at low but if my understanding is correct, that type of analysis is limited to between just two points and the output isn't distance, it is a distance raster.

I have roughly 40,000 ocean points and polygons buffered around 1 degree of coastline. I need to find the 10 closest polygons for each point.

enter image description here

  • Is there a cut-off distance beyond which a polygon is not considered? – Kirk Kuykendall Dec 5 '16 at 19:46
  • Yes - 13 degrees – KristaR Dec 5 '16 at 19:57
  • This is linear reference task, the question is how wisely convert polygons to line. – FelixIP Dec 5 '16 at 20:20
  • 1
    Should the distance line "bend" around the land, or should polygons that can't be reached by straight line simply be ignored? I think the former, because you mentioned "going around the peninsula". So, you tried cost distance, but did you try least cost path? – Son of a Beach Aug 20 '20 at 5:19

I think an untested answer to this may be to include steps something like:

  1. Run Near to find the N closest polygons
  2. From the points and the polygons that they are near create a line feature class that connects them
  3. Use the ocean polygon to (Un)Select By Location any lines from 2. that overlap the ocean
  4. Reassess how close you are to your desired result

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.