2011-07-19 3 views
2

Я храню многоугольники в базе данных SQL Server 2008, и я знаю о ограничении полушария.Как проверить, превышает ли многоугольник ограничение полушария в SQL Server

http://blogs.msdn.com/b/isaac/archive/2009/02/06/the-geography-hemisphere-limitation.aspx

Есть ли способ, чтобы проверить, прежде чем вставить/редактировать многоугольник, что она не превышает ограничения полусферы?

Приложение, в котором оно используется, написано на JavaScript и C#, поэтому проверка может быть на любом из этих языков или sql.

ответ

2

Статья, на которую вы ссылаетесь, дает один ответ: используйте EnvelopeAngle для вычисления половины угла, подпадающего под геометрический объект. Если результат равен> = 90, объект охватывает полусферу.

Другим подходом является обработка ошибки после ее возникновения (путем исключения исключения или, тем не менее, ошибки), а не проверки того, что конкретный объект может вызвать ошибку заранее.

1

насчет

try 
{ 
    Microsoft.SqlServer.Types.SqlGeography.Parse(YourPolygon); 
    // everything is ok... 
} 
catch (Microsoft.SqlServer.Types.GLArgumentException _E) 
{ 
    // Polygon not ok 
} 

EDIT: приведенный выше код такой же используется в ссылке, которую вы публикуемую (смотрите внимательно за исключением они показывают) - проверка происходит, когда многоугольник разбирается в тип SqlGeography ,

EDIT 2: Добавлен правильный тип исключения.

Смежные вопросы