Прямо сейчас у меня есть таблица в базе данных Oracle 10g с колонками LAT(FLOAT)
и LNG(FLOAT)
.Запросить расстояние между двумя объектами без использования функциональности Oracle Spatial?
Задача состоит в том, чтобы найти все записи на определенном расстоянии (радиусе) заданной точки (в центре). Само приложение находится в Java, Hibernate используется как реализация JPA.
После некоторого исследования я обнаружил, что Oracle Spatial необходимо использовать. Тем не менее, нет возможности конвертировать мои столбцы в SDO_GEOMETRY
, поэтому я не могу использовать функциюOracle SDO_WITHIN_DISTANCE
.
Есть ли какое-либо обходное решение для реализации таких функций?
В настоящее время я просто запрашивая все записи и итерацию над ними с формулой Haversine - и это станет узким местом очень скоро :-)
Спасибо за вашу помощь!
Вы всегда можете реализовать гаверсинус alghorithm –
@JakubKania Спасибо за ваш ответ! В настоящее время я использую алгоритм Haversine, но он недостаточно точен - мне нужно проверить расстояния (500 -> 5000) метров, и он не дает точных результатов. – user1772574
Вы не можете напрямую преобразовать столбцы, но не можете ли вы изменить таблицу, чтобы включить новый столбец пространственного типа и вычислить его из значений в Lat и Lng ??? –