Поиск ближайшего совпадения по широте и долготе с помощью спящего режима - PullRequest
2 голосов
/ 24 апреля 2011

Допустим, я заставляю пользователя выбирать long и lat на карте. У меня есть база данных со следующими столбцами:

zip
state
latitude
longitude
city
full_state

Как получить самое близкое совпадение для длинных и длинных с Hibernate HQL-запросом?

Ответы [ 3 ]

2 голосов
/ 25 апреля 2011

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

широта <(широта +) и широта> (широта-) и долгота <(долгота +) и долгота> (долгота-)

Я думаю, что 1 градус широты или долготы составляет около 69,11 мили.поэтому, чтобы найти что-нибудь в пределах 50 миль, установите границу около 0,8

2 голосов
/ 25 апреля 2011

Этот ответ не будет отвечать конкретно на ваш вопрос, но есть специальные механизмы базы данных для обработки географических данных, потому что в противном случае, как вы упоминали, вам нужно пройти через все ваши данные и рассчитать расстояние для каждого пользовательского запроса.

Я сделал что-то подобное, прежде чем использовать oracle пространственный ... читая эту вики-страницу, я обнаружил, что есть расширение для Postgres под названием PostGis , которое также допускает пространственные запросы.

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

0 голосов
/ 10 июля 2013

почему бы не использовать просто Point или Geom в спящем режиме? с этими типами вы можете выполнить все запросы, которые вы хотите с hql и POSTGIS? Вы можете создать точку просто так:

ST_POINTFROMTEXT ('POINT (LONGITUDE LATITUDE)')

????

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...