Мне нужно создать код, который с учетом точки местоположения GPS (широта, долгота) найдет 3 самые близкие точки из огромной коллекции точек (узлы OSM).
Первый вариант - хранить огромную коллекцию точек в базе данных и создавать пространственные индексы. Затем используйте запрос со встроенными пространственными методами, чтобы получить результаты. Я считаю этот подход не самым быстрым, поскольку весь процесс запросов потребует длительных транзакций между программным обеспечением и базой данных. Поправьте меня, если я ошибаюсь.
Второй вариант - загрузить всю коллекцию точек в память при запуске программы. Я считаю, что этот подход будет иметь лучшую производительность. Очевидно, что существует необходимость в создании индексов, чтобы избежать итерации по всей коллекции, поскольку это снизит производительность по сравнению с использованием базы данных.
Но я не знаю, как создавать индексы в коллекции данных C #. Есть ли какая-либо библиотека .Net или другой подход, который индексирует пространственные данные в памяти, чтобы выполнять быстрые запросы к ним?
РЕДАКТИРОВАТЬ: Хотя этот вопрос похож на тот, который считается дублирующим, он вводит вопрос, имеет ли подход к базе данных или в памяти более высокую производительность.