Are Multiple Ring Buffer Boundaries Inclusive or Exclusive?

4133
20
03-23-2016 11:10 AM
DonaldLund
New Contributor II

So if you have Multiple Ring Buffer boundaries defined at say 20, 50, and 100 miles, which 'Ring' does a point at exactly 50 miles fall in? Are the boundaries inclusive or exclusive limits? I have scoured the internet for an answer and cannot find a single post that addresses this.

Thanks in advance for your comments.

0 Kudos
20 Replies
DanPatterson_Retired
MVP Emeritus

Darren, if you are using a select by location on those rings (assuming they are non-overlapping here) have you tried other rotation angles (fractional works best) to see if the ring is using some hidden 'tolerance' in its selection.  Also, a calculation of the area of the ring inside a gdb and outside (shapefile) would give some clue as to the true geometry of the 'circle' n-gons will yield area less than expected based on the number of sides used to represent the circle.

PS

if your suspicion of the 2nd classification scheme being the case, this should be noted in the help topic. I will flag it for clarification

0 Kudos
ChrisDonohue__GISP
MVP Alum

<Add Muddy Water>

Also, won't a shapefile potentially provide a different result than a geodatbase, as the rings are not parametric curves in a shapefile (instead they are composed of many tiny straight line segments)?

(I'm not sure on this)

Chris Donohue, GISP

</Add Muddy Water>

0 Kudos
DanPatterson_Retired
MVP Emeritus

are they true parametric rings or just calculated on an add need basis.  I haven't seen the output of the geometry exported to some 'useable' format... at least with shapefiles, the n-gon representation was there and could be played with as could that for the ellipse.  I test using euclidean calculations in situations of simple geometry constructs rather than using selectbylocation tools/code/methods or equivalent.  This works easily for regular geometry, from triangles,rectangles, pent*, hex* n-gon circle and ellipse etc.

0 Kudos
DarrenWiens2
MVP Honored Contributor

Here's another way that indicates that the boundaries are identical:

>>> point = 'mypoints' # a point
... pt_geom = [i for i in arcpy.da.SearchCursor(point,'SHAPE@')][0][0] # get geometry
... buff = pt_geom.buffer(20) # buffer point by 20m
... buff_line = buff.boundary() # convert to line
... ring_buffs_fc = 'buffs' # premade multiple ring buffers (10-20m, and 20-30m)
... ring_buffs = [i for i in arcpy.da.SearchCursor(ring_buffs_fc,['SHAPE@','distance'])] # get geometries
... mypoints = [] # points container, otional
... counts = [] # counts list
... reps = 100000 # how many times to test
... for i in range(reps): # start looping
...    new_point = buff_line.positionAlongLine(float(i)/reps,True) # create point at percentage along buffer line
...    count = 0 # reset counter
...    mypoints.append(new_point) # add point, optional
...    for ring_buff in ring_buffs: # test against ring buffers
...        if not ring_buff[0].disjoint(new_point): # see if disjoint
...            count += 1 # add to count
...    counts.append(count) # add count to list
... print (min(counts),max(counts)) # print min/max
... arcpy.CopyFeatures_management(mypoints,r'in_memory\points') # write points, optional
...
(2, 2) # each and every record intersects 2 ring buffers
DanPatterson_Retired
MVP Emeritus

Darren, I presume a spatial reference was defined for the layer since geometry errors have been noted when one isn't set (written on many times).  I know what you are doing, but I will try yours against, exporting the buffer (aka.... circle) geometry and do a center to point on circle geometry.  If this is done on a shapefile, then you get 'hit' points where the buffer is exact, but the interpoint shape is determined by a straight line, hence an n-gon.  So if you do a 'within' or 'on' distance calculation it will fall short unless the distance is calculated to a 'hit' point.  I haven't experimented yet with gdb featureclasses, so I am worried about positionAlongLine and how it operates.  Does it generate the location from the equation of a circle? or are points pre-generated to define the shape..therein lies my question.  Something else to add to the list.   In any event, if the point does lie on the boundary of two shapes, that should be reported differently than 'within' or 'on', ... perhaps 'shared' would be better in keeping with classification principles, since the rings should represent locations on a continuum.  thanks

0 Kudos
DarrenWiens2
MVP Honored Contributor

In my example above, if I calculate the distance between the points generated along the buffer line (20 m) to the original center point, they range from 19.999999999553737 to 20.000000000465356. However, they still "intersect" both geometries according to the software. I see what you're saying about n-gons, but if the software doesn't recognize it and the precision of the data almost certainly doesn't support it, then splitting hairs exactly with math doesn't do much good. Whether or not the buffers are true circles or n-gons, points falling on the boundary belong to both.

DanPatterson_Retired
MVP Emeritus

Thanks Darren for the additional information.

Most aren't interested in the geometry and its implications... therein lies my interests.

Fuzzy boundaries would be a nice addition to vector world as they have added, to some degree, in raster world An overview of fuzzy classes—Spatial Analyst module | ArcGIS for Desktop

It opens up a whole new realm of questions that can be addressed in vector world that are now addressed solely in raster world.

0 Kudos
DonaldLund
New Contributor II

This is EXACTLY what I'm talking about, wondering about, trying to do. I will do some analysis with my data set tomorrow to try to validate, although I suspect the likelihood of a floating point distance landing exactly at 50 miles, for example, is astronomical. One might have to test with a bogus data set to get conclusive results.

JoshuaBixby
MVP Esteemed Contributor

Looking over the original question, I have some questions on terminology.

  • "Ring Buffer boundaries"
    • By "ring", I assume you mean LinearRing.  Then you mention "buffer", which gets us into Polygon realm.  Then you mention "boundaries," which gets us back to a LinearRing.  So what exactly are you asking about,  a Polygon or a LinearRing?
  • "which 'Ring' does a point at exactly 50 miles fall in?"
    • Fall in?  That isn't really a standard term.  Do you mean intersect, within?  There are quite a few standard spatial predicates, "fall in" isn't one of them.
  • "Are the boundaries inclusive or exclusive limits?"
    • Is this focused on the boundaries of a Polygon or LinearRing, both have boundaries.
    • For geometry models that support OGC simple feature standards, the DE-9IM topological model describes the type of nuanced situation you are putting forward.  That said, Esri's spatial predicates don't line up exactly with the DE-9IM in all cases.

I don't mean to get hung up on semantics, or sound pedantic, but being precise matters when talking about specificities like this question.  Additionally, there isn't one universally correct answer.  Different geometry models or geometry implementations can treat edge cases differently, so it is important to frame the question in the context of the geometry model you are interested in.  Since you are posting on GeoNet, it is likely Esri's ArcGIS Desktop geometry model, but even that is complicated by Esri supporting OGC simple features.

DonaldLund
New Contributor II
  1. Polygons
  2. Yes, intersect with
  3. Yes, I am using ArcGIS Desktop

Basically, what I'm trying to ascertain is this: does a point at exactly 50 miles get assigned to and counted as a member of the 20 to 50 mile buffer, the 50 to 100 mile buffer, or both, when you spatially join a layer of xy data with a layer of multiple ring buffers.

Thanks

0 Kudos