I am using ArcGIS 10

I have a raster layer with 3 values that make up zones. For the purpose of this example, lets say these zones are forest, grass, and open water. My whole raster is made up of these three values. I also have a line layer (it is currently a vector file but I'm fine converting to raster if I need to). This line layer is streams. I want to attach this stream layer to the raster layer based on zones. so I will end up with 6 values (Forest with stream, forest without stream, grass with, grass without, open water with, open water without). I basically want to do an overlay, but apply the stream value to the whole zone and not just a pixel. If a stream falls into a forest pixel, I want all neighboring forest pixels to also have that stream.

I really want to avoid converting the raster to vector. I looked into the zonal function tools but they seem to only give me statistics and values based on zones rather than overlay two layers based on zones.

  • What are your reasons for not vectorizing?
    – Paul
    Commented Jul 11, 2014 at 15:38
  • The zones in my raster are small and plentiful. I could end up with a hundred thousand individual forest zones alone. This is also at a provincial scale. I wanted to avoid a large detailed vector data set. I also need my final output to be a raster and don't want to be constantly converting between vector and raster as I am scared to affect the accuracy of my original data. However, I am aware that I might not have a choice. Just thought I would check with the community to see if it's my only option.
    – Calavin
    Commented Jul 11, 2014 at 15:52
  • If you don't find suitable method and if you must have to convert raster to polygon, you can consider making budder to polygon and clip that to reduce the processing time and error. Commented Dec 11, 2023 at 1:57

2 Answers 2


You can do this by converting the streams layer to a raster, then using the raster calculator to combine the stream and zone information, e.g., make a new raster with values equal to zone + if(stream, 10, 0) (pseudocode; exact syntax will vary between platforms).

I got here looking for a way to access vector data directly from a raster calculator, but I now think that's not available in any of the standard GIS systems.


You can first perform above steps provided by @matthias Fripp to combine zones and stream.

After this you also mentioned - "If a stream falls into a forest pixel, I want all neighbouring forest pixels to also have that stream."

For this you can explore neighbourhood analysis.


One example is point statistics- https://pro.arcgis.com/en/pro-app/latest/tool-reference/spatial-analyst/how-point-statistics-works.htm

You can calculate value of point based to surrounding pixels. Through this you can simplify your raster to have higher values for all those near to stream.

Those far from stream would have lower values. This may not be exactly same as what you are looking for but good option if you don't want to convert raster to vector.

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.