Finding the furthest point location from the edge inside a polygon.

1485
13
04-12-2021 07:06 PM
Labels (1)
The_Claw
New Contributor II

Is there a way to find a point or points (such as rectangle) inside a polygon that is the furthest from the edge of the polygon?  Centroid and centroid inside don’t work.

An example of what I’m wanting to do is:  I own a parcel of land and want to build a house as far from the property lines as possible, how can I find this point?

I'm using ArcGIS Desktop 10.6 advanced with access to the extra extensions.

I would think this would have multiple uses but haven't been able to search and find any info on a way to do this.

This is my first post, hopefully it is in the right place.  Thanks

13 Replies
DanPatterson
MVP Esteemed Contributor

Centroid is the center of mass and should meet your condition if you have convex polygons, including a rectangle.  

What example did you find that this was not the case?

Addendum

For concave polygons, the "thickness" may approximate what you are looking for, but it has a limited scope in complex concave polygons

How Zonal Geometry works—ArcGIS Pro | Documentation


... sort of retired...
The_Claw
New Contributor II

Thanks for responding in the snapshot below you can see where centroid places the points.  I tried a few different ways at creating centroids.  In a circle or a rectangle it gives a point that is equidistant from the sides but in all other complex polygons it does not give a point that is furthest from an edge.  An inverted buffer is about the closest I could get to what I was searching for but is not the actual solution I'm looking for.  Thanks again.

The_Claw_0-1618281175168.png

 

0 Kudos
DanPatterson
MVP Esteemed Contributor

circle and rectangle are correct

the one in the middle is probably as close as you are going to get... it looks like an inscribed circle would yield centroids similar to the two points in the middle.

 

The two on the right are what my addendum was referring to... zonal geometry with the "thickness" option.

You would have to use a really small cell size.  It will effectively find an inscribed circle and find the centroid.  It represents the farthest distance.  Fot the tow right one, that would be on the upper portion.  For the bottom, flipped C, it would be on the bump-up on the lower branch... since it appears that the inscribed circle would be greater than in the other corners.

If this are parcels of land you are considering buying, I would skip the two on the right.  As for the circle, fencing would be a real pain.  The rectangle is popular and the one in the middle.... well, it is just interesting :thinking_face:


... sort of retired...
The_Claw
New Contributor II

I'm looking into the zonal thickness as it seems to give an accurate internal buffer distance of the greatest possibly value from the perimeter.  Maybe with a few more steps I can get closer to what I'm looking for.

I'm surprised there isn't an easy answer.  It seems like this query would have lots of real world applications that others would want to use.  Especially military.  I have a range and want to test munitions as far as possible from any other encroachments...etc....

Thanks again for your help.

0 Kudos
DanPatterson
MVP Esteemed Contributor

The only other options which yield similar results are to derive the medial axis of the polygon (vector processing) and roll a circle along it, stopping at the thickest point.  The raster approximate equivalent ..."thickness" approximates this


... sort of retired...
0 Kudos
DanLee
by Esri Regular Contributor
Esri Regular Contributor

The following workflow can get you close:

  1. Run Multiple Ring Buffer tool with a list of negative distances on your input parcels. The values in the list could be -1, -3, -5, -7, -10, - 20, -40, -60, -80, - 100, -120, -140, etc. The idea is to “shrink” each parcel polygon to a “central” area. The smaller the distance intervals are, the better accuracy will be achieved. Let’s call the output parcel_mBuffers.
  2. Run Summary Statistics tool on parcel_mBuffers with ORIG_FID as the Case Field and specify “distance” field as the Statistics Field and “MIN” as Statistic Type. Name the output parcel_mBuffers_statsDIST.
  3. Run Join Field tool to transfer MIN_distance from parcel_mBuffers_statsDIST to parcel_mBuffers through the common ORIG_FID fields.
  4. Use Select Layer By Attributes to select the most inner buffers from parcel_mBuffers by the expression “distance = MIN_distance”. Now, any location inside a selected feature is farther away from the boundary of its containing parcel than anywhere outside the selected feature.

If you want one location for each parcel, run Feature To Point tool on the selected features with the Inside option. The result should be very close to what you need.

The_Claw
New Contributor II

I'll give this a shot.  I actually have over 300 polygons I'm attempting to find these interior points on and they range in size from 1,000 acres to over 500,000 acres.  I'll see if there is anyway to batch these or come up with a system using the zonal thickness to narrow down the buffering.  Looks like it will be some work.

Thanks

0 Kudos
DanLee
by Esri Regular Contributor
Esri Regular Contributor

I wondered about the size range of your parcels. You can narrow down the buffering by:

a. Starting with relatively "large" negative distances, say -1000, - 2000, -3000, etc. to run Multiple Ring Buffer on all parcels. Large and wide parcels will get the buffers while other parcels will be skipped.

b. Use the steps I described above to identify the most inner/central polygons (or points) for these parcels.

c. Use Select Layer By Location to select original parcels that contain the identified central polygons (or points) and invert the selection. Now you have the smaller parcels to process.

d. Repeat the above with relatively "smaller" negative distances, e.g. -100, -200, -300, etc. on the selected parcels. If Multiple Ring Buffer still skips features (see processing messages), finish the steps for identifying the inner polygons/points for this round and repeat the process with reduced distances, -5, -10, - 20, etc. for the remaining parcels.

Note: after the second round, if there are still remaining parcels to process, you would need to Append the identified inner (central) polygons to those identified previously. Then select parcels that contain them and switch selection to get the remaining parcels for processing.

With 3 iterations, you can cut down the total buffering time a lot already. You can put the steps in a model or script. Run it with a different list of buffer distances each round. Hope that's worth the trouble.  :)

ThomasHoman
Occasional Contributor

Good Morning,

Any thoughts on doing a buffer on the parcel with a negative value. Many locations might have a 20 ft setback or similar so entering -20 ft would give you the smaller useable footprint. Trying to get to single point would only be relevant for a very small structure like a birdhouse ;)

Just a thought.

Tom Homan

Gila County GIS

0 Kudos