MakeValid(geography 数据类型)
适用于: SQL Server Azure SQL 数据库 Azure SQL 托管实例
将无效的 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))