.. only:: html


Clipping and merging raster layers
============================================================

.. note:: In this lesson we will see another example of spatial data
  preparation, to continue using geoalgorithms in real-world scenarios.

For this lesson, we are going to calculate a slope layer for an area
surrounding a city area, which is given in a vector layer with a single
polygon. The base DEM is divided in two raster layers that, together,
cover an area much larger than that around the city that we want to work with.
If you open the project corresponding to this lesson, you will see something
like this.

.. image:: img/cutting_merging/medfordarea.png

These layers have two problems:

* They cover an area that is too large for what we want (we are interested
  in a smaller region around the city center)
* They are in two different files (the city limits fall into just one single
  raster layer, but, as it's been said, we want some extra area around it).

Both of them are easily solvable with the appropriate geoalgorithms.

First, we create a rectangle defining the area that we want. To do it,
we create a layer containing the bounding box of the layer with the limits
of the city area, and then we buffer it, so as to have a raster layer that
covers a bit more that the strictly necessary.

To calculate the bounding box , we can use the *Polygon from layer extent* algorithm

.. image:: img/cutting_merging/bbox.png

To buffer it, we use the *Fixed distance buffer* algorithm, with the following parameter values.

.. image:: img/cutting_merging/buffer_dialog.png

.. warning:: Syntax changed in recent versions; set both Distance and Arc vertex to .25

Here is the resulting bounding box obtained using the parameters shown above

.. image:: img/cutting_merging/buffer.png

It is a rounded box, but we can easily get the equivalent box with square angles,
by running the *Polygon from layer extent* algorithm on it. We could have buffered
the city limits first, and then calculate the extent rectangle, saving one step.

.. image:: img/cutting_merging/buffer_squared.png

You will notice that the rasters has a different projection from the vector.
We should therefore reproject them before proceeding further, using the
*Warp (reproject)* tool.

.. image:: img/cutting_merging/warp.png

.. note:: Recent versions have a more complex interface. Make sure at least
 one compression method is selected.

With this layer that contains the bounding box of the raster layer that we want
to obtain, we can crop both of the raster layers, using the *Clip raster with
polygon* algorithm.

.. image:: img/cutting_merging/clip.png 

Once the layers have been cropped, they can be merged using the GDAL *Merge* algorithm.

.. image:: img/cutting_merging/merge.png

.. note:: You can save time merging first and then cropping, and you will avoid
 calling the clipping algorithm twice. However, if there are several layers to
 merge and they have a rather big size, you will end up with a large layer than
 it can later be difficult to process. In that case, you might have to call the
 clipping algorithm several times, which might be time consuming, but don't worry,
 we will soon see that there are some additional tools to automate that operation.
 In this example, we just have two layers, so you shouldn't worry about that now.

With that, we get the final DEM we want.

.. image:: img/cutting_merging/finaldem.png

Now it is time to compute the slope layer.

A slope layer can be computed with the *Slope, Aspect, Curvature* algorithm,
but the DEM obtained in the last step is not suitable as input, since elevation
values are in meters but cellsize is not expressed in meters (the layer uses a
CRS with geographic coordinates). A reprojection is needed.
To reproject a raster layer, the *Warp (reproject)* algorithm can be used again.
We reproject into a CRS with meters as units (e.g. 3857), so we can then
correctly calculate the slope, with either SAGA or GDAL.

With the new DEM, slope can now be computed.

.. image:: img/cutting_merging/slope.png

And here is the resulting slope layer.

.. image:: img/cutting_merging/slopereproj.png

The slope produced by the *Slope, Aspect, Curvature* algorithm can be expressed
in degrees or radians; degrees are a more practical and common unit.
In case you calculated it in radians, the *Metric conversions* algorithm will
help us to do the conversion (but in case you didn't know that algorithm existed,
you could use the raster calculator that we have already used).

.. image:: img/cutting_merging/metricconversions.png

Reprojecting the converted slope layer back with the *Reproject raster layer*,
we get the final layer we wanted.

.. warning:: todo: Add image

The reprojection processes might have caused the final layer to contain data
outside the bounding box that we calculated in one of the first steps.
This can be solved by clipping it again, as we did to obtain the base DEM.