SQL Server 2008之空間資料應用 二

2022-02-05 05:03:57 字數 2452 閱讀 1234

在sql server 2008之空間資料應用(一)中概略的介紹了sql server 2008中支援的兩種空間資料型別:geometry和geography。

空間資料的具體型別

在sql server 2008中,geometry和geography支援十一種空間資料物件或例項型別。下圖所示是可例項化型別(以藍色背景顯示)和其抽象基類(以黃色背景顯示)的繼承關係圖。可例項化型別以藍色背景顯示,共7個,它們分別是point、multipoint、linestring、multilinestring、polygon、multipolygon 和 geometrycollection。

在sql server 2008之空間資料應用(一)中也看到了,在定義資料欄位的型別時,只提供geometry和geography兩種,那又是如何來表示上述7中具體的可例項化類呢?這是sql server內部機制實現的。表中的一列,它可以混雜多種不同的地理空間資訊。某一行可能表示湖北省國土區域,某一行表示從我老家至華中師範大學的行車路線,某一行表示大別山區的一處名勝古蹟......

point:用x、y座標來表示乙個確切的位置,作為可選的,可以包含z值和m值,它是乙個零維物件。point例項沒有長度、面積等資訊,它是構成其它複雜物件的基礎。

linestring:線段是兩點間的最短路徑。linestring表示一系列的點和連線這些點的線段。它是乙個一維物件,具備長度資訊,但沒有面積資訊。

polygon:polygon是由乙個環(ring)所定義的閉合的二維圖形。具備長度和面積資訊。polygon是儲存為一系列點的二維表面,這些點定義乙個外部邊界環和零個或多個內部環。可以從至少具有三個不同點的環中構建乙個polygon例項。polygon例項也可以為空。polygon的外部環和任意內部環定義了其邊界。環內部的空間定義了polygon的內部。polygon的內部環在單個切點處既可與自身接觸也可彼此接觸,但如果polygon的內部環交叉,則該例項無效。

geomcollection:除了單例項型別(上述point、linestring、polygon三種)之外,還有一種可以表示例項集合的型別。表示這種集合型別的基類是geomcollection,其實例物件可以是多種單例項型別例項的集合。

multipoint:繼承自geomcollection,是零個點或多個點的集合。

multilinestring:繼承自geomcollection,是零個或多個geometry或geography linestring例項的集合。

multipolygon:繼承自geomcollection,是零個或多polygon例項的集合。

用t-sql表達空間資料

任何變數、引數、或者表中的某一列都可以宣告為geometry型別,型別名稱是不區分大小寫的。geometry本身是乙個抽象型別,必須例項化geometry的乙個可建立的子類來實現空間資料的功能。根據ogc標準,可使用stgeomfromtext()靜態方法來解析wkt所提供的資料,並根據資料識別出對應的型別。請注意在sql語法中,clr方法都是大小寫敏感的。

在.net下用c#或者vb.net進行編碼時候,通常使用乙個圓點符號(.)來請求乙個方法,然而在t-sql中並非如此。在t-sql中,請求從屬於某型別的靜態方法是用雙冒號(::)。

示例1——使用parse()建立point

declare @g geometry;

set @g = geometry::parse('point(3 4 7 2.5)');

select @g;

print @g.stx;

print @g.sty;

print @g.z;

print @g.m;

定義了乙個點,x和y座標分別是3和4,z為7,m為2.5。

示例2——使用stgeomfromtext()建立linestring

declare @g geometry;

set @g = geometry::stlinefromtext('linestring(0 8, 6 8, 0 0,6 0)',0)

select @g

print @g.stlength() -- result: 22

執行結果如下圖所示。結果選項卡中顯示的是linestring物件在sql server中的二進位制表示;空間結果選項卡是該物件的實際圖形;訊息視窗中是執行該語句所返回的訊息,該語句中使用stlength()獲取該linestring的長度,結果為22。

SQL Server 2008儲存結構之PFS結構

pfs page free space 也叫頁面自由空間,該頁面用來跟蹤乙個檔案中每乙個特定的頁面的利用率情況。乙個檔案中第二個頁面 頁碼1 就是pfs頁面,該頁面的每個 位元組都記錄了相應頁面的分配情況 頁面型別 是否iam頁 是否包含刪除記錄 以及空間利用率資訊 pfs能夠管理和跟蹤8088個頁...

SQL Server 2008儲存結構之IAM結構

索引分配對映 index allocation map,iam 頁面在4 gb的區間中跟蹤被乙個分配單元所使用的區。乙個分配單元就是一組頁面,這些頁面屬於乙個資料表或索引的單個分割槽。它由下面三種型別頁面中的一種組成 含 有常規的行內資料的頁面 含有大型物件 large object,lob 資料的...

SQL Server 2008儲存結構之PFS結構

pfs page free space 也叫頁面自由空間,該頁面用來跟蹤乙個檔案中每乙個特定的頁面的利用率情況。乙個檔案中第二個頁面 頁碼1 就是pfs頁面,該頁面的每個 位元組都記錄了相應頁面的分配情況 頁面型別 是否iam頁 是否包含刪除記錄 以及空間利用率資訊 pfs能夠管理和跟蹤8088個頁...