Найти магазины в пределах 10 миль от почтового индекса? - PullRequest
2 голосов
/ 09 марта 2012

У меня есть список магазинов с их почтовыми индексами.Что мне нужно сделать, так это то, что когда пользователь вводит почтовый индекс на веб-странице, он ищет в БД, а затем находит ближайший 10 к этому почтовому индексу.

пример данных, которые у меня есть:

ID  = 1
Store =Halfords 
Address 1 =Unit 6b
Address 2 = Braidfute Retail Park   
Address 3   = Lanark    
Address 4 =South Lanarkshire
Postal Code = ML11 9AE
Lat = 55.6711692810059
Long = -3.77314400672913

Я могу преобразовать почтовый индекс в долготу и широту, какой запрос мне нужно выполнить, чтобы найти магазины в пределах 10 миль в таблице ym этогошнур

Ответы [ 2 ]

7 голосов
/ 09 марта 2012

Во-первых, вам понадобится широта / долгота каждого почтового индекса и сохраните их в таблице вместе с геопространственным представлением (тип данных GEOGRAPHY или GEOMETRY).Когда пользователь вводит почтовый индекс, вы можете посмотреть этот почтовый индекс в своей базе данных, чтобы найти его местоположение.

Вам также нужно будет сохранить представление GEOGRAPHY / GEOMETRY для каждого из магазинов/ lons у вас сейчас есть.

Исходя из этого, вы можете использовать все геопространственные функции SQL Server для выполнения геопространственных поисков.

Я сделал доступным GitHub aПриложение .NET, которое будет импортировать бесплатный набор данных почтовых индексов Ordnance Survey (все почтовые индексы в ГБ) в SQL Server, преобразовывая все предоставленные им восточные и северные направления в широты и долготы, а затем создавая столбец географии.У меня есть полное сообщение в блоге по этому вопросу здесь .Конечный результат будет использоваться так:

DECLARE @home GEOGRAPHY
SELECT @home = GeoLocation 
FROM dbo.PostCodeData 
WHERE OutwardCode = 'AB12' AND InwardCode = '3CD' -- Postcode entered by user

-- find all stores within 10 miles of the entered postcode
SELECT *
FROM dbo.Stores
WHERE GeoLocation.STDistance(@home) <= (10 * 1609) -- 1609 = approx metres in 1 mile

Надеюсь, это будет хорошей отправной точкой.

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