共用方式為


建立、建構並查詢地理位置執行個體

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

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

本主題內容

  • 建立或建構新的地理位置執行個體

    • 從現有的執行個體建立新的地理位置執行個體

    • 從已知的文字輸入建構地理位置執行個體

    • 從已知的二進位輸入建構地理位置執行個體

    • 從 GML 文字輸入建構地理位置執行個體

  • 從地理位置執行個體傳回已知的文字和已知的二進位

  • 查詢地理位置執行個體的屬性和行為

    • 有效性、執行個體類型和 GeometryCollection 資訊

    • 點數

    • 維度

    • 空白

    • 封閉性

    • 空間參考識別碼 (SRID)

  • 判斷地理位置執行個體之間的關聯性

  • 地理位置執行個體必須使用支援的 SRID

  • 範例

[回到頁首]

建立或建構新的地理位置執行個體

從現有的執行個體建立新的地理位置執行個體

geography 資料類型提供許多內建方法,您可以使用這些方法來根據現有執行個體建立新的 geography 執行個體。

從已知的文字輸入建構地理位置執行個體

geography 資料類型提供數種內建方法,可從開放式地理空間協會 (Open Geospatial Consortium,OGC) 的 WKT 表示法產生地理位置。 WKT 標準是一種文字字串,可允許使用文字格式交換地理位置資料。

從已知的二進位輸入建構地理位置執行個體

WKB 是 OGC 指定的一種二進位格式,可允許在用戶端應用程式與 SQL 資料庫之間交換 Geography 資料。 下列函數可接受 WKB 輸入來建構地理位置執行個體:

從 GML 文字輸入建構地理位置執行個體

geography 資料類型提供一種方法,從 GML 產生 geography 執行個體,而 GML 是 geography 執行個體的 XML 表示法。 SQL Server 可支援 GML 的子集。

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

從地理位置執行個體傳回已知的文字和已知的二進位

您可以使用下列方法傳回 WKT 或 WKB 格式的 geography 執行個體:

查詢地理位置執行個體的屬性和行為

所有 geography 執行個體都有許多屬性,這些屬性可透過 SQL Server 提供的方法來加以擷取。 下列主題定義地理位置類型的屬性和行為以及用來查詢每一個類型的方法。

有效性、執行個體類型和 GeometryCollection 資訊

建構 geography 執行個體之後,您就可以使用下列方法來傳回執行個體類型,或者,如果它是 GeometryCollection 執行個體,就會傳回特定的 geography 執行個體。

點數

所有非空白的 geography 執行個體都是由「點」(Point) 所組成。 這些點代表 geography 執行個體繪製所在之地球的經緯度座標。 geography 資料類型提供了許多內建方法來查詢執行個體的點。

維度

非空的 geography 執行個體可以是 0 維度、1 維度或 2 維度。 零維度 geography 執行個體 (如 Point 和 MultiPoint) 沒有長度或區域。 一維度物件 (如 LineString, CircularString、CompoundCurve 和 MultiLineString) 具有長度。 二維度執行個體 (如 Polygon, CurvePolygon 和 MultiPolygon) 具有區域和長度。 空的執行個體會報告 -1 的維度,而 GeometryCollection 則會報告其內容的最大維度。

空的

「空的」(Empty) geography 執行個體沒有任何點。 空的 LineString, CircularString、CompoundCurve 和 MultiLineString 執行個體的長度是 0。 空的 Polygon, CurvePolygon 和 MultiPolygon 執行個體的區域是 0。

封閉性

「封閉式」(Closed) geography 執行個體是起始點與結束點相同的圖形。 Polygon 執行個體視為封閉式。 Point 執行個體視為非封閉式。

環形是簡單、封閉的 LineString 執行個體。

空間參考識別碼 (SRID)

空間參考識別碼 (SRID) 是用來指定代表 geography 執行個體之橢圓體座標系統的識別碼。 具有不同 SRID 的兩個 geography 執行個體無法進行比較。

這個屬性可以修改。

判斷地理位置執行個體之間的關聯性

geography 資料類型提供許多內建方法,您可以使用這些方法來判斷兩個 geography 執行個體之間的關聯性。

地理位置執行個體必須使用支援的 SRID

SQL Server 支援以 EPSG 標準為根據的 SRID。 當執行計算或是搭配地理位置空間資料使用方法時,必須使用 SQL Server 支援之 geography 執行個體的 SRID。 SRID 必須符合 sys.spatial_reference_systems 目錄檢視中所顯示的其中一個 SRID。 如同之前所述,當您使用 geography 資料類型在您的空間資料上執行計算時,您的結果將會依據建立資料時使用哪一個橢圓體而定,因為每一個橢圓體都會指派一個特定的空間參考識別碼 (SRID)。

在 geography 執行個體上使用方法時,SQL Server 會使用預設 SRID 4326,此 SRID 會對應到 WGS 84 空間參考系統。 如果您使用 WGS 84 (或 SRID 4326) 以外之空間參考系統內的資料,您需要為您的地理位置空間資料決定特定的 SRID。

範例

下列範例示範如何加入及查詢地理位置資料。

  • 第一個範例會建立具有識別資料行及 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(-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)