[GIS] How to Generate Points on Corner of Polygon Only

arcgis-desktopland-surveyvector-grid

I have a polygon layer made up of grid cells, illustrating a survey system:
enter image description here

I'm trying to create a point on each corner of the polygon. I've used a geoprocessing tool called "Feature Vertices to Points" in ArcGIS, but what it does is create a point for each vertice:

enter image description here

Is there a tool out there that will allow for the creation of corner points?

Please note this is a small subsection of the survey grid that I clipped out to run a proof of concept.

What I'm basically trying to do is create these points of this grid (which was created many years ago) and then apply the same methodology to the latest version of the survey grid, which is based off of NAD83, to see how much and where the grids have shifted.

The differences in the grids are important when determining how measurements change when it comes to locating buildings, wells etc.

Best Answer

Solution One: Polys to Lines then Points

Based on a test I just ran, I suggest a process of first running Feature to Lines on your grid, and then running Feature Vertices to Points on the generated lines with a point type of BOTH_ENDS. Follow that up with a delete duplicate because there will be 8 points at every interior intersection and 4 on the exterior. The solution isn't perfect however.

enter image description here

First, it makes the assumption that your grid is topologically correct - adjoining cells in the grid have exactly the same vertices in the same places. If not, this may fail. I ran a test with a grid created by fishnet (hence no extra vertices), as well as by drawing a three cell, topologically correct 'grid' shown in the image. In both cases Feature to Lines created line segments that ran from one cell corner to the other - they were not broken up by intermediate vertices if present. If the cells aren't topologically correct, cell sides may generate multiple line segments and you end up with extra points/vertices.

Second is the big catch - it will only work on the interior lines. The north and west sides of the top left cell will be considered a single line. So in the next step, Feature Vertices to Points with end points, the corners of the overall grid won't get points (as those corners aren't ends.) In the image, the bright green dots are the result of FVtP. Note that there are only three lines around the outside of this 'grid' - the top half, and the bottom two quarters. Hence there are no points at the outside corners, because they are not the starts or ends of lines.


Alternative solution: Spatial Join.

Go ahead and run your Feature Vertices to Points on your original grid. As you noted, it creates a bunch of extra points that aren't at the corners. Take those points and Spatial Join them to themselves with a one-to-one relationship and using intersect as the method (possibly with a small search radius). Not only do you have points where you don't want them, but you have multiple points on top of each other because your cells have overlapping edges. But this works to your advantage here.

Once joined, open up the attribute table and you'll see a join count column. Any point that doesn't have four or greater in that column is not a corner point (because it would have come from a vertex shared by only two polygons, so there's be only two points to join). Only points with a count of four or eight (as noted in the first paragraph of the answer) are the points you're looking for. Once you delete all the others with lower join counts, you can run delete duplicate on the remaining points to get down to one point per corner.

Related Question