I am looking for a method to buffer a set of thousands of points with known elevations by 150m Euclidean distance, and then limit the area in each buffer to 50m higher or lower in elevation than each point using a DEM.

What methods and tools (proprietary or open-source) would you recommend with the goal of developing an automatic workflow, tool or script to create a Euclidean buffer with an elevation condition?

  • Do buffers overlap? – FelixIP Jan 30 '17 at 19:10
  • What is the most likely GIS software that you will use? What have you already tried? – PolyGeo Jan 30 '17 at 20:31
  • Buffers may overlap since it is a large point dataset, and the decision to use 150m in Euclidean distance may be extended to a larger buffer at some point. I have been looking at options in ArcGIS but also standard QGIS operations. Ultimately I would be interested in developing and automating the workflow using Python. – h.Augustin Jan 31 '17 at 11:27

I would take a look at R package gDistance package. It has the function costDistance which makes rasters of cost distance which can then be transform to buffer manually. It may not be that efficient, but until somebody here propose a better option, here is what I would (approximately) do:

  1. take one point independently and extract your DEM a little over your wanted 150m (so a simple buffer, without that elevation managment). (gdal_translate with the te parameter is super efficient for that.
  2. Load that tiny raster in R. Extract the altitude of your initial point and mask every cell that aren't within 50 m altitude of it.
  3. Call the costDistance function on it (you'll have to run transition first) making sure it know what NA are so it goes around it.
  4. Take the raster it produce and filter it (e.g. raster<150)
  5. Optional : polygonize it
  6. repeat for every points
  7. combine all results
  • I have been looking at a few cost distance related methods that may work, but didn't think to look at R. Thanks for the tip! – h.Augustin Jan 31 '17 at 11:28

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