Библиотека на Си для булевских операций над полигонами

Вопросы общего характера по ГИС и дистанционному зондированию, не связанные с конкретным ПО.
Ответить
Shasoft
Интересующийся
Сообщения: 37
Зарегистрирован: 24 июл 2009, 14:47
Репутация: 0

Библиотека на Си для булевских операций над полигонами

Сообщение Shasoft » 22 фев 2010, 15:20

Може кто-то из спецов может подсказать библиотеку для работы с полигонами? Пересечение/объедениненеие/вычитание

Аватара пользователя
Mavka
Гуру
Сообщения: 2060
Зарегистрирован: 14 мар 2008, 17:36
Репутация: 9

Re: Библиотека на Си для булевских операций над полигонами

Сообщение Mavka » 22 фев 2010, 16:29

Посмотрите здесь (раздел Librería).
Но что то на ум ничего для plain c не приходит.
лангольеры под окном жрали время ом-ном-ном

Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9129
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 748
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Re: Библиотека на Си для булевских операций над полигонами

Сообщение Максим Дубинин » 23 фев 2010, 03:10

посмотрите вот здесь: http://trac.osgeo.org/ggl/ очень быстрая библиотека, но не уверен что в ней есть нужные функции, это тоже C++
пристегивайтесь, турбулентность прямо по курсу

Аватара пользователя
Дмитрий Барышников
Гуру
Сообщения: 2572
Зарегистрирован: 17 ноя 2009, 19:17
Репутация: 261
Откуда: Москва

Re: Библиотека на Си для булевских операций над полигонами

Сообщение Дмитрий Барышников » 10 мар 2010, 11:45

http://www.complex-a5.ru/polyboolean/comp.html
По адресу приведено сравнение основных библиотек С++ по работе с полигонами.
Есть еще geos, но, например, на операции Intersection очень тормозит.

Shasoft
Интересующийся
Сообщения: 37
Зарегистрирован: 24 июл 2009, 14:47
Репутация: 0

Re: Библиотека на Си для булевских операций над полигонами

Сообщение Shasoft » 23 мар 2010, 21:53

Всем спасибо. Вопрос решен.

Аватара пользователя
Mavka
Гуру
Сообщения: 2060
Зарегистрирован: 14 мар 2008, 17:36
Репутация: 9

Re: Библиотека на Си для булевских операций над полигонами

Сообщение Mavka » 24 мар 2010, 10:02

Чисто для повышения собственной образованности - на чем остановились?
лангольеры под окном жрали время ом-ном-ном

Shasoft
Интересующийся
Сообщения: 37
Зарегистрирован: 24 июл 2009, 14:47
Репутация: 0

Re: Библиотека на Си для булевских операций над полигонами

Сообщение Shasoft » 07 июн 2010, 19:36

Остановился на gpc (Generic Polygon Clipper)
// General Polygon Clipper based on the GPC library by Alan Murta
// Union, Intersection, XOR, A-B, B-A
// Contact the author if you intend to use it in commercial applications!
// http://www.cs.man.ac.uk/aig/staff/alan/software/
// Alan Murta (email: gpc@cs.man.ac.uk)
Хотя, учитывая что мне нужно работать с полигонами, заданными гео-координатами - есть мнение, что нужна какая-нибудь библиотека для работы с полигонами на сфере, а не на плоскости, так как при использовании будут неверные результаты.
Могут профессионалы подтвердить мои опасения или опровергнуть? А то что-то никак сам не могу сообразить прав я или нет. Пока я исхожу из того, что на плоскости наименьшее расстояние между гео-точками будет выглядеть в виде дуги, а не прямой. А gpc (да и все аналогичные библиотеки) считают, что наименьшее расстояние можно представить в виде прямой.

Аватара пользователя
Дмитрий Барышников
Гуру
Сообщения: 2572
Зарегистрирован: 17 ноя 2009, 19:17
Репутация: 261
Откуда: Москва

Re: Библиотека на Си для булевских операций над полигонами

Сообщение Дмитрий Барышников » 07 июн 2010, 19:45

Я думаю это везде так, даже в коммерческих ГИС.

Shasoft
Интересующийся
Сообщения: 37
Зарегистрирован: 24 июл 2009, 14:47
Репутация: 0

Re: Библиотека на Си для булевских операций над полигонами

Сообщение Shasoft » 07 июн 2010, 20:28

это везде так
Это потому что
а) Проще реализовать?
б) эти библиотеки дают точный результат, а все мои сомнения ошибочны?
в) другое

P.S. Нашел (точнее вспомнил то, что находил при прошлом поиске) библиотеку
2D Boolean Operations on Nef Polygons Embedded on the Sphere.

Аватара пользователя
Дмитрий Барышников
Гуру
Сообщения: 2572
Зарегистрирован: 17 ноя 2009, 19:17
Репутация: 261
Откуда: Москва

Re: Библиотека на Си для булевских операций над полигонами

Сообщение Дмитрий Барышников » 07 июн 2010, 21:21

Я думаю все вместе. Кроме того, сфера это хорошо, а если эллипсоид или иная фигура вращения - опять другая математика?
Я обрезал слой континентов кажется по 12 градусной зоне - все прилично получается. Главное чтобы обрезающая фигура имела точек побольше 4-х. На картинке есть пример обрезки континентов viewtopic.php?f=27&t=4906#p23768

Shasoft
Интересующийся
Сообщения: 37
Зарегистрирован: 24 июл 2009, 14:47
Репутация: 0

Re: Библиотека на Си для булевских операций над полигонами

Сообщение Shasoft » 07 июн 2010, 22:00

Сфера и эллипс - весьма похожи и конвертировать из одного в другой не так сложно. Хотя, всех тонкостей ГИС я не знаю, так что тут мне сложно что-то сказать. Мало ли что там ещё кроме элипса и окружности может использоваться.
В моем случае используется сфера, так что попробую сам придумать алгоритм с полигонами на сфере, либо разобраться с найденным. Скорость выполнения операций у меня не сильно принципиальна, так что может что и получится самому наваять. Точность гораздо важнее, так как при перемещении камеры с высоты в 6 тыс. км до высоты 1 метра даже при небольшом косяке в расчетах могут получиться не стыковки соседних тайлов и как следствие - ненужные мне дырки в карте. И так пришлось исхитриться, чтобы компенсировать ошибки округления при выполнении мат.операций.
В общем - спасибо за подсказки, буду обдумывать услышанное.

Аватара пользователя
Дмитрий Барышников
Гуру
Сообщения: 2572
Зарегистрирован: 17 ноя 2009, 19:17
Репутация: 261
Откуда: Москва

Re: Библиотека на Си для булевских операций над полигонами

Сообщение Дмитрий Барышников » 07 июн 2010, 22:10

Тайлы есть суть квадрат (ну или прямоугольник) - какие там могут быть нестыковки, если только на полюсе?
По поводу сферы и эллипсоида - длина дуги на эллипсоиде будет отличаться от аналогичной на сфере аз счет радиусов большой и малой полуоси. Я думаю там чуть сложнее математика чем на сфере.

Shasoft
Интересующийся
Сообщения: 37
Зарегистрирован: 24 июл 2009, 14:47
Репутация: 0

Re: Библиотека на Си для булевских операций над полигонами

Сообщение Shasoft » 08 июн 2010, 08:12

У меня тайл в виде треугольника, поэтому всё не так просто.

Аватара пользователя
Дмитрий Барышников
Гуру
Сообщения: 2572
Зарегистрирован: 17 ноя 2009, 19:17
Репутация: 261
Откуда: Москва

Re: Библиотека на Си для булевских операций над полигонами

Сообщение Дмитрий Барышников » 08 июн 2010, 08:34

Этого не может быть т.к. пикселы квадратные!!! А то что у Вас часть пикселов помечены как nodata еще ничего не значит.

Shasoft
Интересующийся
Сообщения: 37
Зарегистрирован: 24 июл 2009, 14:47
Репутация: 0

Re: Библиотека на Си для булевских операций над полигонами

Сообщение Shasoft » 08 июн 2010, 09:00

Может. :) Моя карта, как хочу, так и делаю.
Про "nodata" я вообще первый раз слышу. Вообще же в 3D всё выводится треугольниками. Просто текстуру буду натягивать на треугольник.

Ответить

Вернуться в «Общие вопросы»

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

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