geography (Transact-SQL)

地理位置空間資料類型 geography 會在 SQL Server 中實作為 .NET Common Language Runtime (CLR) 資料類型。此類型代表圓形地球座標系統中的資料。SQL Servergeography 資料類型會儲存橢圓體 (圓形地球) 資料,例如 GPS 經緯度座標。

SQL Server 2008 支援 geography 空間資料類型的一組方法。這些方法包括開放式地理空間協會 (Open Geospatial Consortium,OGC) 標準所定義的 geography 方法以及該標準的一組 Microsoft 擴充。

如需有關 geography 空間資料類型方法的詳細資訊,請參閱<geography 資料類型方法參考>。

註冊 geography 類型

geography 類型已預先定義,而且可在每一個資料庫中使用。您可以建立 geography 類型的資料表資料行,並使用與其他系統提供之類型相同的方式來操作 geography 資料。

範例

下列範例示範如何加入及查詢地理位置資料。第一個範例會建立具有識別資料行及 geography 資料行 GeogCol1 的資料表。第三個資料行會將 geography 資料行轉譯成它的開放式地理空間協會 (Open Geospatial Consortium,OGC) 已知的文字 (Well-Known Text,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(47.656 -122.360, 47.656 -122.343)', 4326));

INSERT INTO SpatialTable (GeogCol1)
VALUES (geography::STGeomFromText('POLYGON((47.653 -122.358, 47.649 -122.348, 47.658 -122.348, 47.658 -122.358, 47.653 -122.358))', 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();