Take the 2-minute tour ×
Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. It's 100% free, no registration required.

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.

If you are confused by my question, here's an 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.

share|improve this question
    
How do you want to handle non-convex polygons? –  Kirk Kuykendall Jul 3 '13 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 Jul 3 '13 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 Jul 3 '13 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 Jul 5 '13 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. –  David Giacomin Jul 5 '13 at 19:12
add comment

2 Answers

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.

share|improve this answer
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 Jul 5 '13 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.. –  David Giacomin Jul 5 '13 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 Jul 26 '13 at 19:19
add comment

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...

share|improve this answer
    
+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 Jul 5 '13 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! –  David Giacomin Jul 5 '13 at 17:41
1  
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 Jul 26 '13 at 19:31
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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