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

получается время работы сокращается в два раза так как вершины выставляются сразу на обеих сторонах и нет необходимости возвращаться назад.
Пробовал посмотреть плагины, много интересного, но не нашел то что нужно мне, вполне допускаю что просто пропустил.
Re: Рисование длинных полигонов
Добавлено: 25 фев 2016, 15:59
HasT
Плагин CADTools - Orthogonal Digitizing (
http://www.catais.org/qgis/cadtools/). На панели инструментов плагина кнопка "Capture Verticsl/Horizontal Lines/ Polygons" (работать с зажатым Ctrl)
Re: Рисование длинных полигонов
Добавлено: 25 фев 2016, 16:38
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ом способе. Вот как то так.
Re: Рисование длинных полигонов
Добавлено: 25 фев 2016, 19:00
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" не подходит. Навряд ли есть такой инструмент рисования полигонов.
Re: Рисование длинных полигонов
Добавлено: 25 фев 2016, 19:53
Александр Мурый
Частично задача решается путём построения по вершинам "угольчатого" полигона т.н. "concave hull", т.е. вогнутой оболочки. Но обычно concave hull работает с вручную задаваемыми условиями и автоматизировать будет сложно.
Пример:

- Снимок экрана_2016-02-25_19-52-25.png (61.61 КБ) 10431 просмотр
Re: Рисование длинных полигонов
Добавлено: 25 фев 2016, 20:03
gamm
нужно программировать - проще всего (не заморачиваясь с плугинами), рисовать линейную "змейку" и поставить таким объектам признак, потом выгрузить shape или mif, загрузить его куда-нибудь (Pyphon/R/C++/...) и заменить такие объекты на полигоны, соединяя точки "через одну" (ну, почти ...

)
Re: Рисование длинных полигонов
Добавлено: 25 фев 2016, 20:08
Донецков
А в чем проблема 2 раза пройтись по реке? Вы же все равно проставляете точки на двух берегах ...
Re: Рисование длинных полигонов
Добавлено: 25 фев 2016, 20:37
Warak
Александр Мурый, гляну, но что то мне подсказывает что это не совсем то
gamm, я половину слов не понял так что данный способ явно сложноват для меня
Донецков, проблемы нет так и делаю, это вопрос удобства\экономии, 30 минут идешь по одному берегу, потом 30 минут по противоположному возвращаешься. А если это дорога с широкой разделительной полосой, получается ты идешь по правой стороне дороги в одну сторону, потом обратно, потом тот же процесс для левой стороны, а можно бы было исключить возвращение обратно т.е. ты сразу рисуешь полностью левую сторону, потом правую. Альтернатива рисовать сразу всю дорогу и потом вырезать разделительную полосу, но это тот же хрен, вид с боку, те же 4 шага.
т.е. то то я хочу сократило бы время отрисовки практически в 2 раза, я не тороплюсь, но если есть способ за одинаковый промежуток времени сделать в 2 раза больше то нужно найти этот способ.
Re: Рисование длинных полигонов
Добавлено: 25 фев 2016, 20:40
trir
я надеюсь ты не OSM обводишь...
Re: Рисование длинных полигонов
Добавлено: 25 фев 2016, 20:46
Warak
trir писал(а):я надеюсь ты не OSM обводишь...
С трудом представляю смысл данной затеи

Хотя чем черт не шутит.
Re: Рисование длинных полигонов
Добавлено: 25 фев 2016, 21:34
bim2010
Солидарен в Warak. Не во всем (змейку не поддерживаю), но если стоит задача нарисовать 20000 примыкающих друг к другу полигонов, использую EasyTrace или Mapinfo.
Не решена и другая очевидная задача, которую MI делал еще в прошлом веке.
JOSM, EasyTrace, Mapinfo - необходимо позаимствовать идеи дружественного, интуитивно понятного интерфейса по созданию и редактированию слоев. Задача в QGIS не решена.
Re: Рисование длинных полигонов
Добавлено: 25 фев 2016, 21:45
Warak
Благодарю всех за ответы, жаль конечно что не нашлось именно того что мне нужно, но в жизни вообще масса огорчений

Да и может еще найду, вдруг вот именно завтра кто-то решит что вот именно такой функции в рисовании полигонов и не хватало все эти годы

Re: Рисование длинных полигонов
Добавлено: 26 фев 2016, 08:56
konst555
Да, ответы были немного не о том.
Ваш вопрос, как я понимаю, касается графического движка QGIS. В нем, как в прочем и в MapInfo, запросы отрисовки, насколько я знаю, обрабатываются последовательно. Параллельные потоки не открываются. Посмотрите какую часть ресурса процессора занимает ваша программа при выполнении? Ответ - не более 1 ядра процессора.
Ускорение обычно при этом достигается буферизацией и запросами. Т.е. не рисуем то, что уже нарисовано и рисуем только то, что видно, дополнительно не рисуем то что сливается или мало для этого масштаба.
В ArcGIS появился отдельный модуль много поточной геообработки, но он не для всех процедур работает.
При многопоточности ваш полигон все равно будет отрисовываться последовательно, т.к. он единый объект.
Но если его разбить на линии и части, то можно добиться ускорения даже при одно-поточном выполнении.
Поясняю. Из полигона делаете 2 объекта: полигональный и линейный. Полигональный - это набор полигонов из общего, а линейный - набор отдельных линий границ. Полигоны нужны для заполнения, а линии для границы. Желательно, чтобы они были индексированные.
Собственно из-за этого большие векторные слои разбивают на кусочки, делают пирамиды по масштабам (сам делал). Удачи.
Re: Рисование длинных полигонов
Добавлено: 26 фев 2016, 09:59
Petruxin
В ГИС Карта(Панорама) есть такая функция в редакторе. Но не уверен, что есть смысл цифровать sit, а потом в шейп
[ Сообщение с мобильного устройства ]
Re: Рисование длинных полигонов
Добавлено: 26 фев 2016, 10:06
Petruxin
Хотя может я задачу не правильно понял
[ Сообщение с мобильного устройства ]