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