какая структура данных является соответствующей для запросов “всех точек на расстоянии d от точки p”

Лучше хранить файлы как файлы. Различные databses обрабатывают данные Блоба по-другому, поэтому если необходимо переместить бэкэнд, Вы могли бы попасть в беду.

При обслуживании impages < img src = в файл, который уже существует на сервере, вероятно, будет более быстрым, чем создание временного файла от поля базы данных и указания на < тег img к этому.

я нашел этот ответ от поиска с помощью Google Вашего вопроса и чтения комментариев в http://databases.aspfaq.com/database/should-i-store-images-in-the-database-or-the-filesystem.html

13
задан marc_s 13 July 2013 в 08:57
поделиться

6 ответов

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

Вместо того, чтобы пытаться определить API заранее, определяйте его, когда он вам нужен. Нет необходимости реализовывать что-то, что никогда не будет использоваться, не говоря уже об оптимизации функции, которая никогда не будет вызвана (если, конечно, это не для развлечения :)).

Я думаю, вам следует реализовать отбраковку ограничивающего прямоугольника с последующим более детальным поиском по сферам в качестве первой реализации. Возможно, это не такое узкое место, как вы думаете, и, возможно, вам придется учитывать гораздо более серьезные узкие места. Это'

1
ответ дан 2 December 2019 в 01:21
поделиться

Карта с ключом, равным расстоянию, и значением, являющимся самой точкой, позволит вам запрашивать все точки меньше заданного расстояния или в заданном диапазоне.

0
ответ дан 2 December 2019 в 01:21
поделиться

Ну, это зависит от того, какие еще варианты использования вам нужны для структуры данных.

Вы можете получить список расстояний от точки p до других точек, упорядоченный по расстоянию, и сопоставить эти списки к точкам с помощью хэш-карты.

map:
p1 -> [{p2, d12}, {p4, d14}, {p3, d13}]
p2 -> ...
...

Вы можете найти точку на карте и перебирать список, пока расстояние не станет больше требуемого.

0
ответ дан 2 December 2019 в 01:21
поделиться

Вам нужна структура, которая разбивает пространство на части, чтобы можно было эффективно находить определенные области. Правильно разложенное октодерево или kD-дерево должно позволить вам сделать это хорошо, так как вы только «открываете» раздел дерева, содержащий вашу точку p искать точки поблизости. Это должно позволить вам установить довольно низкую асимптотическую границу того, сколько дополнительных точек вам нужно для сравнения расстояния (зная, что ниже некоторого уровня разложения все точки достаточно близки). К сожалению, я недостаточно хорошо знаю литературу в этой области, чтобы давать более подробные указания. Я столкнулся с этими вещами из алгоритма моделирования Барнс-Хат n-Body.

Вот еще один вопрос , тесно связанный с этим. И еще . И третий , упоминающий структуру данных (R-деревья Гильберта), о которой я раньше не слышал.

6
ответ дан 2 December 2019 в 01:21
поделиться

VTK может помочь:

void vtkAbstractPointLocator :: FindPointsWithinRadius (
двойной R, двойной х, двойной y, двойной z, vtkIdList * результат
)

Подклассы vtkAbstractPointLocator содержат различные структуры данных для ускорения поиска: обычные сегменты, kd-деревья и октодеревья.

2
ответ дан 2 December 2019 в 01:21
поделиться

Взгляните на Шаблон для задачи ближайшего соседа (Ларри Эндрюс из DDJ) . Это единственное 2D-изображение, имеющее сложность повторного вызова O (log n), но оно также может быть адаптировано для 3D.

1
ответ дан 2 December 2019 в 01:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: