MakeValid(geography 数据类型)

将无效的 geography 实例转换为具有有效开放地理空间联盟 (OGC) 类型的有效 geography 实例。

如果输入对象针对 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 数据类型)

其他资源

地理实例上的扩展方法