| Повече ▼

Използване на GIS данни с CGAL

Използване на GIS данни с CGAL


Прочетох няколко публикации тук в GIS.SE, които сочат полезни алгоритми в CGAL. Бих искал да тествам алгоритми в CGAL като трансформация на медиална ос/извличане на скелет на многоъгълник, но примерите на уебсайта на CGAL използват текстови файлове или eps за въвеждане/извеждане.

И аз просто се чудя какъв е най -добрият начин да се използват шейп файлове и други обичайни GIS формати в CGAL?

Например, мога ли да конвертирам polgon шейп файлове в общ формат на данни, който CGAL чете/записва?


Ще искате да проверите SFCGAL, библиотека с обвивки за CGAL, която излага функционалността на CGAL по отношение на прости функции на OGC. Ако заредите вашите файлове в PostGIS, можете да извикате много операции SFCGAL директно - има списък в документите на PostGIS.


Google Summer of Code

CGAL е софтуерна библиотека, която предлага редица надеждни геометрични структури от данни и алгоритми. Компонентите на CGAL работят в 2D и 3D, а понякога и в произволни размери. Примерите за компоненти включват изпъкнали корпуси, изпъкнало разлагане, триангулации на Делоне, диаграми на Вороной, полигонални повърхностни мрежови структури от данни, генериране на мрежа, булеви операции, изчисления на обвивки, откриване на пресичане, реконструкция на повърхността и повърхности на подразделяне.

CGAL се използва в различни области на приложение като CAD/CAM (компютърно проектиране и моделиране), GIS (географски информационни системи), геофизика, обработка на изображения, молекулярна биология, роботика, планиране на движение и графика.

CGAL е написан на C ++ и стриктно се придържа към парадигмата за общо програмиране.

CGAL стана проект с отворен код през 2003 г. По -голямата част от CGAL е под лиценза GPL v3+, а някои основни части са под LGPL v3+. Полугодишните издания в момента имат около 10 000 изтегляния. CGAL се поддържа търговски от отделената компания GeometryFactory.


Използване на ГИС данни с CGAL - Географски информационни системи

Проектът CGAL с отворен код има удоволствието да обяви изданието 5.1 Beta 1 на CGAL, библиотеката за алгоритми за изчислителна геометрия.

CGAL версия 5.1 Beta 1 е публична версия за тестване. Той трябва да осигури солидна основа за докладване на грешки, които трябва да бъдат отстранени преди пускането на окончателната версия на CGAL 5.1 през юли.

Освен корекции и общо подобрение на съществуващите пакети, след CGAL 5.0 се промени следното:

Тетраедрично смесване (нов пакет)

  • Този пакет реализира тетраедричен изотропен алгоритъм за пренареждане,
    което подобрява качеството на тетраедрите по отношение на двустранните ъгли,
    при насочване към дадена дължина на ръба.

Топология на повърхностна мрежа (нов пакет)

Този пакет позволява изчисляване на някои топологични инварианти на повърхности, като:

  • проверете дали две (затворени) криви на комбинативна повърхност са хомотопни. Потребителите могат да избират
    между свободна хомотопия и хомотопия с фиксирани крайни точки
  • тест е крива е свиваема
  • изчислява най-кратките несъкращаеми цикли върху повърхност, със или без тежести по ръбовете.

Оптимална ограничаваща кутия (нов пакет)

Този пакет реализира алгоритъм за оптимизация, който има за цел да изгради близко приближение
от оптимална ограничаваща кутия на око или набор от точки, който се определя като най -малкият
(по отношение на обема) ограничаващо поле, което съдържа дадена мрежа или набор от точки.


Използване на ГИС данни с CGAL - Географски информационни системи

lrineau излезе на 28 юли 2020 г.

Проектът CGAL с отворен код има удоволствието да обяви изданието 5.1 Beta 2 на CGAL, библиотеката за алгоритми за изчислителна геометрия.

CGAL версия 5.1 Beta 2 е публично тестово издание. Той трябва да осигури солидна основа за докладване на грешки, които трябва да бъдат отстранени преди пускането на окончателната версия на CGAL 5.1 през септември.

Освен корекции и общо подобрение на съществуващите пакети, след CGAL 5.0 се промени следното:

Тетраедрично смесване (нов пакет)

  • Този пакет реализира тетраедричен изотропен алгоритъм за пренареждане,
    което подобрява качеството на тетраедрите по отношение на двустранните ъгли,
    при насочване към дадена дължина на ръба.

Топология на повърхностна мрежа (нов пакет)

Този пакет позволява изчисляване на някои топологични инварианти на повърхности, като:

  • проверете дали две (затворени) криви на комбинативна повърхност са хомотопни. Потребителите могат да избират
    между свободна хомотопия и хомотопия с фиксирани крайни точки
  • тест е крива е свиваема
  • изчислява най-кратките несъкращаеми цикли върху повърхност, със или без тежести по ръбовете.

Оптимална ограничаваща кутия (нов пакет)

Този пакет реализира алгоритъм за оптимизация, който има за цел да изгради близко приближение
от оптимална ограничаваща кутия на око или набор от точки, който се определя като най -малкият
(по отношение на обема) ограничаващо поле, което съдържа дадена мрежа или набор от точки.


Използване на ГИС данни с CGAL - Географски информационни системи

lrineau пуснат на 8 септември 2020 г. и middot 5037 се ангажира да овладее от тази версия

Проектът CGAL с отворен код има удоволствието да обяви изданието 5.1 на CGAL, библиотеката за алгоритми за изчислителна геометрия.

Освен корекции и общо подобрение на съществуващите пакети, след CGAL 5.0 се промени следното:

Тетраедрично смесване (нов пакет)

Този пакет реализира тетраедричен изотропен алгоритъм за пренареждане,
което подобрява качеството на тетраедрите по отношение на двустранните ъгли,
при насочване към дадена дължина на ръба.

Топология на повърхностна мрежа (нов пакет)

Този пакет позволява изчисляване на някои топологични инварианти на повърхности, като:

  • проверете дали две (затворени) криви на комбинативна повърхност са хомотопни. Потребителите могат да избират
    между свободна хомотопия и хомотопия с фиксирани крайни точки
  • тест е крива е свиваема
  • изчислява най-кратките несъкращаеми цикли върху повърхност, със или без тежести по ръбовете.

Оптимална ограничаваща кутия (нов пакет)

Този пакет реализира алгоритъм за оптимизация, който има за цел да изгради близко приближение
от оптимална ограничаваща кутия на око или набор от точки, който се определя като най -малкият
(по отношение на обема) ограничаващо поле, което съдържа дадена мрежа или набор от точки.


С модерния фокус върху технологията LiDAR количеството топографски данни, под формата на масивни облаци от точки, се е увеличило драстично. Освен това, поради популярността на LiDAR, многократните проучвания на същите области стават все по -чести. Тази тенденция ще се увеличи само с топографските промени, които налагат незабавни проучвания върху вече сканиран терен, като в този случай получаваме големи пространствено-временни набори от данни.

В динамични терени, като например крайбрежните райони, такива пространствено-временни данни могат да предложат интересна представа за това как теренът се променя с течение на времето. Първата стъпка в анализа на такива данни е създаването на цифров модел на кота, представящ терена във времето. В случай на пространствено-времеви масиви от данни тези модели често представляват кота върху 3D обемна мрежа. Това включва интерполиране на котата на LiDAR точки върху тези точки на мрежата. В тази статия ние показваме как ефективно да се извърши интерполация на естествен съсед над 3D обемна мрежа. Използвайки графичен процесор (GPU), ние описваме различни алгоритми за постигане на компромиси между скоростта и GPU паметта. Нашият алгоритъм се простира до по -високи измерения. Нашите експериментални резултати показват, че алгоритъмът е ефективен и мащабируем. Категории и предмет.


Google Summer of Code

CGAL е софтуерна библиотека, която предлага редица надеждни геометрични структури от данни и алгоритми. Компонентите на CGAL работят в 2D и 3D, а понякога и в произволни размери. Примерите за компоненти включват изпъкнали корпуси, изпъкнало разлагане, триангулации на Делоне, диаграми на Вороной, полигонални повърхностни мрежови структури от данни, генериране на мрежа, булеви операции, изчисления на обвивки, откриване на пресичане, реконструкция на повърхността и повърхности на подразделяне.

CGAL се използва в различни области на приложение като CAD/CAM (компютърно проектиране и моделиране), GIS (географски информационни системи), геофизика, обработка на изображения, молекулярна биология, роботика, планиране на движение и графика.

CGAL е написан на C ++ и стриктно се придържа към парадигмата за общо програмиране.

CGAL стана проект с отворен код през 2003 г. По -голямата част от CGAL е под лиценза GPL v3+, а някои основни части са под LGPL v3+. Полугодишните издания в момента имат около 10 000 изтегляния. CGAL се поддържа търговски от отделената компания GeometryFactory.


Географски информационни системи: модели, кутии с инструменти и системи за географска информация

ГИС се различават значително по отношение на специфичната им функционалност, което прави сравнението на различните системи доста трудно. Ние ограничаваме нашата оценка до основната функционалност на ГИС, свързана с манипулиране на векторни данни. Освен това, ние подчертаваме следните три критерия в нашето сравнение:

Datмодел: Моделът за пространствени данни, предлаган от системата, е много важен за потребителя, тъй като предоставя геометричните типове данни и операциите.

Изплюлiаl индексиране: Структурите на пространствения индекс са важни за ефективното поддържане на най -важните пространствени заявки. Ето защо е важно какъв вид индексни структури са действително налични, особено за приложения, които се занимават с много големи бази данни.

Изплюлial Присъединете се: Тъй като пространствените съединения са най -важната операция за комбиниране на различни карти, производителността на системата зависи от ефективността на основния алгоритъм.

Тези критерии са сред най -важните за обработка на пространствени заявки в ГИС [24].

Въпреки че вече сме ограничили нашите съображения до конкретни аспекти, ние ограничаваме сравнението си до няколко важни системи и библиотеки. Всъщност започваме нашата дискусия с въвеждането на два общи стандартизирани модела на данни, които се прилагат от много търговски системи. След това ще обсъдим няколко търговски системи, които се използват в контекста на ГИС в индустрията. След това представяме няколко прототипни системи, които служат главно като изследователски платформи.

Стандартизирани модели данни

Най -важният стандарт за ГИС [51] е публикуван от Отворения ГИС консорциум. Той предоставя обектно-ориентиран векторен модел и основни геометрични типове данни. Действителните реализации на търговски доставчици като Oracle са тясно свързани със стандарта Open GIS. Всички геометрични типове данни са подкласове на класа Geometry, който осигурява принос, който определя пространствената референтна система. Един от методите на геометрията доставя така наречения плик на обект, който се нарича MBR в нашата терминология. Моделът на данните прави разлика между атомни геометрични типове като точки, криви и повърхности и съответните типове колекции. Най -сложният атомен тип е полигонална повърхност, която се състои от външен полигонален пръстен и набор от вътрешни многоъгълни пръстени, където всеки от тях представлява дупка в повърхността. Трябва да се спазват определени твърдения, за да може такава полигонална повърхност да бъде в едно последователно състояние.

Топологичните връзки на два пространствени обекта се изразяват с помощта на модела с девет пресечни точки [17]. Този модел прави разлика между екстериора, интериора и границата на даден обект. Пространствените предикати като припокривания след това се определят, като се посочва кое от твърденията трябва да бъде изпълнено. В допълнение към предикатите, спецификацията Open GIS дефинира различни конструктивни методи като този за изчисляване на изпъкналата обвивка на пространствен обект. Друга важна функция позволява да се изчисли буферният обект, който съдържа онези точки, които са на разстояние ε на даден обект. Освен това има методи за изчисляване на пресичането (и други операции с множество) върху два обекта.

Стандартът OpenGIS също е повлиял до голяма степен на други стандарти за географски данни като стандарта за съхранение, извличане и обработка на пространствени данни с помощта на SQL [33] и стандарта за езика за географско маркиране (GML), който се основава на XML. Наскоро публикуваната версия на стандарта GML [52] допълнително осигурява функционалност за поддръжка на триизмерни обекти и пространствено-времеви приложения.

Търговски системи

В този подраздел даваме кратък преглед на характеристиките за обработка на географски заявки на системи от бази данни, географски информационни системи и библиотеки със структури от данни.

Сред трите големи доставчици на бази данни, Oracle предлага най -богатата поддръжка за управление на пространствени данни. Моделът на данни на Oracle [53] е подобен на простия модел на функциите на консорциума OpenGIS. Oracle допълнително предлага криви, където дъгите могат да бъдат кръгли. Пространствената функционалност е внедрена върху СУБД на Oracle и следователно не е напълно интегрирана. Това е особено забележимо, когато SQL се използва за определяне на пространствени заявки, където декларативният вкус на SQL е в контраст с императивните процедурни извиквания на пространствената функционалност.

Обработката на пространствени заявки се извършва с помощта на подхода за пречистване на филтри. Освен това могат да се използват междинни филтри, когато се използва приближение на ядрото на обекта. Този вид обработка се прилага към заявки за пространствен подбор и към пространствени съединения.

В Oracle има R-дървета и четириъгълници за индексиране на пространствени данни. За разлика от R-дърветата, (линейните) четириъгълници се основават на мрежово разлагане на пространството с данни на плочки, като всеки от тях поддържа списъка с пресичащи се обекти. Линейното квадратно дърво е внедрено в B+-дървото на Oracle. В случай на фиксирано индексиране, всички плочки са с еднакъв размер. Oracle предоставя функция, която позволява на потребителите да определят добра настройка на размера на плочките. В случай на хибридно индексиране, плочките могат да варират по размер. Това се постига чрез локално увеличаване на разделителната способност на мрежата, ако броят на плочките все още е под даден праг. Сравнението на пространствените индексни структури на Oracle [35] показва, че производителността на заявките на R-дървото е по-добра в сравнение с квадратното дърво.

ПространственоWса

SpatialWare [44] предоставя набор от функции, които позволяват управление на пространствени данни в рамките на Microsoft SQL Server. Изпълнението се основава на функциите за разширяване на SQL Server. Отново типовете пространствени данни са подобни на простите функции на OpenGIS.

Функционалността за обработка на заявки се състои от заявки за пространствен подбор, както и пространствени съединения. Най-забележим е фактът, че SpatialWare предоставя R-дървета за пространствено индексиране.

LEдA и CGAL

LEDA [45] и CGAL [11] са библиотеки на C ++ (вижте глава 41 за повече информация за LEDA), които предлагат богата колекция от структури от данни и алгоритми. Сред по -модерните структури са пространствените типове данни, подходящи за използване за внедряване на ГИС. Най-интересно за ГИС е способността на LEDA и CGAL да изчисляват геометрията точно чрез използване на така нареченото рационално ядро, т.е. пространствени типове данни, чиито координати са рационални числа. LEDA предоставя най-важните двуизмерни типове данни като точки, изо-ориентирани правоъгълници, многоъгълници и равнинни подразделения. Освен това LEDA осигурява ефективни реализации на важни геометрични алгоритми като изпъкнал корпус, триангулации и пресичане на линии. AlgoComs, придружаващ продукт на LEDA, също осигурява по -богата функционалност за полигони, която е тясно свързана с наслагване на карта. За разлика от LEDA, фокусът на CGAL е ограничен до алгоритми за изчислителна геометрия, където функционалността на CGAL като цяло е по -богата в сравнение с LEDA. CGAL съдържа kd-дървета за индексиране на многоизмерни точкови данни и поддържа нарастващи заявки за най-близкия съсед.

И двете, LEDA и CGAL, не поддържат външни алгоритми и индексни структури и следователно покриват само частично функционалността, необходима за ГИС. Имаше разширение на LEDA, наречено LEDA-SM [12], което поддържа най-важните външни структури от данни.

JTS Topology Suite (JTS) [76] е библиотека от клас Java, предоставяща основни геометрични функции според геометричния модел, дефиниран от OpenGIS Consortium [51]. Следователно, той предоставя основните типове пространствени данни като полигонални повърхности и пространствени предикати и операции като буфер и изпъкнал корпус. Библиотеката също така поддържа дефинируем от потребителя прецизен модел и съдържа код за стабилни геометрични изчисления. Налични са и няколко класа за индексиране на MBR (пликове). Едната структура е квадратното дърво MX-CIF [67], което е специализирано квадратно дърво за организиране на динамичен набор от правоъгълници. Другата структура е статично R-дърво, което се създава чрез техника за масово зареждане [39]. Понастоящем няма поддръжка за ефективно управление на данни на диска. СТС е публикуван съгласно лицензионно споразумение с отворен код (GPL LGPL).

Прототипи на изследване

Системата SAND [18] дава пълната мощност за обработка на заявки на система от пространствени бази данни и допълнително съдържа браузър за показване на резултатите от пространствена заявка. Той предоставя общия фолклор на типове пространствени данни като точка, правоъгълник, многоъгълник и многоъгълна повърхност (наречена полирегион). SAND предлага три вида предикати на заявки, които се отнасят съответно до топологични, метрични и дистанционни предикати. Потребителят може да поиска поредицата от обекти в даден регион, класирана според тяхното разстояние до дадена точка на заявка. SAND е много мощен по отношение на индексирането си. ПЯСЪК предлага PMR-квадрилото [67], както и R-дървото [26]. И двете пространствени индексни структури поддържат заявки за класиране, като контролират обхода на индекса чрез приоритетна опашка. Обърнете внимание, че SAND доставя отговорите на заявка като итератор, където следващият отговор се произвежда при поискване. SAND предлага богат източник на пространствени съединения, които се основават на принципа на синхронизирано преминаване на пространствени индекси. Специална характеристика на SAND е оптимизаторът на заявките, както и неговият скрипт

език, който служи като лепило между различните компоненти на системата.

XXL (eXtensible and fl eXible Library) [10] не е система, а чиста Java библиотека, която не поддържа типове пространствени данни, а точки и правоъгълници. XXL осигурява мощна поддръжка за различни видове (пространствени) индекси. Има различни видове реализации на R-дървета, както и на B-дървета, които могат да се комбинират с криви за запълване на пространство (напр. z-порядък и ред на Хилберт). Концепцията за контейнери е въведена в XXL, за да осигури абстрактен поглед върху външната памет. Съществуват реализации на контейнери, които се основават на основна памет, файлове и необработени дискове. XXL предлага богат източник на различни видове пространствени съединения като [14, 56], които се основават на използване на криви за запълване на пространството и парадигма за сортиране на сливане. XXL е оборудван с обектно-релационна алгебра от оператори на заявки и оптимизатор на заявки, който може да пренаписва Java програми. Операторите на заявки са итератори, които доставят отговорите на заявка при поискване, един по един. XXL се предлага съгласно лицензионно споразумение с отворен код (GNU LGPL).

Системата Dedale [63] е уникална в смисъл, че нейният основен модел на данни се основава на ограничения [64]. Вместо да използва гранично представяне, набор от ограничения описва пространствени обекти с произволни размери. Това също позволява използването на ограничени езици за изразяване на пространствени заявки.

Най-новата версия на Dedale е внедрена на BASIS [21], която се състои от R*-дървото като структура на пространствения индекс и различните алгоритми за пространствено съединение, които могат да използват пространствени индекси [22].


Използване на диапазон за цикъл с типове CGAL

Помислете за CGAL :: Подредба_2. В момента трябва да го повторя така:

Ако се опитам да мигрирам това към използване на C ++ 11 стил, базиран на диапазон за цикъл като този:

Получавам следната грешка (моят акцент):

Грешка: (1385, 13) невалиден диапазон израз от тип 'CGAL :: Arrange_2>>, true>, std :: __ 1 :: vector>>, true>>, std :: __ 1 :: allocator>>, true>> >>, CGAL :: Arr_consolidated_curve_data_traits_2>>, true>>, int>>, CGAL :: Arr_extended_dcel>>, true>, std :: __ 1 :: vector>>, true>>, std :: __ 1 :: allocator> >, true>>>>, CGAL :: Arr_consolidated_curve_data_traits_2>>, true>>, int>>, GIS_vertex_data, GIS_halfedge_data, GIS_face_data, CGAL :: Arr_vertex_base>>, true>>>, CGAL :: Gps_half, >, CGAL :: _ Unique_list>>, CGAL :: Gps_face_base>> ' няма налична жизнеспособна функция „начало“

Грешката е същата, ако променя цикъла for, за да използвам auto & ampface или const auto & ampface.

Някой има ли заобиколно решение за това или някаква хубава обвивка, за да работи? Опитвам се да избегна използването на това чудовище с ламбда аргумент:


Всичко около ГИС

Целта на проекта CGAL с отворен код е да осигури лесен достъп до ефективни и надеждни геометрични алгоритми под формата на библиотека на C ++. CGAL се използва в различни области, които се нуждаят от геометрични изчисления, като например: компютърна графика, научна визуализация, компютърно проектиране и моделиране, географски информационни системи, молекулярна биология, медицински изображения, роботика и планиране на движение, генериране на мрежи, числени методи … Повече за проекти, използващи уеб страница CGAL.

Библиотеката на алгоритмите за изчислителна геометрия (CGAL) предлага структури от данни и алгоритми като триангулации (2D ограничени триангулации и триангулации на Delaunay и периодични триангулации в 2D и 3D), диаграми на Вороной (за 2D и 3D точки, 2D диаграми с претегляне на Вороной и сегмент Диаграми на Вороной), многоъгълници (булеви операции, отмествания, прав скелет), многогранници (булеви операции), подреждане на криви и техните приложения (2D и 3D пликове, суми по Минковски), генериране на мрежи (2D генериране на мрежа Делоне и 3D повърхностна и обемна мрежа генериране, повърхности на кожата), геометрична обработка (опростяване на повърхностната мрежа, подразделяне и параметризиране, както и оценка на локалните диференциални свойства и сближаване на хребети и пъпки), алфа форми, алгоритми на изпъкнали корпуси (в 2D, 3D и dD), търсене структури (kd дървета за търсене на най -близкия съсед и дървета на диапазони и сегменти), интерполация (интерполация на естествен съсед и поставяне на st reamlines), анализ на формата, монтаж и разстояния (най -малката ограждаща сфера от точки или сфери, най -малката ограждаща елипсоида на точките, анализ на основните компоненти) и кинетични структури от данни.

Всички тези структури от данни и алгоритми работят върху геометрични обекти като точки и сегменти и извършват геометрични тестове върху тях. Тези обекти и предикати се прегрупират в CGAL ядра.

И накрая, библиотеката за поддръжка предлага генератори на геометрични обекти и функции за пространствено сортиране, както и рамка за търсене на матрица и решаваща програма за линейни и квадратни програми. Освен това предлага интерфейси към софтуер на трети страни като библиотеките с графичен интерфейс Qt, Geomview и библиотеката Boost Graph.

Разрешително

CGAL се разпространява по схема с двоен лиценз. CGAL може да се използва заедно със софтуера с отворен код безплатно. Използването на CGAL в други контексти може да стане чрез получаване на търговски лиценз от GeometryFactory. За повече подробности вижте страницата Лиценз.


Гледай видеото: Използване на класове и обекти