How can I assign attribute IDs to points in an 85000 point spread according to a grid scheme?

I am working on a pretty complicated grid system and cannot figure out a way to name each of the points in my shapefile.

The X of the grid originally started with A and ended with AX. We have since had to broaden it both east and west to include YE through ZZ, then A through CT (so 146 columns in the grid). The Y of the grid is 1 through 147.

To further complicate things, there is a great deal of overlap with the points that meet at the vertices of the grid. This is because we have to name each corner of the square according to the grid AND the cardinal direction (e.g. A1_SE, which overlaps with B1_SW, A2_NE, and B2_NW). Each of these will be associated with the projected coordinates (e.g. A1_SE at 700000, 300000).

I have tried playing around with some excel formulas, autofill lists, etc, but cannot figure out how to assign these IDs. I am using ArcGIS 10.3 and don't yet have experience with python and extremely limited experience with R.

A simpler question: How can I populate the attributes of the grid squares (in the polygon shapefile) with the grid name info? e.g. A1, ZX146, CD56

• So all of the points you're talking about are the corners of the grid, nothing in between? And any interior corner will have four points in the same location? Assuming grid cells are named, I'd start by taking a look at Calculate Adjacent Fields. From there, Feature Vertices to Points. After that, add X and Y fields to the points, and calculate geometry to fill those values. From there you should be able to get what you want with concatenating field calcs, and possibly some joining between datasets. Commented Jun 8, 2015 at 9:48
• Alternatively, FVtoP and add X/Y fields, then look at comparing XY values - four points should already have cell name, just need the cardinal. Of a quartet, min x is W, max x is E, min y is S, max y is N. You can calc it all at once or do N/S in one field and E/W in another, then concatenate. Basically, rather than trying to label a point with everything in one go/formula, break it into components (which may be easier to get individually) and then concatenate to the final string. Commented Jun 8, 2015 at 9:56
• Correct, all the points are at the corners. The four corners of the overall grid only have one point, since they don't overlap with anything. The edges of the overall grid have two points each, as two grid squares overlap there, and all interior points have four points because four grid squares overlap there. Ah yes, it would make sense that concat is the way to go. Can I use Calculate Adjacent Fields if I already have all the points with XY coordinates in a point shapefile though? Commented Jun 8, 2015 at 12:34
• No, that tool will only work with a polygon grid. I suggested it because it creates attributes that have NE/SW/etc. values, although they are for the neighbors as opposed to the cell the attributes are on. I didn't have an example in front of me but I figured there might be a way to use those attributes with some field calcs, but perhaps not or it may be more trouble than just evaluating x/y values. It was a 4am idea. You also might explore ian's custom tool discussed at gis.stackexchange.com/questions/132797 Do you want four points, or just one with four cell corner attributes? Commented Jun 8, 2015 at 19:10
• Ah, I see, thanks. Tried to take a look at Ian's toolbox, but the link doesn't appear to work on my end, sadly. The idea was to indeed have four points, but now we might just simplify things. At this rate, if I can simply use the polygon grid that I created and populate the ID field with the corresponding grid (e.g. A1, BZ129). I'm having trouble finding a solution for that as well though. Looking at attribute assist, and editing a grid template for Make Grids and Graticules Layer. Does that make sense? Commented Jun 9, 2015 at 12:04

1 Answer

Here's a link to download the Create Grid Corner Points tool

View the source code: click me

Basically, for each polygon it gets it's extent, and then finds which vertex is closest to each corner of the extent. This really only works well for squarish shapes. It would not work on something shaped, for example, like a diamond.

The output point feature class will have a field called PolygonOID which contains the OID of the polygon it was created from. It will also have a field called Position which contains the cardinal direction in relation to the polygon.

I'm hoping you'll be able to join the point feature class back, and then field calc the rest. Honestly, an image would better help me understand what you're truly after though.

Here's a screenshot of the parameters:

• Thanks a bunch, Ian! This tool works wonderfully. I was actually able to get my hands on a python script that did the job of assigning grid names to each of the polygons in the fishnet. Now I am grappling with attaching those grid names to the output from this tool, which doesn't seem as simple as joining the PolygonOID with the IDs from the polygon shapefile. Commented Jun 10, 2015 at 10:38
• @rgardnercook I guess I don't completely understand what you have. Maybe edit this question, or start a new one with some images to better illustrate your data? Commented Jun 10, 2015 at 15:03