I have a shapefile having 1000s of non overlapping polygons. I have got seamless layer of DEMs which cover the full extend of this polygon shapefile.

I want to find out the maximum altitude value in each of these polygons automatically. Is there any way to do in Qgis, ArcGIS, gdal or any other open source application.

  • Please only ask about one GIS software. Otherwise this is effectively 3+ questions and contrary to the Tour.
    – PolyGeo
    Jul 5, 2016 at 20:24

3 Answers 3


You can use the Zonal Statistics tool of QGIS (also available through the Processing Toolbox)..

enter image description here

Giving the raster in input and choosing the vector with all your polygons, the algorithm will write for each feature (so for each polygon) some raster statistic, one of them is the max value.

enter image description here


1.- Obtain a shapefile for each polygon in your shapefile with MultipartToSinglepart.

2.- Use ExtractByMask with your DEM raster and each single polygon/shapefile obtained from the prior step.

3.- Then for each raster obtained, use GetRasterProperties (MAXIMUM)

That way you'll get the max elevation value for each of your polygons.


Raster to Point will create a point grid with values based on each pixel in your DEM. Depending on the spatial resolution and size of your data set this might not be the best option. However, if you do choose this option, you can then use calculate geometry to find the max value within each polygon.

Not the answer you're looking for? Browse other questions tagged or ask your own question.