Как я могу разделить земной шар на небольшие сетки таким образом, чтобы это позволяло мне назначать каждое местоположение широты / длины сетке?[закрыто]
-
22-07-2019 - |
Вопрос
Чтобы вычислить ближайшие местоположения, представленные широтой / долготой, я рассматривал возможность разделения карты на небольшие сетки, примерно 100х100 метров.По сути, каждая точка была бы привязана к сетке.
Я понимаю, что вместо этого я мог бы также использовать пространственные индексы с MySQL и т.д., но я планирую использовать нереляционную базу данных, такую как Cassandra, где было бы трудно выполнять индексацию пространственных объектов, и поэтому какой-то метод аппроксимации сетки мог бы быть аккуратным.
Каков был бы наилучший способ создания такой грид-системы и отображения на нее двумерных пространственных местоположений?
Редактировать 1:Возможно, ничего страшного, если сетки не будут идеально однородными, особенно вокруг полюсов.
Решение
Прямоугольные сетки могут быть разумной оценкой, но только на относительно небольшой площади, расположенной не слишком близко к полюсам.Комплексное решение требует иного подхода.
Другие советы
Сопоставление двумерных пространственных координат с вашим пространственным индексом / geohash - интересная проблема.Вы могли бы посмотреть на эта статья о квадратичных деревьях, геохешах и кривых Гильберта.Тот самый Кривая Гильберта является заполняющей пространство кривой, которая обеспечивает локальность;для ваших целей это означает, что близлежащие элементы в одномерном пространственном индексе будут находиться поблизости в двумерном пространстве.
Цель (как описано другими респондентами) состоит в том, чтобы свести к минимуму количество запросов, необходимых для покрытия рассматриваемого пространства, не запрашивая тонны ненужных данных с сервера.То, как вы выполняете сопоставление из двумерного пространства с одномерным индексом, повлияет на эту цель.
Без знания ваших точных требований к приложению геохеширование может оказаться подходящим методом: http://en.wikipedia.org/wiki/Geohash
"Это иерархическая пространственная структура данных, которая делит пространство на сегменты в форме сетки.Геохеши предлагают такие свойства, как произвольная точность и возможность постепенного удаления символов из конца кода, чтобы уменьшить его размер (и постепенно потерять точность). "
Вы не можете создать прямоугольную сетку, которая равномерно отображает земной шар.Если сетка должна быть однородной, вы должны использовать вместо нее треугольники.Но в целом, я сомневаюсь, что это решит вашу проблему.То, что вам нужно, - это 2D восьмиугольник (это ссылка для поиска в Google;проверьте изображения, чтобы легко понять, как это работает) какого-то рода:Вы должны разделить свои координаты на иерархии (например, к северу / югу / востоку / западу от начала координат для первого уровня, а затем между 90 градусами и т.д.).
Затем вы можете сделать пару выборок, которые быстро приведут к получению наименьшего прямоугольника, который содержит существующие координаты.Теперь вы можете проверить размер прямоугольника.Если это < 100 метров, значит, вы нашли решение.В противном случае у вас будет всего несколько позиций для проверки (обычно одна).
Найдите в Google "базу данных octree sql database" для реализаций.