Я скачал список почтовых индексов Великобритании с http://www.ordnancesurvey.co.uk/oswebsite/opendata/index.html и установил его в базу данных MSSQL 2005. Таблица состоит из почтового индекса, широты и долготы. Мне нужен эффективный метод, чтобы получить ближайший почтовый индекс к заданной широте/долготе. Вычисление расстояния между двумя точками и выбор наименьшей означало бы циклическое перебор всех данных для каждого запроса. Всего около 1,7 миллиона записей. Спасибо.
получить почтовый индекс из широты, долготы
comment
Пожалуйста, сделайте Google для поиска близости
- person CarneyCode   schedule 14.08.2010
Ответы (1)
Вы можете ускорить свои расчеты, сначала отфильтровав свой запрос, используя «приближение круга», т.е. вернуть все почтовые индексы в пределах определенного радиуса delta
. Основной запрос должен быть примерно таким:
SELECT postcode, x, y FROM table WHERE ((x BETWEEN x - delta AND x + delta) AND (y BETWEEN y - delta AND y + delta))
И теперь количество оставшихся данных должно быть немного более управляемым.
Кроме того, если вы разрабатываете что-то критически важное, обязательно загляните в PostGIS. Возможно, они уже решили некоторые проблемы, с которыми вы можете столкнуться... ;)
person
plaes
schedule
14.08.2010