получить почтовый индекс от широты, долготы - PullRequest
1 голос
/ 14 августа 2010

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

1 Ответ

2 голосов
/ 14 августа 2010

Вы могли бы ускорить свои вычисления, сначала отфильтровав свой запрос, используя «приближение круга» - т.е. вернуть все почтовые индексы в пределах определенного радиуса delta. Основной запрос должен выглядеть примерно так:

SELECT postcode, x, y FROM table WHERE ((x BETWEEN x - delta AND x + delta) AND (y BETWEEN y - delta AND y + delta))

И теперь количество оставшихся данных должно быть немного более управляемым.

Кроме того, если вы разрабатываете что-то «критически важное», обязательно посмотрите PostGIS . Возможно, они уже решили некоторые проблемы, с которыми вы можете столкнуться ...;)

...