As a part of my PhD I have to map the rivers of Northern Peloponnese, Greece. I have downloaded two DEMs from Nasa Reverb, which I connected with "mosaic to new raster". I have started the usual process of "fill", "flow direction" and "flow accumulation" in order to be able to analyze the rivers of the area. But unfortunately I'm facing two problems.

First one is that the results I get from Flow Direction tool are wrong and I can't edit them, no matter what I try. As you can see at the screenshot, there are some horizontal flow lines that make no sense. I tried editing the values (tried to make arcmap exclude values lower than 1) of the original raster and then using "fill" but that doesn't prevent the "fill" tool from ignoring these areas.

Second problem (which seems to be connected to the first one) is that I decided to move to the next step and use "Flow Accumulation" anyway as some areas seemed to be fine and see what happens.

As you can see from the screenshot the flow accumulation lines follow the shoreline shape and then extend in the sea. As far as I can understand, these flow accumulation lines follow the flow direction ones so the problem is created when I use the "flow direction" tool.

Can you please help? I'm fairly new to this so excuse my ignorance.

If it's a problem with the original data and the problem can't be corrected, is there a way around it?

flow direction screenshot

flow accumulation screenshot

  • What method did you use to try and exclude those water body cells from the raster? Indeed, I think that is your issue. If the water body area is included, and you "fill" the sinks, then it wants to send the water somewhere. (aka down the coast and in straight lines). – Tangnar Jul 30 '15 at 12:27
  • First of all thank you for taking the time to respond. If that's the case, how can I exclude the water body area? What I tried is, when I calculated the flow direction, I right clicked on the layer---properties---symobology (classified tab)--- classify---data exclusion---exclusion button---excluded values. There I erased the color (purple in the screenshots) which has the value of 64. The problem is that this will of course erase all pixels with value of 64 on land also. I tried the "force all edge cells to flow outward" option but it didn't work. – Georgios Alevizos Jul 30 '15 at 14:06
  • @Tangnar Another thing I tried is, excluding the "0" value of the original raster. That indeed removed the sea (the blue color became white) but when i recalculated, fill, flow direction and flow accumulation, it made no difference as the water still used this space. I uploaded the screenshot as I can't add a new picture I think. s13.postimg.org/ri4yrocnb/Screenshot_337.png So the problem is that I have to make arcmap understand that the blue is a "no go" zone for any layer calculation but I don't know how. Any ideas? – Georgios Alevizos Jul 30 '15 at 14:19

The method that you used for 'excluding' data only applies to the symbology. So you are not really modifying the data, just what you see. I would create a new raster that removes the data from the waterbodies.

More than one way to go about this. It also depends on your area of interest.

You could use the Set Null tool to remove the values of the water body from your DEM. With this method, you create some condition that, if true, will replace those cells with NoData. Your input would look like below: Your DEM is input, your create a condition with the Expression, and the Input False raster will also be your DEM. This sets the values that don't meet the condition to your original raster.

input beforeSetNull afterSetNull

Another option, you could draw a polygon around your area of interest, and use it as a mask in your environment settings. The tool will only honor the cells that fall within the mask. If you use this, make sure to read up on the mask environment.

There are other options too, but one of these should help you out.

  • That was really helpful. I would like to avoid the mask as it's a really big area with many angles and I will have to spend too much time and it's difficult to avoid errors. I would rather "play" with the values in order to exclude the ones that create the problem. If the water body has a value of 0 what should be the right expression to use? I would like to set values of 0 as null so "=0'? I will try and come back with the result of course! – Georgios Alevizos Jul 30 '15 at 14:59
  • The only thing you MIGHT need to worry about is if other parts of your raster have values of 0 other than the waterbody, that you actually want to keep. – Tangnar Jul 30 '15 at 15:03
  • I have to say a very big thank you as you solve my problem. One small one remains before we close this case. As you can see at the screenshot (in the yellow ellipsis) there is a river that stops before the shoreline. Any ideas? s9.postimg.org/m9pk4hc33/Screenshot_338.png I can't see any other problems! – Georgios Alevizos Jul 30 '15 at 15:13
  • That appears to be an instance where the value of 0 was turned in to NoData, but you actually want to keep it (and include it in the Fill operation). Otherwise, your stream dead ends at the NoData pixel. One possible solution might be to run the Set Null tool after you've executed the Fill. The fill might take care of those interior 0 values that you want to keep. – Tangnar Jul 30 '15 at 15:18
  • So in this case you think it will be better NOT to use the null tool, just for this river and analyse it separately? – Georgios Alevizos Jul 30 '15 at 15:19

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.