使用英语阅读

通过


geometry (Transact-SQL)

平面空间数据类型 geometry 在 SQL Server 中作为公共语言运行时 (CLR) 数据类型实现。此类型表示欧几里得(平面)坐标系中的数据。

SQL Server 2008 支持 geometry 空间数据类型的一组方法。这些方法包括开放地理空间联盟 (OGC) 标准和对该标准的一组 Microsoft 扩展所定义的 geometry 方法。

有关 geometry 空间数据类型方法的详细信息,请参阅 geometry 数据类型方法引用

注册 geometry 类型

geometry 类型已预定义,可在每个数据库中使用。您可以创建 geometry 类型的表列并对 geometry 数据进行操作,就像使用其他 CLR 类型一样。

示例

以下两个示例显示了如何添加和查询几何图形数据。第一个示例创建包含一个标识列和一个 geometry 列 GeomCol1 的表。第三列将 geometry 列呈现为其开放地理空间联盟 (OGC) 熟知文本 (WKT) 表示形式,并使用 STAsText() 方法。接下来将插入两行:一行包含 geometry 类型的 LineString 实例,一行包含 Polygon 实例。

IF OBJECT_ID ( 'dbo.SpatialTable', 'U' ) IS NOT NULL 
    DROP TABLE dbo.SpatialTable;
GO

CREATE TABLE SpatialTable 
    ( id int IDENTITY (1,1),
    GeomCol1 geometry, 
    GeomCol2 AS GeomCol1.STAsText() );
GO

INSERT INTO SpatialTable (GeomCol1)
VALUES (geometry::STGeomFromText('LINESTRING (100 100, 20 180, 180 180)', 0));

INSERT INTO SpatialTable (GeomCol1)
VALUES (geometry::STGeomFromText('POLYGON ((0 0, 150 0, 150 150, 0 150, 0 0))', 0));
GO

第二个示例使用 STIntersection() 方法返回两个以前插入的 geometry 实例相交的点。

DECLARE @geom1 geometry;
DECLARE @geom2 geometry;
DECLARE @result geometry;

SELECT @geom1 = GeomCol1 FROM SpatialTable WHERE id = 1;
SELECT @geom2 = GeomCol1 FROM SpatialTable WHERE id = 2;
SELECT @result = @geom1.STIntersection(@geom2);
SELECT @result.STAsText();