If I have the grid below, which consists of 4,000 squares, how could I aggregate the squares such that I end up having 1000 larger squares, each of which contains 4 of the original smaller squares, without overlapping?

enter image description here

  • 1
    Create rotated fishnet of relevant size, join original (has centroid) to it and dissolve. Valid if nrows ℅ 2 == 0
    – FelixIP
    Feb 6, 2017 at 18:34
  • 3
    I would try to generate a new fishnet, with the correct cell size, origin and rotation angle. If the new fishnet linework doesn't match exactly, you might be able to Snap it to the 4000 polygon version.
    – klewis
    Feb 6, 2017 at 18:40
  • is the vector grid aligned to a coordinate grid? having consistent x and y coordinates along the grid would be helpful in grouping/dissolving. or if there are row and column attributes in the vector grid
    – TDavis
    Feb 6, 2017 at 20:34
  • Use the centroids of the smaller cells to associate them to the parent tessellation (aka spaghetti and meatball approach).
    – Vince
    Feb 6, 2017 at 20:45

1 Answer 1


If your grid is aligned to a coordinate system, and the x coordinates along the vertical edges of the grid are the same, you could try the following. 1)run 'feature vertices to points' to make a point at every intersection 2)filter out(delete) every point in an odd numbered column or row, so that you are only left with points that correspond with the center of your 4 squares 3)add an attribute field giving a unique value to each point (copy from the FID value if needed) 4)conduct a spatial join on your vector grid squares to the point layer, so that the unique value of the closest point is assigned to each square 5)now that each 4 square cluster has a shared value, run a dissolve using that field, and you will have 1000 larger squares.

  • *add in step 1a) calculate geometry in the attribute table to add x and y coordinate fields
    – TDavis
    Feb 6, 2017 at 20:58
  • if it is not aligned, after step 1 above, create a subset (export data) of the first row of points, and a separate one for the first column of points. run a spatial join of the full set of points against both of these subsets to derive a nearest distance value (near_x and near_y or something) and join the two generated layers so you have a layer with all points, and two distance fields for each point. use these values in place of coordinates to proceed with the remaining steps
    – TDavis
    Feb 6, 2017 at 20:58
  • Please fold these comments into the body of the answer. Using ordered list formatting would also help readability.
    – Vince
    Feb 7, 2017 at 1:02

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.