SQL Server 2008空間數(shù)據(jù)應(yīng)用系列三:SQL Server 2008空間數(shù)據(jù)類型
Microsoft SQL Server 2008為大地測(cè)量空間數(shù)據(jù)提供了geography數(shù)據(jù)類型,為平面空間數(shù)據(jù)提供了geometry數(shù)據(jù)類型。這兩個(gè)都是Microsoft .NET Framework通用語(yǔ)言運(yùn)行時(shí)(CLR)類型,并且可以用來(lái)存儲(chǔ)不同種類的地理元素,例如點(diǎn)、線和多邊形。這兩個(gè)數(shù)據(jù)類型都提供了你可以用來(lái)執(zhí)行空間操作的屬性和方法,例如計(jì)算位置間的距離和找出兩者間交叉的地理特性(例如一條河流經(jīng)一個(gè)城鎮(zhèn))。本篇以SQL Server 2008的數(shù)據(jù)類型為核心內(nèi)容,介紹其數(shù)據(jù)類型的支持以及新的空間數(shù)據(jù)類型的相關(guān)特性及基本應(yīng)用。
一、SQL Server 2008通用數(shù)據(jù)類型
在SQL Server 2008中的每個(gè)變量,參數(shù)都會(huì)被定義為一個(gè)特定的數(shù)據(jù)類型,這些特定的數(shù)據(jù)類型主要用于排序、存儲(chǔ)等,在SQL Server 2008中的通用數(shù)據(jù)類型和SQL Server 2005一樣,主要的幾個(gè)通用數(shù)據(jù)類型為下表所示:
數(shù)據(jù)類型 | 描述 |
char | 固定長(zhǎng)度字符串 |
datetime | 日期時(shí)間類型字段 |
float | 單精度字段 |
int | 整型字段 |
money | 貨幣類型 |
nvarchar | 可變長(zhǎng)字符型 |
二、SQL Server 2008空間數(shù)據(jù)類型
SQL Server 2008中出了兼容低版本的SQL數(shù)據(jù)庫(kù)的通用數(shù)據(jù)類型和其他基礎(chǔ)數(shù)據(jù)類型(比如:real、text等類型),新推出了兩個(gè)用于支持空間數(shù)據(jù)存儲(chǔ)的空間數(shù)據(jù)類型,分別為:大地向量空間類型(geography)和幾何平面向量空間類型(geometry)。
1、geography數(shù)據(jù)類型
官方定義:geography數(shù)據(jù)類型為空間數(shù)據(jù)提供了一個(gè)由經(jīng)度和緯度聯(lián)合定義的存儲(chǔ)結(jié)構(gòu)。使用這種數(shù)據(jù)的典型用法包括定義道路、建筑、或者地理特性如可以覆蓋到一個(gè)光柵圖上的向量數(shù)據(jù),它考慮了地球的彎曲性,或者計(jì)算真實(shí)的圓弧距離和空中傳播軌道,而這些在一個(gè)平面模型中所存在的固有失真引起的錯(cuò)誤程度是不可接受的。
2、geometry數(shù)據(jù)類型
官方定義:geometry數(shù)據(jù)類型為空間數(shù)據(jù)提供了一個(gè)存儲(chǔ)結(jié)構(gòu),它是由任意平面上的坐標(biāo)定義的。這種數(shù)據(jù)通常是用在區(qū)域匹配系統(tǒng)中的,例如由美國(guó)政府制定的州平面系統(tǒng),或者是不需要考慮地球彎曲性的地圖和內(nèi)層布置圖。geometry 數(shù)據(jù)類型提供了與開放地理空間聯(lián)盟(OGC)Simple Features Specification for SQL標(biāo)準(zhǔn)結(jié)合的屬性和方法,使得你可以對(duì)geometry數(shù)據(jù)執(zhí)行操作以產(chǎn)生行業(yè)標(biāo)準(zhǔn)的行為?!?/P>
雖然這兩個(gè)數(shù)據(jù)類型都可以用于存儲(chǔ)空間數(shù)據(jù),在針對(duì)不同的空間數(shù)據(jù)的時(shí)候還是有所異同。如果我們需要自己基于SQL Server 2008來(lái)做空間數(shù)據(jù)定義,就需要根據(jù)不同的數(shù)據(jù)在這兩種空間數(shù)據(jù)類型中作出正確的決策了,這點(diǎn)在以后的博文中會(huì)進(jìn)行介紹,這里飄過(guò)。此兩種空間類型是***符合空間參照系統(tǒng)標(biāo)準(zhǔn)制定的,包括測(cè)距計(jì)量單位、空間引用索引、授權(quán)標(biāo)準(zhǔn)以及WKT等規(guī)范,如下SQL可查看對(duì)于空間數(shù)據(jù)類型所對(duì)于的空間引用索引標(biāo)準(zhǔn)中制定的地理空間測(cè)距計(jì)量單位:
- SELECT
- unit_of_measure
- FROM
- sys.spatial_reference_systems
- WHERE
- authority_name = 'EPSG'
- AND
- authorized_spatial_reference_id = 4326
- ------------------------------------------------------------
- 執(zhí)行結(jié)果:metre
三、空間數(shù)據(jù)的存儲(chǔ)方式
SQL Server 2008中的兩種空間數(shù)據(jù):大地向量空間類型(geography)和幾何平面向量空間類型(geometry)都是可變長(zhǎng)度的數(shù)據(jù)類型,這意味著它們相對(duì)于比如int或者datetime等固定長(zhǎng)度的數(shù)據(jù)類型,其存儲(chǔ)的數(shù)據(jù)占用空間根據(jù)所存儲(chǔ)數(shù)據(jù)的復(fù)雜程度、數(shù)據(jù)描述文字等不同可自適應(yīng)數(shù)據(jù)類型的長(zhǎng)度變化。
空間數(shù)據(jù)類型字段的數(shù)據(jù)存儲(chǔ)以8個(gè)字節(jié)的二進(jìn)制格式存儲(chǔ),每條記錄的數(shù)據(jù)的頭部分就被定義好了空間數(shù)據(jù)的類型(點(diǎn)、線、面等類型),以及所使用的空間參考系統(tǒng)和地理坐標(biāo)(經(jīng)度、緯度)等值。通常情況下二進(jìn)制數(shù)據(jù)內(nèi)容越長(zhǎng)所占用的空間數(shù)據(jù)存儲(chǔ)空間就越大。
四、空間數(shù)據(jù)可視化
在 SQL Server 2008 中Microsoft 引入具有兩個(gè)新的內(nèi)置數(shù)據(jù)類型、 幾何圖形和地理空間數(shù)據(jù)支持。 盡管您可能 “ 看到 ” 數(shù)據(jù)空間列的二進(jìn)制數(shù)據(jù)存儲(chǔ)但還是不能直觀的反應(yīng)出空間數(shù)據(jù)的預(yù)覽效果, SQL Server 2008 的SQL Server Management Studio 中提供了一個(gè)空間結(jié)果選項(xiàng)卡,專門用于可視化預(yù)覽空間數(shù)據(jù)結(jié)果。
比如當(dāng)前執(zhí)行查詢重慶大區(qū)邊界的空間數(shù)據(jù),那么對(duì)應(yīng)于重慶大區(qū)邊界數(shù)據(jù)庫(kù)表可以執(zhí)行以下SQL:
- SELECT [ID]
- ,[CODE]
- ,[ELEV]
- ,[NAME]
- ,[geom]
- FROM [BingMapsDB].[dbo].[CQ_Area_region]
得到相應(yīng)的SQL查詢記錄結(jié)果和空間可視化結(jié)果為下圖所示:
五、參考資料
[1]、空間數(shù)據(jù)(百度百科):http://baike.baidu.com/view/125911.htm
[2]、空間數(shù)據(jù)可視化:http://msdn.microsoft.com/zh-cn/magazine/ee335706.aspx
【編輯推薦】
- SQL Server 2008應(yīng)用 阻塞(Blocking)
- 微軟 SQL Server 2008中自動(dòng)化數(shù)據(jù)采集器
- 微軟SQL Server 2008令商業(yè)智能平民化
- SQL Server 2008幾項(xiàng)新特性概述