Поделиться через


MakeValid (тип данных geography)

Преобразует недопустимый экземпляр geography в допустимый экземпляр geography с допустимым типом OGC (Open Geospatial Consortium).

Если входной объект возвращает для STIsValid() значение False, то MakeValid() преобразует недопустимый экземпляр в допустимый.

Этот метод типа данных geography поддерживает экземпляры FullGlobe или пространственные экземпляры, размер которых больше полушария.

Синтаксис

.MakeValid ()

Типы возвращаемых данных

Возвращаемый тип SQL Server: geography

Возвращаемый тип CLR: SqlGeography

Замечания

Применение этого метода может изменить тип экземпляра geography. Кроме того оно может привести к небольшому сдвигу точек в экземпляре geography. Результаты выполнения некоторых методов, например NumPoint(), могут изменяться.

В тех случаях, когда недопустимый пространственный экземпляр пересекает экватор, а EnvelopeAngle() = 180, возвращается экземпляр FullGlobe. Метод типа данных MakeValid() geography сделает максимум, чтобы вернуть допустимый экземпляр, но точность результатов не гарантируется.

ПримечаниеПримечание

Недопустимые объекты могут быть сохранены в базе данных. Методы, применимые к недопустимым экземплярам (то есть тем, для которых STIsValid() возвращает значение False), проверяют правильность или допускают экспорт: STIsValid(), MakeValid(), STAsText(), STAsBinary(), ToString(), AsTextZM() и AsGml().

Этот метод не является точным.

Примеры

В первом примере создается недопустимый экземпляр LineString, который перекрывает сам себя, и используется метод STIsValid(), чтобы подтвердить, что этот экземпляр является недопустимым. Функция STIsValid() возвращает значение 0 для недопустимого экземпляра.

DECLARE @g geography;
SET @g = geography::STGeomFromText('LINESTRING(0 2, 1 1, 1 0, 1 1, 2 2)', 4326);
SELECT @g.STIsValid();

Во втором примере, чтобы преобразовать экземпляр в допустимый и проверить, что этот экземпляр действительно допустим, используется метод MakeValid(). Функция STIsValid() возвращает значение 1 для допустимого экземпляра.

SET @g = @g.MakeValid();
SELECT @g.STIsValid();

В третьем примере проверяется, как был изменен экземпляр для преобразования его в допустимый.

SELECT @g.ToString();

В этом примере при выборе экземпляра LineString значения возвращаются так же, как при использовании допустимого экземпляра MultiLineString.

MULTILINESTRING ((0 2, 1 1, 2 2), (1 1, 1 0))

См. также

Справочник

STIsValid (тип данных geometry)

Другие ресурсы

Расширенные методы в экземплярах географических объектов