共用方式為


建立、構建和查詢地理實體

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

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

建立或建構新的地理實例

從現有的實例建立新的 geography 實例

數據類型 geography 提供許多內建方法,可讓您用來根據現有的實例建立新的 geography 實例。

在地理位置周圍建立緩衝區
STBuffer(geography 資料類型)

為地理區域建立一個緩衝區,以允許一定的寬容度
BufferWithTolerance (geography 資料類型)

從兩個 geography 實例的交集建立地理位置
STIntersection (geography 資料類型)

從兩個 geography 實例的聯集建立地理位置
STUnion(地理空間資料類型)

從某個地理位置不重疊另一個地理位置的點建立地理位置
STDifference (geography 數據類型)

建構地理實例,來源於 Well-Known 的文字輸入

數據類型 geography 提供數個內建方法,可從 Open Geospatial Consortium (OGC) WKT 表示法產生地理位置。 WKT 標準是一個文字字串,可讓地理數據以文字形式交換。

從 WKT 輸入建構任何類型的地理實例
STGeomFromText(geography 數據類型)

解析(geography 資料類型)

從 WKT 輸入建構 geography Point 實例
STPointFromText (geography 資料類型)

利用 WKT 輸入建構地理 MultiPoint 實例
STMPointFromText (geography 資料類型)

從 WKT 輸入建構 geography LineString 實例
STLineFromText (geography 資料類型)

從 WKT 輸入建構 geography MultiLineString 實例
STMLineFromText (geography 數據類型)

從 WKT 輸入建構地理位置 Polygon 實例
STPolyFromText(地理空間資料類型)

從 WKT 輸入建構地理位置 MultiPolygon 實例
STMPolyFromText(geography 數據類型)

從 WKT 輸入中建構 geography GeometryCollection 的實例
STGeomCollFromText (geography 數據類型)

從 Well-Known 二進位輸入建構 geography 實例

WKB 是由 OGC 指定的二進位格式,可 Geography 允許在用戶端應用程式與 SQL 資料庫之間交換數據。 下列函式接受 WKB 輸入來建構 geography 實例:

要從 WKB 輸入中建構任何類型的地理實例
STGeomFromWKB (geography 數據類型)

從 WKB 輸入建構 geography Point 實例
STPointFromWKB (地理數據類型)

從 WKB 輸入建構地理位置 MultiPoint 實例
STMPointFromWKB (geography 數據類型)

從 WKB 輸入建構 geography LineString 實例
STLineFromWKB (geography 數據類型)

從 WKB 輸入建構地理位置 MultiLineString 實例
STMLineFromWKB (地理數據類型)

建構來自 WKB 輸入的地理多邊形實例
STPolyFromWKB (地理 數據類型)

從 WKB 輸入資料建構地理 MultiPolygon 實例
STMPolyFromWKB (地理資訊類型)

從 WKB 輸入中建立 geography GeometryCollection 實例
STGeomCollFromWKB (geography 數據類型)STGeomCollFromWKB (geography 數據類型)

從 GML 文字輸入建構地理實例

數據類型 geography 會提供方法,從 GML 產生 geography 實例,這是實例的 geography XML 表示法。 SQL Server 支援 GML 的子集。

如需地理標記語言的詳細資訊,請參閱 OGC 規格: OGC 規格、地理標記語言。

利用 GML 輸入建構任何類型的地理例項
GeomFromGML (geography 資料類型)

從 geography 實例傳回 Well-Known 文本 和 Well-Known 二進位

您可以使用下列方法來傳回 geography 實例的 WKT 格式或 WKB 格式:

要傳回 geography 實例的 WKT 表示法
STAsText (geography 資料類型)

ToString (geography 資料類型)

傳回 geography 實例的 WKT 表示法,包括任何 Z 和 M 值
AsTextZM (geography 資料類型)

要傳回地理實例的 WKB 表示法
STAsBinary(geography 數據類型)

傳回 geography 實例的 GML 表示法
AsGml (geography 資料類型)

查詢「geography」實例的屬性和行為表現

所有 geography 實例都有數個屬性,可透過 SQL Server 提供的方法來擷取。 下列主題會定義地理類型的屬性和行為,以及查詢每個類型的方法。

有效性、實例類型及幾何集合資訊

geography建構實例之後,您可以使用下列方法來傳回實例類型,或如果是GeometryCollection實例,則傳回特定geography實例。

返回地理位置的實例類型
STGeometryType (geography 數據類型)

判斷 geography 是否為指定的實例類型
InstanceOf(地理資料類型)

判斷 geography 實例的格式是否適合其實例類型
STNumGeometries(geography 數據類型)

傳回 GeometryCollection 實例中的特定地理位置
STGeometryN (geography 數據類型)STGeometryN (geography 數據類型)

點數

所有無空 geography 實例都是由 所組成。 這些點代表繪製實例之地球 geography 的緯度和經度座標。 數據類型 geography 提供許多內建方法來查詢實例的點。

傳回組成實例的點數
STNumPoints (geography 數據類型)

傳回 實例中的特定點
STPointN (geometry 數據類型)

傳回實例的起點
STStartPoint(geography 資料類型)

傳回實例的結束點
STEndpoint (geography 數據類型)

尺寸

無空 geography 實例可以是 0、1 或 2 維。 零維度 geography 實例,例如 PointMultiPoint,沒有長度或區域。 一維物件,例如 LineString, CircularStringCompoundCurveMultiLineString,具有長度。 二維實例,例如 Polygon, CurvePolygon、 和 MultiPolygon,具有區域和長度。 空實例會報告維度為 -1,而 GeometryCollection 則會報告其內容的最大維度。

傳回實例的維度
STDimension (geography 資料型別)

傳回實例的長度
STLength (geography 資料類型)

傳回實例的區域
STArea (地理數據類型)

geography的實例沒有任何點。 空 LineString, CircularString的、 CompoundCurveMultiLineString 實例的長度為 0。 空白Polygon, CurvePolygonMultiPolygon實例的區域為0。

判斷實例是否為空白
STIsEmpty (geography 數據類型)

結案

封閉geography的實例是一個圖形,其起點和終點相同。 Polygon 實例被視為已關閉。 Point 實例不會關閉。

一個環是簡單且封閉的 LineString 實例。

判斷實例是否已關閉
STIsClosed(geography 數據類型)

傳回 Polygon 實例中的環形數目
NumRings (geography 資料類型)

傳回地理實例中指定的環
RingN (geography 資料類型)

空間參考識別碼 (SRID)

空間參考標識碼 (SRID) 是一個識別碼,指定實例所代表的橢圓體座標系統 geography 。 無法比較具有不同 SRID 的兩 geography 個實例。

設定或傳回 實例的 SRID
STSrid (geography 資料類型)

這個屬性可以修改。

判斷地理實體之間的關聯性

數據類型 geography 提供許多內建方法,可用來判斷兩個 geography 實例之間的關聯性。

判斷兩個實例是否組成相同的點集
STEquals (幾何資料類型)

判斷兩個實例是否不相交
STDisjoint (geometry 數據類型)

判斷兩個實例是否相交
STIntersects (幾何 資料類型)

判斷兩個實例相交的點或點
STIntersection (geography 資料型別)

判斷兩個 geography 實例中點之間的最短距離
STDistance (geometry 資料類型)

判定兩個地理實例之間的點差異
STDifference (geography 資料類型)

求得某 geography 實例相較於另一個實例的對稱差集或唯一點
STSymDifference (地理資料類型)

地理實例必須使用支援的 SRID

SQL Server 支援以 EPSG 標準為基礎的 SRID。 當執行計算或使用地理空間數據的方法時,必須使用 SQL Server 支援的 geography 實例的 SRID。 SRID 必須符合 sys.spatial_reference_systems 目錄檢視中顯示的其中一個 SRID。 如先前所述,當您使用 geography 數據類型對空間數據執行計算時,您的結果將取決於在建立數據時所使用的橢圓體,因為每個橢圓體都會指派特定的空間參考標識符(SRID)。

SQL Server 在實例上使用geography方法時,會使用預設的 SRID 4326,對應至 WGS 84 空間參考系統。 如果您使用 WGS 84 以外的空間參考系統的數據(或 SRID 4326),則必須判斷地理空間數據的特定 SRID。

範例

下列範例示範如何新增和查詢地理位置數據。

  • 第一個範例會建立具有識別欄位和geography欄位GeogCol1的數據表。 第三個欄會將 geography 欄轉換成其在開放地理空間聯盟(OGC) Well-Known Text (WKT) 表示法,並使用 STAsText() 方法。 接著會插入兩個數據列:一個數據列包含 LineStringgeography實例,一個數據列包含 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();  
    

另請參閱

空間數據 (SQL Server)