Как проверить, превышает ли полигон ограничение полусферы в SQL Server - PullRequest
2 голосов
/ 20 июля 2011

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

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

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

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

Ответы [ 2 ]

2 голосов
/ 20 июля 2011

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

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

1 голос
/ 20 июля 2011

а как же

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

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

РЕДАКТИРОВАТЬ 2: Добавлен правильный тип исключения.

...