SQL Servr 2008空间数据应用系列三:SQL Server 2008空间数据类型
友情提示,您閱讀本篇博文的先決條件如下:
1、具備 Transact-SQL 編程經(jīng)驗和使用 SQL Server Management Studio 的經(jīng)驗。
2、熟悉或了解Microsoft SQL Server 2008中的空間數(shù)據(jù)類型。
3、具備相應(yīng)的GIS專業(yè)理論知識
4、其他相關(guān)知識
?
?
? SQL Server 2008為大地測量空間數(shù)據(jù)提供了geography數(shù)據(jù)類型,為平面空間數(shù)據(jù)提供了geometry數(shù)據(jù)類型。這兩個都是Microsoft .NET Framework通用語言運行時(CLR)類型,并且可以用來存儲不同種類的地理元素,例如點、線和多邊形。這兩個數(shù)據(jù)類型都提供了你可以用來執(zhí)行空間操作的屬性和方法,例如計算位置間的距離和找出兩者間交叉的地理特性(例如一條河流經(jīng)一個城鎮(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中的每個變量,參數(shù)都會被定義為一個特定的數(shù)據(jù)類型,這些特定的數(shù)據(jù)類型主要用于排序、存儲等,在SQL Server 2008中的通用數(shù)據(jù)類型和SQL Server 2005一樣,主要的幾個通用數(shù)據(jù)類型為下表所示:
通用數(shù)據(jù)類型
| 數(shù)據(jù)類型 | 描述 |
| char | 固定長度字符串 |
| datetime | 日期時間類型字段 |
| float | 單精度字段 |
| int | 整型字段 |
| money | 貨幣類型 |
| nvarchar | 可變長字符型 |
?
?
二、SQL Server 2008空間數(shù)據(jù)類型
? SQL Server 2008中出了兼容低版本的SQL數(shù)據(jù)庫的通用數(shù)據(jù)類型和其他基礎(chǔ)數(shù)據(jù)類型(比如:),新推出了兩個用于支持空間數(shù)據(jù)存儲的空間數(shù)據(jù)類型,分別為:大地向量空間類型(geography)和幾何平面向量空間類型(geometry)。
?
1、geography數(shù)據(jù)類型
官方定義:geography數(shù)據(jù)類型為空間數(shù)據(jù)提供了一個由經(jīng)度和緯度聯(lián)合定義的存儲結(jié)構(gòu)。使用這種數(shù)據(jù)的典型用法包括定義道路、建筑、或者地理特性如可以覆蓋到一個光柵圖上的向量數(shù)據(jù),它考慮了地球的彎曲性,或者計算真實的圓弧距離和空中傳播軌道,而這些在一個平面模型中所存在的固有失真引起的錯誤程度是不可接受的。
?
2、geometry數(shù)據(jù)類型
官方定義:geometry數(shù)據(jù)類型為空間數(shù)據(jù)提供了一個存儲結(jié)構(gòu),它是由任意平面上的坐標定義的。這種數(shù)據(jù)通常是用在區(qū)域匹配系統(tǒng)中的,例如由美國政府制定的州平面系統(tǒng),或者是不需要考慮地球彎曲性的地圖和內(nèi)層布置圖。geometry 數(shù)據(jù)類型提供了與開放地理空間聯(lián)盟(OGC)Simple Features Specification for SQL標準結(jié)合的屬性和方法,使得你可以對geometry數(shù)據(jù)執(zhí)行操作以產(chǎn)生行業(yè)標準的行為。
?
?
雖然這兩個數(shù)據(jù)類型都可以用于存儲空間數(shù)據(jù),在針對不同的空間數(shù)據(jù)的時候還是有所異同。如果我們需要自己基于SQL Server 2008來做空間數(shù)據(jù)定義,就需要根據(jù)不同的數(shù)據(jù)在這兩種空間數(shù)據(jù)類型中作出正確的決策了,這點在以后的博文中會進行介紹,這里飄過。此兩種空間類型是完美符合空間參照系統(tǒng)標準制定的,包括測距計量單位、空間引用索引、授權(quán)標準以及WKT等規(guī)范,如下SQL可查看對于空間數(shù)據(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ù)的存儲方式
? SQL Server 2008中的兩種空間數(shù)據(jù):大地向量空間類型(geography)和幾何平面向量空間類型(geometry)都是可變長度的數(shù)據(jù)類型,這意味著它們相對于比如int或者datetime等固定長度的數(shù)據(jù)類型,其存儲的數(shù)據(jù)占用空間根據(jù)所存儲數(shù)據(jù)的復(fù)雜程度、數(shù)據(jù)描述文字等不同可自適應(yīng)數(shù)據(jù)類型的長度變化。
?
空間數(shù)據(jù)類型字段的數(shù)據(jù)存儲以8個字節(jié)的二進制格式存儲,每條記錄的數(shù)據(jù)的頭部分就被定義好了空間數(shù)據(jù)的類型(點、線、面等類型),以及所使用的空間參考系統(tǒng)和地理坐標(經(jīng)度、緯度)等值。通常情況下二進制數(shù)據(jù)內(nèi)容越長所占用的空間數(shù)據(jù)存儲空間就越大。
?
四、空間數(shù)據(jù)可視化
在 SQL Server 2008 中Microsoft 引入具有兩個新的內(nèi)置數(shù)據(jù)類型、 幾何圖形和地理空間數(shù)據(jù)支持。 盡管您可能 “ 看到 ” 數(shù)據(jù)空間列的二進制數(shù)據(jù)存儲但還是不能直觀的反應(yīng)出空間數(shù)據(jù)的預(yù)覽效果,?SQL Server 2008 的SQL Server Management Studio 中提供了一個空間結(jié)果選項卡,專門用于可視化預(yù)覽空間數(shù)據(jù)結(jié)果。
?
比如當(dāng)前執(zhí)行查詢重慶大區(qū)邊界的空間數(shù)據(jù),那么對應(yīng)于重慶大區(qū)邊界數(shù)據(jù)庫表可以執(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
超強干貨來襲 云風(fēng)專訪:近40年碼齡,通宵達旦的技術(shù)人生總結(jié)
以上是生活随笔為你收集整理的SQL Servr 2008空间数据应用系列三:SQL Server 2008空间数据类型的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深入理解计算机系统学习记录(一)
- 下一篇: Mysql 出现Got error 28