Hello All,
I'm relatively new to python and arcpy, and was recently working to create a tool that performs calculations of raster values within an area defined by input polygons (a la zonal stats). Currently, I make a feature layer out of the polygon, select polygons within that layer that have a certain attribute, use that selection as a clip on the input raster, and then input the clipped raster into a numpy array to perform calculations. At the end of the process, I delete the clipped raster. This all works well enough, but it's definitely not as fast (about 3x-4x slower) as the built in zonal stats functions, and most of that extra time seems to be coming from the process of clipping and creating a whole new raster, and subsequently deleting it at the end.
I'm curious if it's possible to do a "select by location" style operation on a raster or raster layer, in the same fashion that I can select certain features in a feature layer and have various tools use only those selected features. So instead of actually creating a new raster, I simply create some sort of selection or mask so that when I dump the raster into a numpy array, only those selected cells show up. The actual 'select by location' doesn't accept raster layers as input, only mosaics or catalogs. At the moment, I don't care if the output retains spatial relationships - I just want a list of values.
The ultimate goal is to be able to perform zonal calculations quickly - so if my specific idea above is misguided, I'm very open to alternate ideas!
Thanks!