5

For my purposes, I can assume a homogeneous distribution of points within the polygon. What I want to find is the average distance from points within a polygon to a specified point. I don't know where to start and have found similar info online but nothing exact.

Ideally, I would like to do this for an entire Thiessen polygon layer. I have many polygons and a layer with one point in each polygon, and within each of those I would like to find the average distance to the point.

For example:

Within a country, what is the average distance one must travel to reach the Capitol? It can be assumed that people are evenly distributed throughout the country.

5
  • How do you want to handle non-convex polygons? Commented Jul 3, 2013 at 21:27
  • well, points inside a polygon is continuous distribution, do you have fixed number of points inside polygon? for the comment above, you mean cross boundary? in the case are you looking for a convex hull before you do math? curious!!
    – Naresh
    Commented Jul 3, 2013 at 21:29
  • You may want to consider posting this to Mathematics Stack Exchange. Also, are you after average "as the crow flies" distance or by road, etc?
    – PolyGeo
    Commented Jul 3, 2013 at 22:05
  • 2
    Neither convexity, "continuity" of the distribution, nor the metric make any material difference in this question: the solution method remains the same regardless.
    – whuber
    Commented Jul 5, 2013 at 13:30
  • @PolyGeo for this I am only interested in the Euclidean distance "as the crow flies", though a solution accounting for a network would be welcomed (as I may need to do this in a few months). I will post the question on the Stack Exchange in the hopes to find a mathematical solution. It would be ideal to have such a solution. Commented Jul 5, 2013 at 19:12

4 Answers 4

3

I assume this:

  • point layer ("Capitol")
  • your polygon layer is a thiessen polygon layer created from “destination”
  • start points (= "people") are distributed at the same distance. E.g. you have one people per square meter
  • calculated distance = Euclidean Distance (not by road)

You can use raster calculations to get the “average distance”. Here are the tools you use with ArcGIS Spatial Analyst:

Step 1: Euclidean Allocation

Use your point layer (“Capitol”) as input to create an allocation raster layer. This is the same as your thiessen polygons.

enter image description here

Step 2: Euclidean Distance

Use your point layer (“Capitol”) as input to calculate the distance from each pixel (=people) to the nearest Capitol.

enter image description here

Step 3: Zonal Statistics as Table

Summarizes the values of a raster (distance from step 2) within the zones of another dataset (allocation from step 1) and reports the results to a table.

3
  • 1
    +1 An easy variant of this is to weight the integrals by a population density grid, obtaining the mean (Euclidean) distance traveled by a given population. One can go even further and use a travel-time grid instead of a Euclidean distance grid: the procedure remains the same.
    – whuber
    Commented Jul 5, 2013 at 13:27
  • Thank you this is exactly what was desired. I have run into a slight problem with edge behaviour. Many times I will be dealing with small networks that may have as few as 10 nodes, and I must calculate for a distance beyond the extends of the network. With the Euclidean Distance function, how may I include distance calcuations for the points that lay just beyond the extents of the outer points? (The 'maximum distance' field in the Euclidean Distance function doesn't seem to be helping.. Commented Jul 5, 2013 at 19:02
  • 1
    That's because you're using a default raster analysis extent, David. You need to specify the extent of the output rasters explicitly before computing them.
    – whuber
    Commented Jul 26, 2013 at 19:19
3

Mathematically speaking you want the integral of the distance function over the polygon, divided by the area of the polygon.

Doing it with raster GIS will approximate the integral as a sum, which is good enough if your raster is fine enough.

To do exactly you might have to divide your polygon region into triangles and work out the analytical result for a triangle, then average over those...

3
  • 1
    +1 A very long time ago I worked out the triangulation formulas. They are messy :-). (BTW, the averaging has to be an area-weighted average.) The only instances in which they might be seriously considered would be for polygons which are so small or tortuous and the grid resolution is too coarse to provide a good representation. Also, triangulation-based formulas for spherical polygons probably are not ever needed: just use an equidistant azimuthal projection centered at the point of interest.
    – whuber
    Commented Jul 5, 2013 at 13:20
  • I would prefer to do it mathematically, but unless there is an equation easy to work with I think I will have to use a workflow in Arc like Lens posted above. It's a shame they're not all perfect circles! Commented Jul 5, 2013 at 17:41
  • 2
    As an example of how messy it can get, consider the very simple case of the average distance from the point (-e,0) (where e is any positive number) to the triangle with vertices (0,0), (1,0), and (1,1). One formula is (2 (-e sqrt(1+e^2)+sqrt(2+e (2+e))+e sqrt(2+e (2+e)))-arcSinh(e)+arcSinh(1+e)+(1+3 e (1+e)) log((1+Sqrt(2+e (2+e)))/(1+e))+e^3 log((e (1+sqrt(2+e (2+e))))/((1+e) (1+sqrt(1+e^2)))))/3.
    – whuber
    Commented Jul 26, 2013 at 19:31
-1

See:

Greulich, F.E. 2003. Airtanker Initial-Attack: A Spreadsheet-Based Modeling Procedure. Can. J. For. Res. 33(2):232-242.

for a very general procedure.

1
  • 3
    We don't really do "answers by reference" - can you at least add a short summary from the report on what the process looks like?
    – BradHards
    Commented Jun 20, 2017 at 4:53
-2

Build the shortest path map from the Capital and compute the area of each cell (feel free to ask for clarification)

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.