I'm working on a project in which I'd like to calculate the distance from specific locations within a city (points) to the nearest body of water (polygons) following the path of the wind (direction).

I am using ArcMap 10.5 Desktop and the only related solution I can find is the Near tool in the Proximity toolset.

However, while this tool can output the direction of the nearest feature, it does not allow you to specify the direction in which you would like to calculate distance.

Does anyone know of a tool or workaround that I could use to do this?

  • Create a line segment starting at the point going in the required direction that is long enough to hit any water polygons in your polygon layer, then do intersections and find the nearest... Not sure how easy each of those steps is in either GIS. Is the direction a constant for each point or does the wind direction vary by point? I could probably do it in Python for QGIS (or in R....). There may already be a plugin... – Spacedman Jun 21 '19 at 16:23
  • The wind direction is the same for each point. – Grace Jun 21 '19 at 17:24
  • If you wish to ask also about QGIS then please do that in a separate question. – PolyGeo Jun 21 '19 at 21:38

If you have an 'Advanced' license of ArcMap you can use the 'Generate Near Table tool' and select the Angle option, from the output table you can then use the 'Select by Attribute tool' to select the angle representing the direction.

  • N = 0
  • NE = 0.1-89.9
  • E = 90
  • SE = 90.1 - 179.9
  • S = 180
  • SW = 180.1 - 269.9
  • W = 270
  • NW = 270.1 - 359.9
| improve this answer | |

Unfortunately, I do not have an Advanced ArcMap license, so I could not use the Angle option in the Generate Near Table tool. However, I did find a work around, which (sorry for the major delay) I'm posting here in case someone else finds themselves stuck in the same situation. Here are the steps:

  1. Use the Bearing Distance to Line tool to create a polyline layer with lines that extend off of the points in a specified direction. Make sure to identify the "ID Field" to carry over the unique identifier from the point layer to the polyline layer.
  2. Use the Erase tool to remove the line segments that overlap the polygon layer you are attempting to measure distance to.
  3. In the Advanced Editing toolbar, planarize all remaining lines.
  4. Select by Location to select all lines that intersect the points layer.
  5. Invert the selection and delete all lines that do not interest the points layer.
  6. Use Calculate Geometry to calculate the length of each final line segment - this is the distance from the point to the polygon. These values can then be joined to the original point layer.

Perhaps this is a bit of a tedious process, but for those of us without the Advanced license, it does the job.

| improve this answer | |

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.