An agency interested in purchasing heavily sloped land has decided to use a criterion that “slopes must be ≥ 15 percent on more than 50 percent of the parcel”. How can I calculate whether a parcel meets this criterion?

The answer may depend on the distance over which one measures the slopes, and on the data source, but I’d expect that any reasonable choice will approximate the agency’s calculations well enough for now.

Unfortunately, I got nonsensical results from using `GeoElevationData`

naively (in Mathematica 11.3, on Windows). For instance, I calculated slopes at twelve angles and three distances from a point on the ski trail called Which Way Glade:

```
whichwayglade = GeoPosition({42.203, -74.241});
slopes(x_, radius_) :=
Table((GeoElevationData(GeoDestination(x, {radius, 30 i Degree})) -
GeoElevationData(x)), {i, 12})/radius;
Round({slopes(whichwayglade, Quantity(100, "Feet")),
slopes(whichwayglade, Quantity(100, "Yards")),
slopes(whichwayglade, Quantity(0.4, "Kilometer"))}, .001)
```

The output is

```
{{0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.},
{-0.022, -0.022, -0.022, -0.022, -0.022, -0.022,
-0.022, -0.022, -0.022, -0.022, -0.022, -0.022},
{-0.128, -0.128, -0.128, -0.128, -0.115, -0.115,
-0.115, -0.115, -0.115, -0.115, -0.115, -0.115}}
```

If these numbers were reasonable, the slope at the point would be roughly the maximum absolute value in one of the lists. But these are not plausible, as one can see from the topo map, `GeoDisk(whichwayglade, Quantity(1, "Kilometer")) // GeoElevationData // QuantityMagnitude // ListContourPlot`

The ski trail is not flat, as the 100-foot slopes would suggest. The trail is not at the top of a perfectly conical mountain, as the 100-yard slopes would suggest. And there are ways to go 1/4-km uphill from there, contrary to the suggestions from the last outputs.

How can I calculate the slope at a point in a reasonable way? Or how can I efficiently calculate the percent of a multi-acre parcel with slopes over 15%?