Рисование длинных полигонов

Вопросы по свободной ГИС QGIS. Сообщения об ошибках, предложения по улучшению, локализация.
Warak
Новоприбывший
Сообщения: 10
Зарегистрирован: 25 фев 2016, 14:30
Репутация: 3

Рисование длинных полигонов

Сообщение Warak »

Доброго времени суток

В общем такая ситуация рисуя длинный полигон стандартными средствами мы по сути выполняем одну и туже работу дважды т.е. сначала линия идет по одному краю потом в обратную сторону по другому краю. А можно ли, как сказать то, рисовать параллельно обе стороны? т.е. вот как то так
Изображение
получается время работы сокращается в два раза так как вершины выставляются сразу на обеих сторонах и нет необходимости возвращаться назад.

Пробовал посмотреть плагины, много интересного, но не нашел то что нужно мне, вполне допускаю что просто пропустил.
HasT
Активный участник
Сообщения: 142
Зарегистрирован: 16 окт 2009, 22:08
Репутация: 55
Откуда: Харьков

Re: Рисование длинных полигонов

Сообщение HasT »

Плагин CADTools - Orthogonal Digitizing (http://www.catais.org/qgis/cadtools/). На панели инструментов плагина кнопка "Capture Verticsl/Horizontal Lines/ Polygons" (работать с зажатым Ctrl)
Warak
Новоприбывший
Сообщения: 10
Зарегистрирован: 25 фев 2016, 14:30
Репутация: 3

Re: Рисование длинных полигонов

Сообщение Warak »

HasT писал(а):Плагин CADTools - Orthogonal Digitizing (http://www.catais.org/qgis/cadtools/). На панели инструментов плагина кнопка "Capture Verticsl/Horizontal Lines/ Polygons" (работать с зажатым Ctrl)
Попробовал или я не понял эту функцию, или, скорее всего, я плохо объяснил что я хочу. Картинки были для примера последовательности действий, сами полигоны имеют мало чего общего с ровным красивым квадратом или прямоугольником, в моем случае это дороги, реки о прочее т.е. очень длинные объекты и их много.

https://youtu.be/dnAQ8e8nVhI
Вот так будет понятнее что я хочу.
1ый пример - раз я рисую так как рисую т.е. последовательно выставляем точки на одном берегу, потом возвращаемся назад на другом берегу. Да это быстро когда река у тебя ровный кусок длинной 30см, 3 вершины с одной стороны 3 с другой. А если это километров 30-40? там десятки вершин и только на один берег уйдет не мало времени + столько же на другой берег.
2ой пример это то что я хочу т.е. я ставлю точки фактически параллельно на 2х берегах и нет необходимости возвращаться обратно по другому берегу. Стандартный инструмент рисует треугольнички которые я изобразил.

В итоге мне нужно чтоб рисуя вторым способом получался полигон аналогичный тому который был в 1ом способе. Вот как то так.
HasT
Активный участник
Сообщения: 142
Зарегистрирован: 16 окт 2009, 22:08
Репутация: 55
Откуда: Харьков

Re: Рисование длинных полигонов

Сообщение HasT »

Warak писал(а):
HasT писал(а):Плагин CADTools - Orthogonal Digitizing (http://www.catais.org/qgis/cadtools/). На панели инструментов плагина кнопка "Capture Verticsl/Horizontal Lines/ Polygons" (работать с зажатым Ctrl)
Попробовал или я не понял эту функцию, или, скорее всего, я плохо объяснил что я хочу. Картинки были для примера последовательности действий, сами полигоны имеют мало чего общего с ровным красивым квадратом или прямоугольником, в моем случае это дороги, реки о прочее т.е. очень длинные объекты и их много.

https://youtu.be/dnAQ8e8nVhI
Вот так будет понятнее что я хочу.
1ый пример - раз я рисую так как рисую т.е. последовательно выставляем точки на одном берегу, потом возвращаемся назад на другом берегу. Да это быстро когда река у тебя ровный кусок длинной 30см, 3 вершины с одной стороны 3 с другой. А если это километров 30-40? там десятки вершин и только на один берег уйдет не мало времени + столько же на другой берег.
2ой пример это то что я хочу т.е. я ставлю точки фактически параллельно на 2х берегах и нет необходимости возвращаться обратно по другому берегу. Стандартный инструмент рисует треугольнички которые я изобразил.

В итоге мне нужно чтоб рисуя вторым способом получался полигон аналогичный тому который был в 1ом способе. Вот как то так.
Да, для этой задачи "Capture Verticsl/Horizontal Lines/ Polygons" не подходит. Навряд ли есть такой инструмент рисования полигонов.
Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 792
Ваше звание: званий не имею
Откуда: Москва

Re: Рисование длинных полигонов

Сообщение Александр Мурый »

Частично задача решается путём построения по вершинам "угольчатого" полигона т.н. "concave hull", т.е. вогнутой оболочки. Но обычно concave hull работает с вручную задаваемыми условиями и автоматизировать будет сложно.

Пример:
Снимок экрана_2016-02-25_19-52-25.png
Снимок экрана_2016-02-25_19-52-25.png (61.61 КБ) 10430 просмотров
Редактор материалов, модератор форума
gamm
Гуру
Сообщения: 4170
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1107
Ваше звание: программист
Откуда: Казань

Re: Рисование длинных полигонов

Сообщение gamm »

нужно программировать - проще всего (не заморачиваясь с плугинами), рисовать линейную "змейку" и поставить таким объектам признак, потом выгрузить shape или mif, загрузить его куда-нибудь (Pyphon/R/C++/...) и заменить такие объекты на полигоны, соединяя точки "через одну" (ну, почти ... :mrgreen: )
Донецков
Гуру
Сообщения: 3058
Зарегистрирован: 19 май 2010, 19:44
Репутация: 189

Re: Рисование длинных полигонов

Сообщение Донецков »

А в чем проблема 2 раза пройтись по реке? Вы же все равно проставляете точки на двух берегах ...
Warak
Новоприбывший
Сообщения: 10
Зарегистрирован: 25 фев 2016, 14:30
Репутация: 3

Re: Рисование длинных полигонов

Сообщение Warak »

Александр Мурый, гляну, но что то мне подсказывает что это не совсем то :)

gamm, я половину слов не понял так что данный способ явно сложноват для меня :(

Донецков, проблемы нет так и делаю, это вопрос удобства\экономии, 30 минут идешь по одному берегу, потом 30 минут по противоположному возвращаешься. А если это дорога с широкой разделительной полосой, получается ты идешь по правой стороне дороги в одну сторону, потом обратно, потом тот же процесс для левой стороны, а можно бы было исключить возвращение обратно т.е. ты сразу рисуешь полностью левую сторону, потом правую. Альтернатива рисовать сразу всю дорогу и потом вырезать разделительную полосу, но это тот же хрен, вид с боку, те же 4 шага.

т.е. то то я хочу сократило бы время отрисовки практически в 2 раза, я не тороплюсь, но если есть способ за одинаковый промежуток времени сделать в 2 раза больше то нужно найти этот способ.
trir
Гуру
Сообщения: 5355
Зарегистрирован: 09 апр 2010, 19:30
Репутация: 1021
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: Рисование длинных полигонов

Сообщение trir »

я надеюсь ты не OSM обводишь...
Warak
Новоприбывший
Сообщения: 10
Зарегистрирован: 25 фев 2016, 14:30
Репутация: 3

Re: Рисование длинных полигонов

Сообщение Warak »

trir писал(а):я надеюсь ты не OSM обводишь...
С трудом представляю смысл данной затеи :) Хотя чем черт не шутит.
bim2010
Гуру
Сообщения: 977
Зарегистрирован: 27 янв 2009, 22:57
Репутация: 258

Re: Рисование длинных полигонов

Сообщение bim2010 »

Солидарен в Warak. Не во всем (змейку не поддерживаю), но если стоит задача нарисовать 20000 примыкающих друг к другу полигонов, использую EasyTrace или Mapinfo. Не решена и другая очевидная задача, которую MI делал еще в прошлом веке.
JOSM, EasyTrace, Mapinfo - необходимо позаимствовать идеи дружественного, интуитивно понятного интерфейса по созданию и редактированию слоев. Задача в QGIS не решена.
Warak
Новоприбывший
Сообщения: 10
Зарегистрирован: 25 фев 2016, 14:30
Репутация: 3

Re: Рисование длинных полигонов

Сообщение Warak »

Благодарю всех за ответы, жаль конечно что не нашлось именно того что мне нужно, но в жизни вообще масса огорчений :) Да и может еще найду, вдруг вот именно завтра кто-то решит что вот именно такой функции в рисовании полигонов и не хватало все эти годы :)
konst555
Активный участник
Сообщения: 214
Зарегистрирован: 11 авг 2015, 16:13
Репутация: 47

Re: Рисование длинных полигонов

Сообщение konst555 »

Да, ответы были немного не о том.
Ваш вопрос, как я понимаю, касается графического движка QGIS. В нем, как в прочем и в MapInfo, запросы отрисовки, насколько я знаю, обрабатываются последовательно. Параллельные потоки не открываются. Посмотрите какую часть ресурса процессора занимает ваша программа при выполнении? Ответ - не более 1 ядра процессора.
Ускорение обычно при этом достигается буферизацией и запросами. Т.е. не рисуем то, что уже нарисовано и рисуем только то, что видно, дополнительно не рисуем то что сливается или мало для этого масштаба.
В ArcGIS появился отдельный модуль много поточной геообработки, но он не для всех процедур работает.
При многопоточности ваш полигон все равно будет отрисовываться последовательно, т.к. он единый объект.
Но если его разбить на линии и части, то можно добиться ускорения даже при одно-поточном выполнении.
Поясняю. Из полигона делаете 2 объекта: полигональный и линейный. Полигональный - это набор полигонов из общего, а линейный - набор отдельных линий границ. Полигоны нужны для заполнения, а линии для границы. Желательно, чтобы они были индексированные.
Собственно из-за этого большие векторные слои разбивают на кусочки, делают пирамиды по масштабам (сам делал). Удачи.
Petruxin
Гуру
Сообщения: 1695
Зарегистрирован: 14 июн 2011, 16:47
Репутация: 133
Ваше звание: Завсегдатай
Откуда: Череповец

Re: Рисование длинных полигонов

Сообщение Petruxin »

В ГИС Карта(Панорама) есть такая функция в редакторе. Но не уверен, что есть смысл цифровать sit, а потом в шейп

[ Сообщение с мобильного устройства ]
Petruxin
Гуру
Сообщения: 1695
Зарегистрирован: 14 июн 2011, 16:47
Репутация: 133
Ваше звание: Завсегдатай
Откуда: Череповец

Re: Рисование длинных полигонов

Сообщение Petruxin »

Хотя может я задачу не правильно понял

[ Сообщение с мобильного устройства ]
Ответить

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

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

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