Calculating relative share of an area of circle that has slope >15% in Germany

Doing this kind of processing is pretty straight-forward, but there are some tricks along the way that will determine how accurate your analysis will be. Your data will be generated from a slope raster of the area, and you usually have to build it yourself. The easiest way is to use a DEM raster to calculate the slope, so you should start with that.

Step 1: Acquire the DEM

You can get DEMs for free from pretty much the entire world, and from many sources, depending on the area. But said you need a 90m² resolution DEM, that's about a 9.5m pixel, which is pretty high where DEMs are concerned, and not readily available for free.

You said you were using ArcGIS Online's DEMs. Looking through their documentation, it appears they did a mosaic of DEMs ranging from 2m to 900m spatial resolution, you'll have to see if the cities you're working with are below the 10m range. Geospatial companies like Airbus and DigitalGlobe can generate a custom DEM for you, though a 9m res of 50km radius of 15 cities could be pretty expensive, you'll have to check with them.

But most of all, you have to ponder if you really need this resolution. Are you doing a precision work, or just a viability study? Because there are plenty of freely available DEMs within the 30m resolution, most famously the SRTM, that could fit on a broader study.

If you really need a 90m² pixel, then another problem arises. There are two types of DEMs - the Terrain DEM, which covers only ground elevation, and the Surface DEM, which also covers tree tops, buildings, etc. You generally want a terrain DEM, smaller resolutions it matters less; on a < 10m resolution DEM, however, it's a must, and DTMs (as they are known) are harder to generate and to come by. It's almost a certain that any freely available DEM will be surface.

Step 2: Generating the slope

With your DEM in hand, you'll create the slope raster. Both ArcGIS and QGIS can do this, as well as any other good GIS or remote sensing software. But first, you need to know what Spatial Reference System your DEM raster is in. There are two types of SRS - geographic and projected. Geographic ones have coordinates in degrees (usually latitude and longitude), whereas projected ones have planar coordinates (usually meters).

Since your elevation data is likely in meters, you need to make sure your coordinates are as well. If they're not, you'll need to convert (some softwares do that automatically whilst calculating the slope, but don't count on it). To convert in QGIS, go to Raster -> Projection -> Warp, and choose the projection that best suits your area (can't help you with that, but you can find this info online). In ArcGIS, you'll want the Project Raster tool that's in the Data Management toolbox.

Next, you'll want to isolate your area of interest. Create a point vector for each of your city centers, and generate a 50km buffer from it. Again, make sure your point vector is in a projected SRS, else you'll create a 50 degrees buffer encompassing most of Eurasia. For QGIS, that's Vector -> Geoprocessing Tools -> Buffer, whereas for ArcGIS it's Analysis toolbox -> Proximity toolset -> Buffer. Remember to put it 50000, not 50. Then you'll need to cut your DEM raster with it. In QGIS, that's Raster -> Extration -> Clipper, and in ArcGIS it's Data Management toolbox -> Raster toolset -> Raster Processing toolset -> Clip.

With your isolated DEM raster in hand, go generate the slope. In QGIS, that's Raster -> Analysis -> DEM, and then select Slope on the Mode. In ArcGIS, it's part of the Spatial Analyst toolbox and the 3D Analyst toolbox, under Surface toolset. Now, parts of both toolboxes are only available as payed extensions, and I don't know if that's the case for Slope. Anyway, regardless of the software, slope can be calculated in degrees as well as percentage. Since you want areas with < 15% slope, beware not to choose degrees during the process.

Step 3: Analysing the slope

Next, you'll turn your slope raster (in which currently pixels have a slope value) into a binary raster (that is, each pixel will either be 0 - non-acceptable slope - or 1 - acceptable slope). To do so, you'll need map algebra. In QGIS it's in Raster -> Raster Calculator, and in ArcGIS it's Spatial Analyst toolbox -> Map Algebra toolset -> Raster Calculator. Your expression should be something like "Raster1" <= 15.

Now, what the sloping algorithm does is calculate the probable slope of each pixel based on the surrounding pixels. For a more in-depth view, read about it here. That may leave your area with a salt-and-pepper look after you turn it into binary, with plenty of isolated pixels of "possible" buildable land. If that's what you wanted, then you're done! If, however, you want a minimum contiguous area to be able to call it a building area, then you'll have to generalize your data.

Many softwares do that, but, afaik, ArcGIS isn't one of them. But QGIS does, in Raster -> Analysis -> Sieve. Here you'll define the minimum number of pixels to be part of a set; any number smaller than that will be mixed with surrounding pixels. The number of pixels should be a reflection of the minimum area you want, based on the spatial resolution of the original DEM. Note, however, that this alters your accuracy somewhat, so use it with care.

Else, this is it. You can later isolate water and wetland by overlaying a vector layer with those informations and further clipping your raster with it.


You can download a European-wide DTM from the European Environmental Agency Or use other open DTMs of Germany like this

As your calculations are in SI units, you should probably use a projected grid like ETRS-LAEA (EPSG:3035) which is the scientific standard in the EU. Germany-specific grids will aslo work, as well as global ones, just make sure that all your layers and the GIS program map/canvas use the same one, if not, you may need to reproject/transform them. Some guides on working with projections you can find here: QGIS and ArcMap

The basic workflow should be like this:

  1. Create a point layer with 15 points representing the city centers
  2. Use a Buffer tool to create a 50 KM buffer from these points.
  3. Use the resulting polygon layer to Clip the DTM (not a must, but will greatly reduce the processing time)
  4. From your (clipped) DTM, run a Slope tool to calculate the slope. usually the tools in the GIS realm give results in degrees, but double check that to make sure they aren't in percent.
  5. Run a reclassification or conditional raster calculator on the slope layer were <15 is 1 and >15 is 0.
  6. Run a Zonal Statistics tool using the buffer areas as zones, and the reclassified slope as values. You need either pixel count or area calculation in order to be able to calculate surface percentages in one way or another.

If you want to exclude water surfaces, you can use the WWF's Global Lakes and Wetlands database to further define the polygonal areas.

You are more than welcome to search gis.stackexchange for questions about each step of your workflow as well as other topics, and also ask your own questions if you still need help or encounter problems.