Russian Qt Forum

Qt => Общие вопросы => Тема начата: phpCoder от Август 10, 2015, 14:25



Название: Пространственная обработка (полигоны, линии, точки...)
Отправлено: phpCoder от Август 10, 2015, 14:25
Добрый день.
Есть ли на Qt (или на C++) библиотеки для пространственной обработки объектов (полигоны, линии, точки...) - пересечение, разность, объединение и прочее. Т.е. те инструменты, которые имеют ГИС системы? Может быть это умеет делать и сам Qt из коробки...

Очень нужно, спасибо.


Название: Re: Пространственная обработка (полигоны, линии, точки...)
Отправлено: Igors от Август 10, 2015, 14:39
Есть ли на Qt (или на C++) библиотеки для пространственной обработки объектов (полигоны, линии, точки...) - пересечение, разность, объединение и прочее. Т.е. те инструменты, которые имеют ГИС системы? Может быть это умеет делать и сам Qt из коробки...
Ну губу раскатали, уж и "из коробки"  :) Для начала 3D объекты надо иметь - и это не так уж просто. "пересечение, разность, объединение" называется "3D boolean", для  этого есть неск неплохих open sources, но с ними надо заниматься. О каких-то популярных, стандартных (очевидных) решениях мне ничего не известно. Не исключено что в "ГИС системах" используются платные решения которых тоже немало.

В общем, проскочить на шару пых-пых товарищу вряд ли удастся  :) Конкретизируйте задачу


Название: Re: Пространственная обработка (полигоны, линии, точки...)
Отправлено: phpCoder от Август 10, 2015, 14:42
Знаете ли Вы (и другие читающие эту тему) библиотеки для обработки пространственных данных? Вопрос предельно простой.


Название: Re: Пространственная обработка (полигоны, линии, точки...)
Отправлено: Igors от Август 10, 2015, 15:07
Знаете ли Вы (и другие читающие эту тему) библиотеки для обработки пространственных данных? Вопрос предельно простой.
Это Вы считаете его простым :) Умолкаю, пусть пых-пых резвость перекипит, а там посмотрим


Название: Re: Пространственная обработка (полигоны, линии, точки...)
Отправлено: phpCoder от Август 10, 2015, 15:09
Если библиотек не знаете - не пишите.
А ответ простой: да, знаю, например эта, эта и эта.
Или - нет не знаю.
Все.


Название: Re: Пространственная обработка (полигоны, линии, точки...)
Отправлено: Hrundel от Август 10, 2015, 20:43
Знаете ли Вы (и другие читающие эту тему) библиотеки для обработки пространственных данных? Вопрос предельно простой.
Это Вы считаете его простым :) Умолкаю, пусть пых-пых резвость перекипит, а там посмотрим

Даже Игоря пробило!  :)  


Если библиотек не знаете - не пишите.
А ответ простой: да, знаю, например эта, эта и эта.
Или - нет не знаю.
Все.

Умерте пыл. Библиотек таких на халяву не было и нет.
Могу вам посоветовать только три гениальные книги для решения подобных задач.

Боресков. А.В. Графика трехмерной компьютерной игры на OpenGL
Майкл Лассо. Вычислительная геометрия и компьютерная графика на C++
Павлидис Т. -  Алгоритмы машинной графики и обработки изображений

еще не повредит

Поляков, Брусенцев - Методы и алгоритмы компьютерной графики в примерах на Visual C++
Никулин Е.А. - Компьютерная геометрия и алгоритмы машинной графики - Математика 3Д графики



Название: Re: Пространственная обработка (полигоны, линии, точки...)
Отправлено: phpCoder от Август 10, 2015, 22:54
GEOS

За книги спасибо.


Название: Re: Пространственная обработка (полигоны, линии, точки...)
Отправлено: Igors от Август 11, 2015, 06:02
Все бы нормально если "на плоскости", т.е. полигон 2D - просто замкнутый контур. Тогда есть прекрасный boost::polygons и в CGAL есть. Но человек говорит "пространственная" - наверное имеет ввиду 3D. Так мрачно, ну пользовал я Cork, но там возни..


Название: Re: Пространственная обработка (полигоны, линии, точки...)
Отправлено: Naihil от Август 11, 2015, 09:41
В Qt есть классы для работы с полигонами - QPolygon(F), простейшие пересечения они обрабатывают.

Для полноценной обработки пространственных данных можно использовать уже упоминавшийся GEOS либо подключить библиотеки QGIS, которые по сути тоже используют GEOS.


Название: Re: Пространственная обработка (полигоны, линии, точки...)
Отправлено: phpCoder от Август 11, 2015, 10:06
Геометрия на плоскости конечно. В ГИС называется пространственными вычислениями.

В общем задача стандартная. Если два массива полигонов. Они могут быть как выпуклыми, так и невыпуклыми. Требуется первым массивом полигонов порезать второй массив полигонов. На выходе получить массив порезанных полигонов. (стандартная задача из ГИСа)

Смотрю буст сейчас - кто знает, помогите, какие методы нужно использовать для этого?


Название: Re: Пространственная обработка (полигоны, линии, точки...)
Отправлено: Hrundel от Август 11, 2015, 20:54
Тоже я смотрел этот GEOS. В него пока вработаешься столько же времени пройдет сколько сам писать будешь.


Название: Re: Пространственная обработка (полигоны, линии, точки...)
Отправлено: Hrundel от Август 11, 2015, 20:59
Если два массива полигонов. Они могут быть как выпуклыми, так и невыпуклыми.

Правильно говорить конкавными и конвексными.