Давайте сделаем немного (просто немного) алгебры.
Пусть х будет значением в центральной площади; пусть x_i, i = 1, .., 8 индексируют значения в соседних квадратах; и пусть r будет индекс топографической прочности. Этот рецепт говорит, что r ^ 2 равно сумме (x_i - x) ^ 2. Мы можем легко вычислить две вещи: (i) сумму значений в окрестности, равную s = Sum {x_i} + x; и (ii) сумма квадратов значений, равная t = Sum {x_i ^ 2} + x ^ 2. (Это фокусная статистика для исходной сетки и для ее квадрата.)
Расширение квадратов дает
r ^ 2 = Sum {(x_i - x) ^ 2}
= Сумма {x_i ^ 2 + x ^ 2 - 2 * x * x_i}
= Sum {x_i ^ 2} + 8 * x ^ 2 - 2 * x * Sum {x_i}
= [Sum {x_i ^ 2} + x ^ 2] + 7 * x ^ 2 - 2 * x * [Sum {x_i} + x - x]
= t + 7 * x ^ 2 - 2 * x * [Sum {x_i} + x] + 2 * x ^ 2
= t + 9 * x ^ 2 - 2 * x * s .
Например, рассмотрим окрестности
1 2 3
4 5 6
7 8 9
Здесь x = 5, s = 1 + 2 + ... + 9 = 45 и t = 1 + 4 + 9 + ... + 81 = 285. Тогда
(1-5) ^ 2 + (2-5) ^ 2 + ... + (9-5) ^ 2 = 16 + 9 + 4 + 1 + 1 + 4 + 9 + 16 = 60 = r ^ 2
и алгебраическая эквивалентность говорит
60 = r ^ 2 = 285 + 9 * 5 ^ 2 -2 * 5 * 45 = 285 + 225 - 450 = 60, что проверяет.
рабочий , следовательно , является:
Учитывая DEM.
Вычислите s = Фокальная сумма (более 3 x 3 квадратных окрестностей) из [DEM].
Вычислить DEM2 = [DEM] * [DEM].
Вычислить t = Фокальная сумма (более 3 x 3 квадратных окрестностей) из [DEM2].
Вычислить r2 = [t] + 9 * [DEM2] - 2 * [DEM] * [s].
Возвращение r = Sqrt ([r2]).
Это состоит из 9 операций сетки в целом , все из которых являются быстрыми. Они легко выполняются в калькуляторе растра (ArcGIS 9.3 и более ранних версиях), командной строке (все версии) и построителе моделей (все версии).
Кстати, это не «среднее изменение высоты» (потому что изменение высоты может быть положительным и отрицательным): это среднеквадратичное изменение высоты. Он не равен «индексу топографической позиции», описанному по адресу http://arcscripts.esri.com/details.asp?dbid=14156 , который (согласно документации) равен x - (s - x) / 8. В приведенном выше примере TPI равен 5 - (45-5) / 8 = 0, тогда как TRI, как мы видели, равен Sqrt (60).