Расчет перекрытий полигонов по заданным параметрам
- geo-aleksey
- Активный участник
- Сообщения: 119
- Зарегистрирован: 28 май 2012, 11:53
- Репутация: 49
- Откуда: Россия
- Контактная информация:
Расчет перекрытий полигонов по заданным параметрам
Аэросъемка. Из рамок снимков сделаны полигоны.
Задача. Рассчитать перекрытие каждых соседних снимков в процентном содержании. Т.е. первого со вторым, второго с третьим и т.д., и выдать в одном отчете результаты на весь блок.
Есть ли программа, в которую можно импортировать полигоны с привязкой и автоматом получить такую статистику? Ибо руками, например, 12к снимков считать долго.
Задача. Рассчитать перекрытие каждых соседних снимков в процентном содержании. Т.е. первого со вторым, второго с третьим и т.д., и выдать в одном отчете результаты на весь блок.
Есть ли программа, в которую можно импортировать полигоны с привязкой и автоматом получить такую статистику? Ибо руками, например, 12к снимков считать долго.
-
- Гуру
- Сообщения: 5355
- Зарегистрирован: 09 апр 2010, 19:30
- Репутация: 1021
- Ваше звание: просто мимо прохожу
- Откуда: Ё-бург
-
- Гуру
- Сообщения: 4231
- Зарегистрирован: 10 апр 2006, 22:34
- Репутация: -344969098
- Откуда: Париж
Re: Расчет перекрытий полигонов по заданным параметрам
программы безусловно есть. все зависит от того, как заданы полигоны и какой они сложности. если это просто прямоугольники в некой системе координат, ориентированные север-восток, то может хватить и стандартной электронной таблицы. Если что то более сложное, то нужна ГИС.
В любом случае придется использовать либо программирование, либо скриптовый язык ГИС. Для Mapinfo в ее MapBasic-е это около 10 строк:
1) найти пересечения
2) упорядочить их по возрастанию индекса, что бы не посчитать пересечения два раза
3) найти площадь пересечений.
Пункт № 1 - по времени квадратичен к количеству полигонов. Сортировка в зависимости от мощности алгоритма. Поиск площади - линейная по времени процедура, зависит от среднего количества пересечений.
В любом случае придется использовать либо программирование, либо скриптовый язык ГИС. Для Mapinfo в ее MapBasic-е это около 10 строк:
1) найти пересечения
2) упорядочить их по возрастанию индекса, что бы не посчитать пересечения два раза
3) найти площадь пересечений.
Пункт № 1 - по времени квадратичен к количеству полигонов. Сортировка в зависимости от мощности алгоритма. Поиск площади - линейная по времени процедура, зависит от среднего количества пересечений.
- geo-aleksey
- Активный участник
- Сообщения: 119
- Зарегистрирован: 28 май 2012, 11:53
- Репутация: 49
- Откуда: Россия
- Контактная информация:
Re: Расчет перекрытий полигонов по заданным параметрам
Полигоны сложные, не прямоугольники. Ну т.е. у них по идее по 4 узла (надо проверить), но они в пространстве искажены после проективных преобразований. СК - WGS 84 / UTM 37 N. Насчет программирования задумывался, но сходу возможностей нет. Правда добрые люди уже помогли с конкретным примером, но способ не сказали. )))
-
- Гуру
- Сообщения: 4231
- Зарегистрирован: 10 апр 2006, 22:34
- Репутация: -344969098
- Откуда: Париж
Re: Расчет перекрытий полигонов по заданным параметрам
Я в Mapinfo могу расписать как делать 1-ый, 2-й пункты стандартным образом, наверно и 3-й можно с помощью шаманства. Если не лень, то приложите образец (или все) данные в каком-нибудь ГИС (полу-ГИС) формате. До стадии списокgeo-aleksey писал(а):Полигоны сложные, не прямоугольники. Ну т.е. у них по идее по 4 узла (надо проверить), но они в пространстве искажены после проективных преобразований. СК - WGS 84 / UTM 37 N. Насчет программирования задумывался, но сходу возможностей нет. Правда добрые люди уже помогли с конкретным примером, но способ не сказали. )))
Код: Выделить всё
"полигон А";"полигон Б";"площадь пересечения=xx га".
- geo-aleksey
- Активный участник
- Сообщения: 119
- Зарегистрирован: 28 май 2012, 11:53
- Репутация: 49
- Откуда: Россия
- Контактная информация:
Re: Расчет перекрытий полигонов по заданным параметрам
Полигоны можно скачать тут
-
- Активный участник
- Сообщения: 161
- Зарегистрирован: 17 янв 2012, 18:51
- Репутация: 74
Re: Расчет перекрытий полигонов по заданным параметрам
Результаты по вашим данным.
Area – в кв. м.
ListID – список ID листов пересекаемых текущим.
ListCross – список значений перекрытий в процентах по отношению к площади текущего листа (округлено до целого). Соответствует списку ID.
Area – в кв. м.
ListID – список ID листов пересекаемых текущим.
ListCross – список значений перекрытий в процентах по отношению к площади текущего листа (округлено до целого). Соответствует списку ID.
- Вложения
-
Crossing.zip
- (10.25 КБ) 377 скачиваний
- geo-aleksey
- Активный участник
- Сообщения: 119
- Зарегистрирован: 28 май 2012, 11:53
- Репутация: 49
- Откуда: Россия
- Контактная информация:
Re: Расчет перекрытий полигонов по заданным параметрам
Спасибо большое 

- geo-aleksey
- Активный участник
- Сообщения: 119
- Зарегистрирован: 28 май 2012, 11:53
- Репутация: 49
- Откуда: Россия
- Контактная информация:
Re: Расчет перекрытий полигонов по заданным параметрам
Шикарный результат. Можно узнать способ, это программирование или готовая ГИС?thegeo писал(а):Результаты по вашим данным.
-
- Активный участник
- Сообщения: 161
- Зарегистрирован: 17 янв 2012, 18:51
- Репутация: 74
Re: Расчет перекрытий полигонов по заданным параметрам
Это программа на MapBasic для MapInfo (для v.11.5, хотя нет никаких проблем откомпилировать ее и для предыдущих версий). Программу прилагаю.
Замечания по использованию:
1. принято, что все объекты в обрабатываемой таблице это области;
2. таблица должна иметь обязательные поля: ID (Integer), ListID и ListCross типа Char необходимой длины;
3. перед обработкой в поле ID д.б. записан идентификатор (через rowid())
Перед запуском нужно выделить любой объект в обрабатываемой таблице. Далее будет предложено указать значение минимального перекрытия учитываемого при обработке.
В ваших данных фигурировали также имена листов при необходимости их также можно вытащить. Для примера прилагаю таблицу с этими именами и ограничением по перекрытию 30%.
Замечания по использованию:
1. принято, что все объекты в обрабатываемой таблице это области;
2. таблица должна иметь обязательные поля: ID (Integer), ListID и ListCross типа Char необходимой длины;
3. перед обработкой в поле ID д.б. записан идентификатор (через rowid())
Перед запуском нужно выделить любой объект в обрабатываемой таблице. Далее будет предложено указать значение минимального перекрытия учитываемого при обработке.
В ваших данных фигурировали также имена листов при необходимости их также можно вытащить. Для примера прилагаю таблицу с этими именами и ограничением по перекрытию 30%.
- Вложения
-
Crossing2.zip
- (11.6 КБ) 360 скачиваний
- geo-aleksey
- Активный участник
- Сообщения: 119
- Зарегистрирован: 28 май 2012, 11:53
- Репутация: 49
- Откуда: Россия
- Контактная информация:
Re: Расчет перекрытий полигонов по заданным параметрам
Спасибо огромное)
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 4 гостя