Geometry.IsValidDetailed()的替代方案

时间:2018-05-25 18:59:18

标签: sql-server sql-server-2008-r2 spatial-query

是否有其他方法可以用来获取有关Geometry无效的详细信息?

<{1}}中未提供

Geometry.IsValidDetailed(),因此我需要解决此问题。

以下是一个例子:

使用SQL Server 2008 R2(我在Service Pack 2上)。

创建此表:

SQL Server 2008 R2

将此无效多边形插入表格中:

CREATE TABLE [dbo].[GeoTests](
    [Id] [int] IDENTITY(1,1) NOT NULL,
    [Value] [nvarchar](50) NULL,
    [Geo] [geometry] NULL
)

使用此方法可以告诉多边形无效:

INSERT INTO GeoTests (
        Value, 
        Geo
    ) VALUES (
        'Polygon', 
        Geometry::STGeomFromText('POLYGON((99 99 0, 99 100 0, 100 100 0, 99 100 0, 98 100 0, 99 99 0))', 0)
    )

这是我到目前为止选择错误消息的原因:

SELECT Geo.STIsValid() FROM GeoTests

问题是Error_Message()是通用的,只是表明几何是无效的,而不是任何细节。

使用BEGIN TRY SELECT TOP 1000 [Id] ,[Value] ,[Geo].STGeometryType() FROM [Tests].[dbo].[ END TRY BEGIN CATCH PRINT ERROR_MESSAGE() PRINT ERROR_NUMBER() END CATCH SQL Server 2008 R2中实现的函数Geo.IsValidDetailed()发送类似错误是否有任何方法?

0 个答案:

没有答案