Альтернативні методи індексації для операцій набору точок


17

Для підвищення продуктивності під час роботи з великою кількістю функцій зазвичай використовується просторовий індекс обмежувальної рамки. Якщо операції виконуються проти окремих геометрій з великою кількістю вершин, чи існують якісь подібні стратегії оптимізації?

Наприклад, чи існують якісь структури даних, які можуть пришвидшити точку в полігоні чи операції об'єднання?


1
Під кришкою ГІС використовують багато спеціалізованих структур даних, включаючи різні форми квадратів, DCEL тощо, які описані в підручниках з обчислювальної геометрії. Ви питаєте про ці деталі реалізації чи запитуєте про методи, які можуть бути використані користувачами в рамках мов сценаріїв?
whuber

Дякую, я думаю, що мені потрібно прочитати підручники. Суть мого питання полягала в тому, як ці структури даних можуть бути попередньо обчислені. Чи існують якісь попередньо обчислені реалізації?
Меттью Снейп

Метью, це чудове питання. Справді орієнтований на ефективність ГІС пропонує користувачам варіанти попереднього обчислення структур даних для повторного застосування. На сьогоднішній день сама реклама програмного забезпечення як "ГІС" зазвичай пропонує таке попереднє обчислення лише у вигляді "просторових індексів", тоді як більш програмне забезпечення загального призначення, яке також може робити аналіз ГІС, наприклад, Mathematica (або певною мірою R), запропонує користувачеві. набагато більше контролю над такими речами.
whuber

Я думаю, що проблема базується на "фрактальній природі" об'єктів 2d та невизначеній та незбалансованій щільності інформації про розподіл.
huckfinn

Відповіді:


2

Гаразд лише для точки на полігоні:

Я думаю, що проблема базується на "фрактальній природі" об'єктів 2d та невпевненому та незбалансованому розподілі просторової інформації. Якщо у вас є звичайна сітка, легко визначити положення або відношення комірки. Але ізолінія моделі рельєфу може мати нескладні деталі збоку і математично складні з іншого боку (морфологічно активні частини, хребти, долини ...).

Індексація намагається обробити дві речі:

  1. Швидкий розпорядок роботи, який дає вам набір відро, в які ви збираєте предмети, які ви можете просторово відганяти (відра!). А BBoxes легко підрахувати та обробити.

  2. Сукупність відносин (перекриття, дотик) для розрізнення або співвідношення просторових речей (об'єктів).

На жаль, BBoxes не дасть вам поняття, скільки точок у кожному BBox, як об'єкти формуються (отвори, опуклі, ...) і як інформація розподіляється локально (90% пунктів у верхньому лівому куті BBox). Таким чином, ви можете знайти членів швидкого функціонування на рівні об'єкта та багато часу втратити у відношенні побудови тесту.

Для використання більш нерегулярного підходу триангуляція IMO у поєднанні з квадратами і стратегіями є стратегіями, де ви можете зблизити ковзання та частину індексу, що будує відношення (bucketing == building building).

Для прикладу тестування "Введення в полігон" можна створити нерегулярний кеш, використовуючи:

  1. ! обмежена тріангуляція вашої полі покриття, з додатковими окантовками сітки для виявлення зовнішньої частини обкладинки
  2. введіть це в схему індексації квадратури з не більше N трикутників на коробку (фрактальні відра)
  3. знайдіть набір трикутників, якому належить точка - лист у квадраті
  4. знайти трикутник, у якому лежить точка (тестова частина над максимум N трикутниками)
  5. і запитайте ідентифікатори багатокутника вершин трикутника
  6. якщо ідентифікатор унікальний, то точка належить багатокутнику, якщо ні - це зовні

Витрати на побудову олова та кватренів дуже високі і важкі для обчислення, і квадрату доводиться врівноважувати великі та малі трикутники (трикутники, які не вміщатимуться у менші ящики з двома деревами).

Деякі інструменти та посилання:

Трикутник - триангуляція багатокутника обмеження

Квадрати - із джерелами прикладу

Сховище Stony Brook - структури даних та дискретна геометрія

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.