получить почтовый индекс из широты, долготы

Я скачал список почтовых индексов Великобритании с http://www.ordnancesurvey.co.uk/oswebsite/opendata/index.html и установил его в базу данных MSSQL 2005. Таблица состоит из почтового индекса, широты и долготы. Мне нужен эффективный метод, чтобы получить ближайший почтовый индекс к заданной широте/долготе. Вычисление расстояния между двумя точками и выбор наименьшей означало бы циклическое перебор всех данных для каждого запроса. Всего около 1,7 миллиона записей. Спасибо.


person Pierce    schedule 14.08.2010    source источник
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