Quantcast
Channel: QGIS – Digital Geography
Viewing all articles
Browse latest Browse all 87

Beautiful Watershed Polygons in QGIS

$
0
0
As the title sugests I am showing you, how to create beautiful watershed polygons. We will start with some raster files and use a nice GRASS tool for the main work. But why “beautiful”? As I am a big fan of webmaps and raster analytics tend to result in ugly rectangular structures I am fan of smooth stuff. So check this small tutorial.

The Data

I already mentioned, that we will work with raster data instead of some ugly manual digitization using some maps. In this tutorial we will work with the good old SRTM3 data. Unfortunately the data provided at www.landcover.org are full of missing pixels especially in mountainous regions. I am using height data from CIGAR (cell 39_03 to be exact). So what is the output I am trying to get? I would love to see a basin for each valley in the Alps.

The Computation in QGIS

Compared to ArcGIS, where I remember a ton of steps to calculate watersheds/basins for a raster, the workflow in QGIS is straightforward thanks to the GRASS processing tools. I am using the r.watershed function which only needs a DEM (can have sinks too!) and that’s it. There are tons of other parameters but we will only go by the DEM and the number of pixels for a minimum sized watershed “minimum size of exterior watershed basin”. I am running good with a value of 2000 which means that a basin will be created once at least 2000 cells drain towards a certain pour point. Be careful with this parameter:
Warning: low threshold values will dramactically increase run time and generate difficult to read basin and half_basin results. This parameter also controls the level of detail in the stream segments map.
So here is the interface:
r.watershed Grass

r.watershed interface design with parameters

One more warning: in my current QGIS version 2.12.3 the parameter “Allow only horizontal and vertical flow of water” is checked by default. This made my first usages of the tool useless (check gis.stackexchange.com. If you’re only interested in the basins, choose a file name for the raster “half-basins” or save it after the creation by hand. Uncheck all other exports if you’re not really interested in them! In the end, just press okay and take yourself a coffee. The result might look like this:
half basins QGIS GRASS

half basins created with r.watershed in QGIS

Creating Beautiful Watersheds

Now comes the arty-partsy part. Let’s remove the ugly pixel-structure. Therefore we will use a generalization tool (yes, GENERALIZATION!) together with the Chaikin algorithm. But first we need to convert the raster into a polygon shapefile. Use the r.to.vect algorithm in the toolbox for this purpose:
r.to.vect GRASS QGIS

GRASS’ r.to.vect function in QGIS

and make sure to select “area” as polygon shapefile type twice or you might see some nice lines instead!. Now you have beautiful polygons in your project. Select those of your desired basin and export them as a new shapefile (use “export selected only” in the save as dialog):
valley extraction

GIF showing the valley of interest, the polygons selected and the exported

But here comes the ugly part as you might have a look at the detail:
ugly pixels

ugly edges as a result of the raster data

Now we will take of this by using the v.generalize GRASS function from the processing toolbox:
Chaiken generalization in QGIS with v.generalize

Chaiken generalization in QGIS with v.generalize

As I am a fan of default parameter, let’s only change the number of iterations (I changed it to three) and we will see some nice, smooth polygon borders:
result chaikin

green: prior algorithm, red line: after the algroithm

Check out the result created with QGIS2web:

The post Beautiful Watershed Polygons in QGIS appeared first on Digital Geography.


Viewing all articles
Browse latest Browse all 87

Trending Articles