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)