Объединение слоев и полигонов

Вопросы по свободной ГИС QGIS. Сообщения об ошибках, предложения по улучшению, локализация.
Dmitry Stasev
Участник
Сообщения: 67
Зарегистрирован: 13 мар 2018, 08:59
Репутация: 22
Откуда: MO

Re: Объединение слоев и полигонов

Сообщение Dmitry Stasev » 05 фев 2019, 14:31

Отступ )

Yuraz
Участник
Сообщения: 51
Зарегистрирован: 14 май 2018, 14:21
Репутация: 2
Откуда: Россия

Re: Объединение слоев и полигонов

Сообщение Yuraz » 05 фев 2019, 16:18

Dmitry Stasev писал(а):
05 фев 2019, 14:31
Отступ )
Классно, поигрался, объединяет! Но только не всё. Возможно районы у меня в списке лежат не рядом - не так как примыкают между собой на карте... половина районов клеится в один полигон, а половина не клеится.
Сейчас поступлю как... районы отсортирую в порядке как на картинке лежат, и попробую так, напишу как получилось.
PS... Районы перекинул в списке туда сюда - результат не дало. Даже отступ делал 10000 - надувались "подушки" районов, залазили друг на друга, а они так и не объединяются друг с другом. Странно.

Dmitry Stasev
Участник
Сообщения: 67
Зарегистрирован: 13 мар 2018, 08:59
Репутация: 22
Откуда: MO

Re: Объединение слоев и полигонов

Сообщение Dmitry Stasev » 05 фев 2019, 17:37

Yuraz писал(а):
05 фев 2019, 16:18
половина районов клеится в один полигон, а половина не клеится.
Скорее всего, ошибки топологии.
Без данных трудно что-то говорить.

PS
А с пайтоном не стали пробовать?

Yuraz
Участник
Сообщения: 51
Зарегистрирован: 14 май 2018, 14:21
Репутация: 2
Откуда: Россия

Re: Объединение слоев и полигонов

Сообщение Yuraz » 07 фев 2019, 10:07

Dmitry Stasev писал(а):
05 фев 2019, 17:37
Без данных трудно что-то говорить.
Дмитрий, не могу ЛС написать, можете написать на 1bmjwxcp9kck@mail.ru ?
А с пайтоном делал, код проходит без ошибок, но клеит так же, с внутренними границами.

Dmitry Stasev
Участник
Сообщения: 67
Зарегистрирован: 13 мар 2018, 08:59
Репутация: 22
Откуда: MO

Re: Объединение слоев и полигонов

Сообщение Dmitry Stasev » 07 фев 2019, 12:21

Тот код просто собирает геометрии с выделенных слоев в один слой
Вот этот должен собрать, склеить и почистить.
Но ПОМНИТЕ виртуальные слои удобные, но при больших объемах данных могут привести к тормозам и зависаниям :shock:
думаю в Вашем случае "десятки объектов" должен отпахать нормально )

Код: Выделить всё

# -*- 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)

Ответить

Вернуться в «QGIS»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 6 гостей