Объединение слоев и полигонов
-
- Участник
- Сообщения: 67
- Зарегистрирован: 13 мар 2018, 08:59
- Репутация: 22
- Откуда: MO
Re: Объединение слоев и полигонов
Отступ )
-
- Участник
- Сообщения: 51
- Зарегистрирован: 14 май 2018, 14:21
- Репутация: 2
- Откуда: Россия
Re: Объединение слоев и полигонов
Классно, поигрался, объединяет! Но только не всё. Возможно районы у меня в списке лежат не рядом - не так как примыкают между собой на карте... половина районов клеится в один полигон, а половина не клеится.
Сейчас поступлю как... районы отсортирую в порядке как на картинке лежат, и попробую так, напишу как получилось.
PS... Районы перекинул в списке туда сюда - результат не дало. Даже отступ делал 10000 - надувались "подушки" районов, залазили друг на друга, а они так и не объединяются друг с другом. Странно.
-
- Участник
- Сообщения: 67
- Зарегистрирован: 13 мар 2018, 08:59
- Репутация: 22
- Откуда: MO
Re: Объединение слоев и полигонов
Скорее всего, ошибки топологии.Yuraz писал(а): ↑05 фев 2019, 16:18половина районов клеится в один полигон, а половина не клеится.
Без данных трудно что-то говорить.
PS
А с пайтоном не стали пробовать?
-
- Участник
- Сообщения: 51
- Зарегистрирован: 14 май 2018, 14:21
- Репутация: 2
- Откуда: Россия
Re: Объединение слоев и полигонов
Дмитрий, не могу ЛС написать, можете написать на 1bmjwxcp9kck@mail.ru ?
А с пайтоном делал, код проходит без ошибок, но клеит так же, с внутренними границами.
-
- Участник
- Сообщения: 67
- Зарегистрирован: 13 мар 2018, 08:59
- Репутация: 22
- Откуда: MO
Re: Объединение слоев и полигонов
Тот код просто собирает геометрии с выделенных слоев в один слой
Вот этот должен собрать, склеить и почистить.
Но ПОМНИТЕ виртуальные слои удобные, но при больших объемах данных могут привести к тормозам и зависаниям
думаю в Вашем случае "десятки объектов" должен отпахать нормально )
Вот этот должен собрать, склеить и почистить.
Но ПОМНИТЕ виртуальные слои удобные, но при больших объемах данных могут привести к тормозам и зависаниям

думаю в Вашем случае "десятки объектов" должен отпахать нормально )
Код: Выделить всё
# -*- coding: utf-8 -*-
buffer = 0.1
# склеиваем геометрии из выделенных слоев в одну
sql = ''
tpl = u' select geometry from "%s" where st_isvalid(geometry) and not st_isempty(geometry) \n'
cte = u' with cte as (%s) \n select 1, st_union(cte.geometry) as geometry from CTE group by "1"'
for layer in iface.legendInterface().selectedLayers():
if sql != '':
sql = sql + u' union all \n'
sql = sql + tpl % (layer.name())
# слой с объединенной геометрией
layer = QgsVectorLayer("?query="+cte % (sql), 'UnionLayer', "virtual")
QgsMapLayerRegistry.instance().addMapLayer(layer, True)
# подправляем артефакты
sql = 'select st_buffer(st_buffer(geometry, %f), -%f) from UnionLayer' % (buffer, buffer)
# результирующий слой
layer = QgsVectorLayer("?query="+sql, 'ResultLayer', "virtual")
QgsMapLayerRegistry.instance().addMapLayer(layer, True)
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 6 гостей