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?
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 http://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
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.)
As before, compute the Euclidean distance grid.
Also compute the Euclidean allocation grid for the boundary: the values in this grid give the elevations of the nearest polygon cell.
Now perform the same subtraction as before, as in
(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).