2

I want to create a single attribute table base on multiple overlapping raster. Some raster do not overlap completely but have common areas. In that situation I need the value from other raster while keeping the non overlapping raster value as missing. I am using arcmap 10.

1

There are a few methods to tackle using map algebra, extract by mask, and the reclassify tool. For example:

Raster A = base raster Raster B = additional raster who's values you want to use only in overlapping areas

Method.

1.) Use raster reclass to set all values other than "no value" to 1 for Raster B.

2.) Use raster math to multiply Raster A and the product of Step 1. The result will be a Boolean raster. Any value that isn't "no data" is an area of intersection.

3.) Use raster reclass on the newly created Boolean raster to set "No Value" to "1" and all other values to "0". The result will be an inverted product of Step 2.

4.) Use raster math to multiply Raster A with the product created in Step 3. The result will be a raster where all areas of non overlap between A and B is set with A values. Areas of overlap will be zero.

5.) Finally, use raster math to add the Step 4 product to the original Raster B. The result will a product raster that displays Raster A values in all cells except those that intersect (non-null) with Raster B. In those areas Raster B values will display.

There may be a more elegant solution that someone else can chime in with.

  • You can do this in a much more efficient way by setting your analysis extent to the maximum of all the rasters, create a background value for each raster using SetNull() and then use Combine() to overlay and get all of the original/all-combinations raster values in the raster attribute table. – Jeffrey Evans Nov 9 '16 at 23:04
0

IMPORTANT : please take into consideration that this solution could work but only for small areas or low resolution rasters, as it can be very computionnaly expensive.

You could create a point layer on the common max extent of all your rasters with a step based on the smallest pixel size then collect all raster values with one tool.

  • You can do that from a big polygon you create on your work area.
  • You rasterize it with the Polygon to raster tool for example, pixel size the smallest you have.
  • You convert it to points with the Raster to point tool.
  • You then simply use the Extract Multi-values to points tool from Spatial Analyst to get any raster values (including NULL values where there is nodata) from all you rasters.

It will generate a global attribute table you need with a field for each raster you selected, free to you to perform an analysis on a new column then recreate a raster from it with the Feature to Raster tool

  • This is not very good advice and computationally very expensive. You would effectively negate the advantage of using rasters and there are simple approaches that can be taken using raster algebra. – Jeffrey Evans Nov 9 '16 at 22:58
  • It is very computionnaly expensive but it works when the pixel data is in reasonnable amount. I agree it is not to be done on wide areas, but it works pretty well on small areas or low resolution. However, I lack the knowledge in the question to give a better advice, as I usually adapt the way I compute data from the info i receive. I'll add a warning to my answer – gisnside Nov 14 '16 at 15:00

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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