# Getting incorrect slope values from an ASTER DEM in QGIS?

I have a DEM layer from ASTER satellite and I want to get the slope information from it.

I use terrain analysis > slope, but the output is so wrong. Why is that?

Here is the DEM:

And here is the "Slope" that is totally wrong. It should stretch the values from 0 - 89.9097 but it does not.

Aster DEMs are in EPSG 4326 (lat lon WGS84). According to the GDAL DEM documentation:

For LatLong projections near the equator, where units of latitude and units of longitude are similar, elevation (z) units can be converted to be compatible by using scale = 370400 (if elevation is in feet) or scale = 111120 (if elevation is in meters). For locations not near the equator, it would be best to reproject your grid using `gdalwarp` before using `gdaldem`.

In this answer for a problem with hillshading (Scale and Z factor have no effect on hillshade analysis in QGIS) user @Luke provides a way to calculate the correct scale ("ratio of vertical to horizontal units") by multiplying the cosine of the latitude times 111320. The scale affects slope calculations.

In the image below I was able to produce slopes in degrees from a DEM in EPSG 4326 at latitudes ranging from 19°45N and 20°N. The scale (-s) was set to `104550.67`.

If you want to work with a DEM in a CRS that defines the measuring units of the coordinates and the elevations in meters you must reproject the DEM using raster/projections/warp (reproject). For example, reprojecting from EPSG 4326 (lat lon wgs84) to EPSG 32164 (UTM WGS84 14N). See below:

In this case, when calculating slope, the "ratio of vertical to horizontal units" (scale) would be set to 1.

Probably because the projection was not in meters.

Slope with DEM projected in meters (UTM/31N: EPSG 25831):

Slope with the same DEM projected in degrees (WGS 84: EPSG 4326) and z = 1:

Slope with the same DEM projected in degrees (WGS 84: EPSG 4326) and z = 111320 (at the equator one horizontal unit, 1°, would correspond to about 111320 m):