標籤:
原文:SQL Server 2008 geometry 資料類型
摘自SQL Server 2008協助
平面空間資料類型 geometry 是作為 SQL Server 中的公用語言進行時 (CLR) 資料類型實現的。此類型表示歐幾裡得(平面)座標系中的資料。
註冊 geometry 類型
geometry 類型已進行預定義,並可在每個資料庫中使用。您可以建立 geometry 類型的表列並對 geometry 資料進行操作,就像使用其他 CLR 類型一樣。
樣本
以下兩個樣本顯示了如何添加和查詢幾何資料。第一個樣本建立了帶有識別欄位和 geometry
列 GeomCol1
的表。第三列將 geometry
列呈現為其開放地理空間聯盟 (OGC) 熟知文本 (WKT) 表示形式,並使用 STAsText()
方法。接下來將插入兩行:一行包含 geometry
類型的 LineString
執行個體,一行包含 Polygon
執行個體。
IF OBJECT_ID ( ‘dbo.SpatialTable‘, ‘U‘ ) IS NOT NULL DROP TABLE dbo.SpatialTable;GOCREATE TABLE SpatialTable ( id int IDENTITY (1,1), GeomCol1 geometry, GeomCol2 AS GeomCol1.STAsText() );GOINSERT INTO SpatialTable (GeomCol1)VALUES (geometry::STGeomFromText(‘LINESTRING (100 100, 20 180, 180 180)‘, 0));INSERT INTO SpatialTable (GeomCol1)VALUES (geometry::STGeomFromText(‘POLYGON ((0 0, 150 0, 150 150, 0 150, 0 0))‘, 0));GO
第二個樣本使用 STIntersection()
方法返回兩個以前插入的 geometry
執行個體相交的點。
DECLARE @geom1 geometry;DECLARE @geom2 geometry;DECLARE @result geometry;SELECT @geom1 = GeomCol1 FROM SpatialTable WHERE id = 1;SELECT @geom2 = GeomCol1 FROM SpatialTable WHERE id = 2;SELECT @result = @geom1.STIntersection(@geom2);SELECT @result.STAsText();
維度
非空 geometry 執行個體可以為零維、一維或二維。零維 geometries(例如 Point 和 MultiPoint)沒有長度或面積。一維對象(例如 LineString 和 MultiLineString)具有長度。二維執行個體(例如 Polygon 和 MultiPolygon)具有面積和長度。空執行個體將報告為 -1 維,並且GeometryCollection 將根據其內容類型報告一個面積。
空
“空”geometry 執行個體不包含任何點。空的 LineString 和 MultiLineString 執行個體的長度為零。空的 Polygon 和 MultiPolygon 執行個體的面積為 0。
簡單
為了使執行個體的 geometry 變得“簡單”,必須符合以下全部兩個要求:
執行個體的每個圖形不能與自身相交,但其終點除外。
執行個體的任何兩個圖形可在某個點上相交,但兩個邊界上的點除外。
邊界、內部和外部
geometry 執行個體的“內部”是指由執行個體佔用的空間,而“外部”是指未佔用的空間。
“邊界”由 OGC 定義,如下所示:
- Point 和 MultiPoint 執行個體沒有邊界。
- LineString 和 MultiLineString 邊界由起始點和終點形成,並刪除那些出現次數為偶數的點。
信封
geometry 執行個體的“信封”又稱為“邊界框”,它是一個由執行個體的最小和最大座標 (X,Y) 形成的軸對齊矩形。
閉合
“閉合的”geometry 執行個體是指起始點和終點相同的圖形。Polygon 執行個體是閉合的。Point 執行個體不是閉合的。
環是一個簡單、閉合的 LineString 執行個體。
空間引用標識符 (SRID)
空間引用標識符 (SRID) 是指定 geometry 執行個體所在的座標系的標識符。兩個擁有不同 SRID 的執行個體是不可比的。
geometry 資料類型提供了許多內建方法,您可以使用這些方法基於現有執行個體建立新的 geometry 執行個體。
geometry 資料類型提供了許多內建方法,您可以使用這些方法確定兩個 geometry 執行個體之間的關係。
所有 geometry 執行個體都有很多可以通過 SQL Server 提供的方法進行檢索的屬性。下列主題定義了幾何圖形類型的屬性和行為,並為查詢每種圖形定義了方法。
可通過以熟知文本(Well-Known Text,WKT)或熟知二進位(Well-Known Binary,WKB)格式輸入資料來構造 geometry 空間資料類型的執行個體。
STGeomFromText(geometry 資料類型)
從開放地理空間聯盟 (OGC) 熟知文本 (WKT) 表示形式返回 geometry 執行個體,增加了該執行個體傳遞的任何 Z(標高)和 M(度量)值。
文法
STGeomFromText ( ‘geometry_tagged_text‘ , SRID )
參數
geometry_tagged_text
-
您希望返回的 geometry 執行個體的 WKT 表示形式。geometry_tagged_text 為 nvarchar(max) 運算式。
-
SRID
-
一個 int 運算式,它表示您希望返回的 geometry 執行個體的空間引用 ID (SRID)。
傳回型別
SQL Server 傳回型別:geometry
CLR 傳回型別:SqlGeometry
備忘
STGeomFromText()
返回的 geometry 執行個體的 OGC 類型設定為相應的 WKT 輸入。
如果輸入格式不正確,此方法將引發 FormatException。
樣本
下面的樣本使用 STGeomeFromText()
建立 geometry
執行個體。
DECLARE @g geometry;SET @g = geometry::STGeomFromText(‘LINESTRING (100 100, 20 180, 180 180)‘, 0);SELECT @g.ToString();
SQL Server 2008 geometry 資料類型