How to find proximity of points within same feature class?

2810
8
04-03-2013 07:59 AM
RickBombaci
New Contributor III
I have a point feature class called "weeds." The feature class contains multiple species. I need to identify (and ultimately combine) points that are A) of the same species and B) within 100 feet of each other. Points that are within 100 feet of one another but are different species can be ignored. Any ideas?

Thanks.
8 Replies
JoelCalhoun
New Contributor III
If you have an "Advanced" license level you could take a look at the Generate Near Table tool.

Just a note from the help:

�?�Both Input Features and Near Features can be the same dataset. In that case, when the input and near features are the same record, that result will be skipped so as not to report that each feature is 0 units from itself.

�?�The input features can be a layer on which you have performed a selection. The selected features will be used and updated during the execution of the tool. The remaining features will have the values of the newly created fields (such as NEAR_FID and NEAR_DIST) set to -1.



I hope this points you in the right direction.
RickBombaci
New Contributor III
Thanks, Stringtheory. That is helpful. I still have to figure out how to exclude dissimilar species. There are enough different species that I want to avoid having to break them out into separate feature classes. I wonder if sub-types might be useful here? I'll work on it some more. Thank you for pointing me in a useful direction.
0 Kudos
curtvprice
MVP Esteemed Contributor
I still have to figure out how to exclude dissimilar species. There are enough different species that I want to avoid having to break them out into separate feature classes.


There's really no reason to do that, as if you supply a layer as input to a tool, in most cases only the selected features are used.

You may be able to get what you need just by selecting each species one at a time and running the Point Distance tool. You could do this in Model Builder with an iterator, running Point Distance for each unique species.
0 Kudos
DanLee
by Esri Regular Contributor
Esri Regular Contributor
You said "ultimately combine". If you meant to make polygons from the points, you can make a selection by attribute and then run Aggregate Points; specify distance 100 ft.
0 Kudos
RickBombaci
New Contributor III
Thanks for your suggestions, folks. Tomorrow I will be testing the model builder iterated approach, will report back. And yes, I do want to ultimately convert some of these closely proximate points into polygons, so thank you for the suggestion re: Aggregate Points.
0 Kudos
RickBombaci
New Contributor III
Update:  I have been able to get close to where I want to be.

Goal:  Create polygons around points which are of the same species and within 100' of each other. Polygons may contain 2 or more points. Multiple species are interspersed, so a polygon for species X may 1) overlap points for other species, 2) overlap other polygons which were generated for those other species. Each point that contributed to the generation of a given polygon will have in its attribute table a reference to the ID of that polygon. However, if a point is overlapped by a polygon of a different species, it should not reference that polygon in its attribute table.

Status:  I have been able to use the Generate Near Table tool to identify points within 100' of each other. I then created a buffer, using the dissolve feature to create separate buffers for each species. I then exploded the buffers so that each cluster of points had its own polygon surrounding it. So far, so good.

Issue:  I am now at a new sticking point. I want to identify which points "belong" to each polygon. Some points lie within polygons but don't belong to them because the points are of a different species than the points that contributed to the generation of the polygon. Some polygons of different species overlap, so that some points lie within two different polygons, even though belonging to only one of them.

The problem is, if I do a spatial join of points to polygons, ArcGIS grabs the info from either polygon, so I can't be sure that a given point is related to the proper polygon. If I do a spatial join of polygons to points, ArcGIS grabs the info from whatever point is "closest" to the polygon, whether or not the point belongs to the polygon. So no matter which way I perform the join, I can't trust ArcGIS to have joined polygons to the points that generated them.

How can I get the proper polygons' identifier into the attribute table for the points, but only if the point belongs to the polygon?

Much head scratching here.

Thanks for any ideas.
0 Kudos
RichardFairhurst
MVP Honored Contributor
The problem is, if I do a spatial join of points to polygons, ArcGIS grabs the info from either polygon, so I can't be sure that a given point is related to the proper polygon. If I do a spatial join of polygons to points, ArcGIS grabs the info from whatever point is "closest" to the polygon, whether or not the point belongs to the polygon. So no matter which way I perform the join, I can't trust ArcGIS to have joined polygons to the points that generated them.

How can I get the proper polygons' identifier into the attribute table for the points, but only if the point belongs to the polygon?

Much head scratching here.

Thanks for any ideas.


What is wrong with the Join One-To-Many option for Spatial Join?  As long as there is a species attribute in both the polygons and points you spatial join you can  easily select the set of resulting records that had a match.  Just extract those points or polygons from the result when you are done and disregard the rest.  Then do what ever additional analysis you want to do with the extracted feature set.  Since the buffers contain the original point's id value you can also eliminate self intersecting polygon/point combinations in those results from the extracted set.

You probably can do it in a single Spatial Join using the point data with a copy of itself using a 100 foot tolerance.

Or possibly dissolve the original buffer polygons using the species attribute as the unique value and uncheck the multi-part feature option to create separate contiguous polygons that are all for the same species and then run the spatial join to the points and do the above.
0 Kudos
RickBombaci
New Contributor III
Thanks, rfairhur25,

The Identity tool that you alluded to was just the ticket. Thanks very much for the help!
0 Kudos