geography 数据类型入门

地理空间数据类型 geography 是作为 SQL Server 中的 .NET 公共语言运行时 (CLR) 数据类型实现的。此类型表示圆形地球坐标系中的数据。SQL Servergeography 数据类型用于存储诸如 GPS 纬度和经度坐标之类的椭球体(圆形地球)数据。

注册 geography 类型

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

示例

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

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

CREATE TABLE SpatialTable 
    ( id int IDENTITY (1,1),
    GeogCol1 geography, 
    GeogCol2 AS GeogCol1.STAsText() );
GO

INSERT INTO SpatialTable (GeogCol1)
VALUES (geography::STGeomFromText('LINESTRING(-122.360 47.656, -122.343 47.656)', 4326));

INSERT INTO SpatialTable (GeogCol1)
VALUES (geography::STGeomFromText('POLYGON((-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653))', 4326));
GO

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

DECLARE @geog1 geography;
DECLARE @geog2 geography;
DECLARE @result geography;

SELECT @geog1 = GeogCol1 FROM SpatialTable WHERE id = 1;
SELECT @geog2 = GeogCol1 FROM SpatialTable WHERE id = 2;
SELECT @result = @geog1.STIntersection(@geog2);
SELECT @result.STAsText();