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

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

1
задан j0k 11 September 2013 в 11:45
поделиться

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. Возможно, они уже решили некоторые проблемы, с которыми вы можете столкнуться... ;)

.
2
ответ дан 2 September 2019 в 22:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: