空間類型 - geography
適用於:SQL Server
Azure SQL 資料庫 Azure SQL 受控執行個體
地理空間資料類型 geography 會在 SQL Server 中實作為 .NET Common Language Runtime (CLR) 資料類型。 此類型代表圓形地球座標系統中的資料。 SQL Server geography 資料類型會儲存橢圓體 (圓形地球) 資料,例如 GPS 經緯度座標。
SQL Server 支援 geography 空間資料類型的一組方法。 其中包括開放地理空間協會 (OGC) 標準所定義的 geography 方法,以及該標準的一組 Microsoft 擴充功能。
geography 方法容許的誤差範圍可以高達 1.0e-7 *。 範圍指的是 geography 物件的點之間最大近似距離。
註冊 geography 類型
geography 類型已預先定義,而且可在每一個資料庫中使用。 您可以建立 geography 類型的資料表資料行,並使用與其他系統提供之類型相同的方式來操作 geography 資料。 可用於保存和非保存計算資料行。
範例
A. 示範如何加入及查詢地理資料
下列範例示範如何加入及查詢地理位置資料。 第一個範例會建立具有識別資料行及 geography
資料行 GeogCol1
的資料表。 第三個資料行會將 geography
資料行轉譯成它的開放地理空間協會 (Open Geospatial Consortium,OGC) 已知的文字 (Well-Known Text,WKT) 表示法,並使用 STAsText()
方法。 然後會插入兩個資料列:一個資料列包含 LineString
的 geography
執行個體,另一個資料列包含 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
B. 傳回兩個地理位置執行個體的交集
下列範例使用 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();
C. 在計算資料行中使用地理
下列範例會以使用 geography 型別的保存計算資料行來建立資料表。
IF OBJECT_ID ( 'dbo.SpatialTable', 'U' ) IS NOT NULL
DROP TABLE dbo.SpatialTable;
GO
CREATE TABLE SpatialTable
(
locationId int IDENTITY(1,1),
location geography,
deliveryArea as location.STBuffer(10) persisted
);