Select to view content in your preferred language

Select data with a distance

928
11
Jump to solution
09-18-2024 12:47 AM
Labels (1)
ClaudiaGiménez
Emerging Contributor

Hello everyone! 

We are with a series of data and a series of doubts have arisen.

We have a series of points and we want to obtain those points, which are at a distance of less than 0.5 meters, to eliminate them.

That is, if for example I have 3 points: A, B and C. A from B is 0.4 meters away. A from C is 3 meters away. And B from C is 0.4 meters away, I just want to eliminate point A.

So far I have done the following
- Generate a proximity table (Analysis tools > Proximity > Generate Near Table) and NOT set the radius and select the Find only the closest feautre option.
- Join the generated table with my points layer.
- Select by attributes with the NEAR_DIST field.

But when I do this, ArcGIS selects (from the previous case) point A, point B and point C. I attach screenshots. I also know that there is an option to create a Buffer or Select By Location, but I don't know exactly what to do.

Thank you very much in advance.


Claudia

Tags (2)
1 Solution

Accepted Solutions
Eugene_Adkins
Frequent Contributor

I think I have a couple of options. They are a little tedious but not difficult.

Option 1, use the previously discussed buffer process to identify the points within 5 meters of each other. Once identified, use the "summarize within" tool (use the buffered points for the targets) to get a column in the attribute table that provides a breakdown of the number of points that fall within these buffers. Sort this "count of polygons" column in descending order and this will allow you to target the individual points that have the greatest numbers of points within the 5 meter range. From there it will be a manual process of deleting the points that share the greatest area(s) with the greatest number of features. Once you have worked this process on your data for a while, you can then reidentify the points that still fall within the 5 meter range by using the initial buffer process.

Option 2, use the "delete identical" tool by using the "shape" field as your criteria and starting slow by setting your "xy tolerance" to 1 meter. This option also comes with an "enable undo" capability (but I would suggest using copies of the data until you are confident of the results). By setting the "xy tolerance" to 1 meter, you will delete one point (or multiple points) that is within another point. After completing this process, you can then use the tool again to set the "xy tolerance" to 2 meters. This will remove points that are within 2 meters of each other, but it will not affect points outside of this range. After completing these steps you can reuse the buffer process to identify points that still have other points within the 5 meter boundary. By this time, this number of points should greatly be reduced making any manual process much easier to complete.

I hope this helps. The requirement of needing to keep a point (though not designated in any way other than distance) does make situation a little more difficult but I think "slow walking" the process with the "delete identical" tool will make it possible to complete. If I think of something else, I'll reply later.

View solution in original post

0 Kudos
11 Replies
Ed_
by MVP Regular Contributor
MVP Regular Contributor

Hi Claudia, if the points A, B and C are three separate layers then may be try "Select by Location" > Input Features = Point A >  Relationship = Within in distance > Selecting Features = Point B > Search Distance = 0.5 Meters

Ed__0-1726669213779.png

 

Question | Analyze | Visualize
0 Kudos
ClaudiaGiménez
Emerging Contributor

Hi Ed, thank you for your reply. But the points A, B and C are in the same layer.

These points were just an ilustration of what is happening in my layer with 6.000 points. What I want is to eliminate those points (that is contained in one layer) with at a distance of less than 0.5 meters.

Ed_
by MVP Regular Contributor
MVP Regular Contributor

The following may help

 

Point Distance (Analysis)

 

Ed__0-1726672167276.png

 

Question | Analyze | Visualize
0 Kudos
ClaudiaGiménez
Emerging Contributor

Hi Ed, but I don't have that tool, cause it is deprecated. That's why used: Analysis tools > Proximity > Generate Near Table. 

Disclaimer, I will attach screenshot a part of my data, so you can see the amount of points.

Also I clicked the option of: "Find the closest feature", but in fact I want to obtain ALL the points that are within 0.5 meters. (And then eliminate them). I know that there is also the option of selecting "Location" in the tool of Generate Near Table, but I don't exatcly know the maximum number of closest matches. 

0 Kudos
Eugene_Adkins
Frequent Contributor

You mentioned using a buffer so this may help.

Since the points you want to identify are those within 0.5 meters, you can create a buffer of 0.26 meters (which is slightly more than half the desired range for each point) for your points.

Once completed, use the "select by location" tool with the "crossed by the outline" option on the newly created buffered points to identify the buffers that overlap each other. Since the single buffer is 0.26 meters then each buffer from two different points will create a "0.52" buffer between the two. The points that have overlapping buffers will be the points you want to delete.

As I was typing this out it occurred to me you may be able to create a .25 meter buffer and then use the "boundary touches" option, and since .25 + .25 = .5 this may identify the points that are exactly .5 meters from each other ... I have not experimented with this option, but I do know the "crossed by the outline" option works but a buffer of .25 would not create overlapping boundaries between two different points.

You'll get it eventually. Good luck.

0 Kudos
ClaudiaGiménez
Emerging Contributor

Hi Eugene,

First of all, thank you very much, as you said from my original points layer I made a Buffer of 0.25 meters (named Buffer_orig25), and later “Select by location” with the relationship of “Crossed by the outline of”. This way I get all the buffers that are touched and I named the layer as “Buffers_exported”.

Also, with the same layer (Buffer_orig25) I checked the “Select by location” option and with the same relation (“Crossed by the outline of”) I have inverted and exported this selection to get those buffers that are NOT touching. So I have another layer named as: “Buffers_exported_only”.

The problem is that in the layer “Buffers_exported” I want to get and delete those points that are less than 0.5 meters.

For now, I have made “Select by Location” as input the layer “Buffer_exported”, relationship “Within a distance” of 0.25 m, selecting features: “Buffer_exportedonly” and clicking the option to invert the spatial relationship. This way, I have another layer: “Buffers_export025”. This layer is located from “Buffer_exported” to more than 0.25 meters, but the problem is:

as I continue with the layer “Buffer_exported” delete the polygons that are less than 0.5 meters between them and keep those polygons that are more than 0.5 meters from “Buffer_exportedonly”.


I don't know if I explain myself well.

0 Kudos
Eugene_Adkins
Frequent Contributor

Does it matter which of the two points (in your picture) you keep?

0 Kudos
ClaudiaGiménez
Emerging Contributor

Yes, it doesn't matter to take one of the two, (because I don't want to elimiante both so I don't lose too much data) and keep the distance of 0.5 meters. But that also happens with the other case of the image I attached.

0 Kudos
Eugene_Adkins
Frequent Contributor

I think I have a couple of options. They are a little tedious but not difficult.

Option 1, use the previously discussed buffer process to identify the points within 5 meters of each other. Once identified, use the "summarize within" tool (use the buffered points for the targets) to get a column in the attribute table that provides a breakdown of the number of points that fall within these buffers. Sort this "count of polygons" column in descending order and this will allow you to target the individual points that have the greatest numbers of points within the 5 meter range. From there it will be a manual process of deleting the points that share the greatest area(s) with the greatest number of features. Once you have worked this process on your data for a while, you can then reidentify the points that still fall within the 5 meter range by using the initial buffer process.

Option 2, use the "delete identical" tool by using the "shape" field as your criteria and starting slow by setting your "xy tolerance" to 1 meter. This option also comes with an "enable undo" capability (but I would suggest using copies of the data until you are confident of the results). By setting the "xy tolerance" to 1 meter, you will delete one point (or multiple points) that is within another point. After completing this process, you can then use the tool again to set the "xy tolerance" to 2 meters. This will remove points that are within 2 meters of each other, but it will not affect points outside of this range. After completing these steps you can reuse the buffer process to identify points that still have other points within the 5 meter boundary. By this time, this number of points should greatly be reduced making any manual process much easier to complete.

I hope this helps. The requirement of needing to keep a point (though not designated in any way other than distance) does make situation a little more difficult but I think "slow walking" the process with the "delete identical" tool will make it possible to complete. If I think of something else, I'll reply later.

0 Kudos