5

I am trying to figure out how to create a elevation raster from a known location (3D polygon) that projects at a specified slope (1%) for a specified distance(1-2 km).

Does anyone have any idea how to do this?

1 Answer 1

7

Multiply the polygon's Euclidean distance grid by 1/100. This slope will increase away from the polygon. To make the slope decrease downwards from the polygon, multiply by -1/100 rather than +1/100. An illustration (for a polyline rather than a polygon, but the method is identical) is given in another thread at https://gis.stackexchange.com/a/17805.

To obtain the specified limiting distance, you will get a lot of control by creating a mask for the Euclidean Distance calculation. For instance, use a 2000 m buffer of the polygon as the mask.

To place the polygon at a fixed elevation, add that elevation to the previous result. Thus, for example, a Map Algebra expression might look like

Slope = 300 - (1/100) * [Euclidean distance to polygon]

When the polygon boundary is at varying elevations, convert those elevations to a categorical (integer) grid if necessary. (Reduce the discretization effect by rounding to the nearest 1/10 or 1/100 of a meter if you like.)

Integral elevations

As before, compute the Euclidean distance grid.

Distance grid

Also compute the Euclidean allocation grid for the boundary: the values in this grid give the elevations of the nearest polygon cell.

Euclidean allocation grid

Now perform the same subtraction as before, as in

Slope = [Euclidean allocation] - (1/100) * [Euclidean distance]

Result

(The color breakpoints have changed slightly to accommodate the greater range of elevations in the resulting grid.)

You can see the problems with a varying elevation along the boundary. They are akin to what is observed in a complicated sloping roof: although the roof may have constant slope everywhere, the ridges and valleys have lower slopes. Therefore you cannot (usually) obtain a surface of constant slope emanating from the original polygon (unless that polygon's boundary behaves like the intersection of a cone of the desired slope and a right prism based on the polygon).

3
  • 1
    If the polygon boundary does not have a constant elevation, you cannot usually get a solution at all. An approximate solution can be obtained but it's a little involved so I have refrained from specifying it. Let me know if you need that refinement.
    – whuber
    Commented Dec 20, 2011 at 0:18
  • Hi William - Thanks for responding to this. The polygons I have are not constant elevation but I think approximate solutions will be fine. I was thinking of creating a raster field with the known elevations at the center and then using a multi-buffer with widths set at the same increment as the pixel size (10m). I would then somehow use a nearest neighbor window and calculation (similar to what you have recommended for 2D) to determine incrementally as a person moves through the buffers the new elevations at the prescibed gradient. The polygons are within larger polygons as a mask.
    – Ben Smith
    Commented Dec 20, 2011 at 23:57
  • I have illustrated one solution, @Ben.
    – whuber
    Commented Dec 21, 2011 at 3:04

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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