С.Т.Не работает на географию - PullRequest
1 голос
/ 13 января 2012

Проблема:

При выполнении @somegeog.STWithin(@othergeog) я получаю исключение:

Msg 6506, Level 16, State 10, Line 5
Could not find method 'STWithin' for type 'Microsoft.SqlServer.Types.SqlGeography' in assembly 'Microsoft.SqlServer.Types'

Справочная информация:

Я впервые работаю с данными географии SQL Server (2008 R2). У меня есть список точек в таблице, и я хочу получить их в заданной области. Я намереваюсь написать хранимую процедуру, которая принимает границы широты и долготы для области.

Я могу написать эту процедуру легко, извлекая широту и долготу из сохраненных географических точек, но я надеялся, что встроенная функциональность сделает всю работу. Пройдя некоторое время по поиску, я нашел метод STWithin , но даже на примере Microsoft я получаю сообщение об ошибке, утверждая, что метод не существует.

MS Пример по ссылке:

DECLARE @g geography;
DECLARE @h geography;
SET @g = geography::Parse('POLYGON ((-120.533 46.566, -118.283 46.1, -122.3 47.45, -120.533 46.566))');
SET @h = geography::Parse('CURVEPOLYGON (COMPOUNDCURVE (CIRCULARSTRING (-122.200928 47.454094, -122.810669 47.00648, -122.942505 46.687131, -121.14624 45.786679, -119.119263 46.183634), (-119.119263 46.183634, -119.273071 47.107523), CIRCULARSTRING (-119.273071 47.107523, -120.640869 47.569114, -122.200928 47.454094)))');
SELECT @g.STWithin(@h);

Может кто-нибудь объяснить, что я делаю не так?

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 11 апреля 2012

Вы можете использовать STIntersects () с типом данных географии в SQL Server 2008. Это намного быстрее, чем использование .Lat и .Long, если у вас настроен пространственный индекс.

1 голос
/ 13 января 2012

Я думаю, что пример, который вы смотрите, относится к SQL Server 2012. Попробуйте пример здесь: http://technet.microsoft.com/en-us/library/bb933991.aspx

...