I am trying to use two different layers together to generate a layer of random points that represent sample sites. The two layers are:

  1. A grid layer of hexagon-shaped polygons created using the [Create Hexagon Tessellation][1] tool.
  2. A polygon layer with four categories of percent impervious surface (%IS), created by reclassifying the NLCD %IS raster layer and converting to a vector polygon layer. Let's say the categories are 0-25%, 25-50%, 50-75%, and 75-100%.

I would like to generate 25 random points for each category of %IS (100 points total), but only one point per hexagon. So 25 hexagons that have a point placed within a %IS polygon representing 0-25%, 25 hexagons that have a point placed within a %IS polygon representing 25-50%, etc.

I have tried using the built-in Create Random Points tool, the [GME Generate Stratified Random Points tool][1], and the Sampling Design Tool. However, I have only been able to create either

  1. a points layer with one random point inside each hexagon but not associated with the %IS information (Create Random Points), or

  2. a points layer where the points are stratified correctly by %IS but not constrained by the hexagon layer (GME, Sampling Design Tool).

Is there a way to do what I'm attempting?

Here's an example of what a small portion looks like. The colors of the %IS polygon layer represent the four different classes (increasing %IS from blue to red).

Example image

  • Raster 2 polygon. Union with imp.polygons. dissolve using hex and imp. Multipart ok. Generate 25
    – FelixIP
    Commented Dec 6, 2015 at 18:33
  • Unfortunately when I tried this process it still generates more than one point per hexagon. Thank you for the suggestion though.
    – michael
    Commented Dec 6, 2015 at 20:17
  • Will generate 1 work?
    – FelixIP
    Commented Dec 6, 2015 at 20:58
  • Clarifying: the hexagons are smaller than the IS polys? Can you provide an image of how they layout overlapped, hexagons and IS polys? And in your product, some hexagon will have a point and some won't, right? Commented Dec 6, 2015 at 22:23
  • Paulo - the hexagons are larger than the IS polygons. I added an image to the original post. You are correct, some hexagons will have a point and some won't (which is fine).
    – michael
    Commented Dec 7, 2015 at 2:58

1 Answer 1


Raster 2 polygon. Intersect with impervious polygons. Dissolve using hex polygon ID and impervious class, multipart=Ok. Picture shows hexagons over impervious layer, note hexagons labels = their FIDs:

enter image description here

Add field SORT to dissolved table and populate it using rnd()*n, where n= count of records in dissolved table:

enter image description here

  1. Set definition query CLASS=1, sort it by field SORT and populate field INCREMENT with auto-increment by 1

enter image description here

  1. Select 1st 25 and create random points using field COUNT=1 and selected polygons as constraining extent. Result:

enter image description here

Goto step 1 and do the same thing for CLASS 2 etc

  • Wow Felix, thank you for taking the time to write such a complete answer. I tried it on one class and it worked, so hopefully I won't have any issues with the other three classes. The only thing that didn't work for me was the autoIncrement: I found python code (geonet.esri.com/thread/7502) and tried using it in the field calculator but it gave me a list of nonsequential numbers. I think it may have something to do with how the data was sorted but I'm not sure. My work-around was just to manually enter the incremental values (a bit tedious but it works). Thanks again!
    – michael
    Commented Dec 8, 2015 at 15:50
  • Use sort tool to sort records permanently. See advanced field calcs in arcgis help for autoincrement
    – FelixIP
    Commented Dec 8, 2015 at 18:01

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.