Страница 1 из 1

Посчитать количество лесов вокруг точки.

Добавлено: 14 мар 2013, 09:36
Maka
Здравствуйте!
Имеется простая на первый взгляд задача:
- есть слой лесов (полигоны)
- есть точки поселков
Надо вокруг поселка (радиусы разные) посчитать долю лесов.

Основная проблема в том, что буферы поселков накладываются друг на друга.

Работаю в основном в Arc, еще могу использовать Эрдас или САГА.

Пробовала:
- Зональную статистику а Арке – переводила леса в грид - не работает потому, что буферы накладываются. Т.е. для двух почти идентичных буферов с небольшим сдвигом – для одного считает нормально, для второго, только то что не вошло в первый буфер.

- neighborhood stastistics тоже в Арке – из грида лесов получала новый грид, где ячейка представляет из себя сумму значений исходного грида в пределах определенного радиуса. Здесь проблема в во времени расчета.

- 3 вариант – порезать слой лесов слоем буфера, затем присоединить значения буферов соответствующим кускам леса (один к многим) и далее считать площади лесов для каждого буфера.

Возможно есть какие-то более красивые варианты решения?

Re: Посчитать количество лесов вокруг точки.

Добавлено: 14 мар 2013, 09:50
nadiopt
я бы сделала совсем не элегантно - построила бы топологию и отделила перекрывающиеся куски в отдельные полигоны ...

Re: Посчитать количество лесов вокруг точки.

Добавлено: 14 мар 2013, 09:57
Catharsis
А что понимается под долей лесов? Если соотношение площадей в заданном радиусе - то не понимаю в чем проблема...

Re: Посчитать количество лесов вокруг точки.

Добавлено: 14 мар 2013, 11:40
Александр Мурый
По-моему, 3-й вариант самый адекватный.
Maka писал(а):Основная проблема в том, что буферы поселков накладываются друг на друга.
Не совсем понятно, в чём именно проблема.

Re: Посчитать количество лесов вокруг точки.

Добавлено: 14 мар 2013, 12:18
Maka
to nadiot
Эх топологией не владею :(

to Catharsis
под долей лесов понимается сумма лесной территории в заданном радиусе (для каждого поселка предполагается использовать несколько радиусов). когда я ставила задачу она мне тоже казалась тривиальной - посчитаю зональную статистику для буферов разных радиусов и все :? . Но при наличии перекрытий, если один и тот же лес попадает в несколько радиусов, то при использовании зональной статистики он засчитывается только для одного радиуса (буфера).
Попытка работать только с шейпами привела к 3 варианту, мне он кажется достаточно громоздким, плюс на маленьком примере возникает баг, который обходится. НО что будет при работе со всем массивом данных, а это около 1000 поселков не знаю.

to Александр Мурый
мне то наиболее пока симпатичен вариант neighborhood stastistics - получи в результате 3 грида с суммированием значений по заданому радиусу и считаю значения для всех точек-поселков. Но он занимает много машинного времени - уже 1.5 часа считается для первого самого маленького радиуса :(

Вот задаю вопрос может кто-то знает более простой-элегантный вариант.

Re: Посчитать количество лесов вокруг точки.

Добавлено: 14 мар 2013, 13:19
jerry-maori
я бы делал в лоб и топорно

алгоритм такой:

1. берём точку посёлка
2. строим буферную зону
3. CLIP из лесного полигона
4. Считаем полученные площади.

Пункт 1-4 повторяем для всех нужных радиусов

Повторяем для всех посёлков.

Model Builder нам в помощь