SQL Server 2008 - Запрос пространственных данных - PullRequest
3 голосов
/ 12 февраля 2010

У меня есть база данных SQL Server, которую я перенес на SQL Server 2008. Я хочу воспользоваться пространственными возможностями. Однако мои данные используют более традиционные типы данных. Например, у меня есть следующие две таблицы:

Location
--------
ID char(36)
Address nvarchar (256)
City nvarchar (256)
State char (2)
PostalCode char (10)

Order
-----
LocationID char(36)
Product nvarchar(30)
Quantity int
TotalPrice decimal

Как я могу использовать пространственные особенности SQL Server 2008 для получения заказов в радиусе 10 миль от определенного почтового индекса?

Спасибо!

1 Ответ

3 голосов
/ 12 февраля 2010

Вам необходимо сохранить широту и долготу в вашей таблице Location, а также вам нужно будет указать широту и долготу ваших почтовых индексов.

SQL Server может работать только с координатами.Возможно, вы захотите использовать службу обратное геокодирование для получения координат ваших местоположений.

В любом случае, так может выглядеть ваш геопространственный запрос в SQL Server 2008:

DECLARE @some_point geography;
SET @some_point = geography::STGeomFromText('POINT(-122.34900 47.65100)', 4326);

SELECT
    Order.Product
FROM
    Order
INNER JOIN
    Location ON (Location.ID = Order.LocationID)
WHERE
    Location.Position.STDistance(@some_point) < 16093;

Выше предполагается, что в вашей таблице Location будет поле типа geography , которое называется Position.

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