Open jpolchlo opened 6 years ago
Just to summarize recent discussion, the simplest and probably most broadly-effective strategy is probably to store weights for different directions in different layers.
From an aesthetic point of view, I would prefer storing components of vectors in layers, but that assumes that the cost is representable as a function of that vector (in the simplest case the dot-product, but that is obviously not universally appropriate).
I think the natural question is this: what uses will anisotropic cost distance encounter? It seems like storing friction layers as a band per incoming direction is wasteful. For the case of Tobler, this would include up to 8 layers of information when a simple 3-component normal vector would do. If it were possible to transform the friction data via some user-provided function, let's say, that takes into account the incoming direction, then we have a more general solution that isn't as data hungry.
My question would be whether this more general approach would be feasible and if the performance would be acceptable relative to the memory consumptive version? Would this be sufficient to capture the range of likely applications for anisotropic cost distance generally?
Agreed
While developing #2432, it was quickly realized that a Tobler friction surface is useless if we cannot account for direction of travel. It is, of course, easier to walk downhill than uphill, and we should be able to compute the walking time from a given source point to the local neighborhood, for example, with this fact in mind.
As suggested in #2433, one possible solution is to allow a multiband friction surface where each band is the friction when traveling to/from a cell in a given direction. Of course, other solutions may be better-suited to our cost-distance implementation.