Описание вспомогательного алгоритма и скрипта для статистической оценки объекта
Обсудить в форуме Комментариев 0
В задачах проверки уникальности объекта по некоторым характеристикам (например рельеф, NDVI, плотность населения, климатические факторы) часто есть необходимость сгенерировать такой же объект в других местоположениях в некотором количестве. Как правило - такие местоположения являются случайными, но лежат в некоторой определенной области.
В качестве объекта может выступать точка, линия или полигон и если для случайного распределения точек существует множество готовых инструментов, то для репликации полигонов готового инструмента найдено не было.
Полученные таким способом множественные репликации дальше могут быть использованы для получения зональной статистики и статистического анализа. Разумеется, тем, кто использует данный подход необходимо будет учесть автокорреляцию.
Эта статья описывает инструмент для Arcview GIS 3.x
Особенно внимательно необходимо отнестись к выбору объектов и тем для генерации, иначе есть риск попасть в ситуацию, когда ни один из генерируемых полигонов не попадает в ограничивающую зону, что вызовет зависание программы.
На иллюстрации: слева - исходная картина, справа - 100 случайных полигонов сгенерированных по образцу.
Основная часть кода генерации случайных полигонов выглядит следующим образом:
while (i < numiter) xshift = Number.MakeRandom(-1000000000, 1000000000)/1000000000 yshift = Number.MakeRandom(-1000000000, 1000000000)/1000000000 newpoly = apoly.aspolygon newpoly = newpoly.Move(xshift, yshift) newpoly = newpoly.Transform(Transform2D.Make.Move(0@0 - newpoly.ReturnCenter).Rotate(Number.MakeRandom(0, 360000)/1000).Move(newpoly.ReturnCenter)) if (newpoly.IsContainedIn(abound)) then rec = aftab.addrecord aftab.setvalue(f_shape,rec,newpoly) i = i + 1 end end
Обсудить в форуме Комментариев 0
Последнее обновление: September 09 2021
Дата создания: 12.05.2008
Автор(ы): Максим Дубинин
© GIS-Lab и авторы, 2002-2021. При использовании материалов сайта, ссылка на GIS-Lab и авторов обязательна. Содержание материалов - ответственность авторов. (подробнее).