隨著價格的不斷下降,基于GPS的設備逐漸在大眾消費者中普及,人們對地理位置的重要性認識越來越深刻,商業企業,如物流和制造公司對位置的依賴性就很強,對企業的發展也很關鍵。 文章導讀 1、兩個類型,兩個模型 2、重溫歐幾里得幾何 3、在地圖上繪制點 4、多邊形計算實例 要存儲位置數據也相當簡單,只需要將位置的經緯度值存儲起來即可,使用簡單的浮點字段就可以存儲這些信息,但依靠這種數據類型只能實現一些簡單的應用,如果你想創建更高級的應用,或使用幾何算法來定位數據點,則必須自己動手編寫代碼,例如,如何在10英里范圍內快速找出所有存儲的位置。在這種情況下,如果數據庫本身可以為你做一些工作,那不是更好嗎?這也是SQL Server 2008的目的之一,在SQL Server 2008中,新增了基于位置的數據類型,具有地理空間特性。接下來將了解到這個新的數據類型是如何工作的。 兩個類型,兩個模型
SQL Server 2008支持兩個類似但不同的數據類型:geometry和geography。如果事情簡單,這兩個數據類型都可以存儲x和y值,并支持基于這些值的計算。分成兩個不同的數據類型是因為geometry是基于平面進行計算的,而geography是基于地球的實際形狀計算的。它們之間的差異實際上是很大的,例如計算最短路線時,基于平面的計算結果和基于圓的的計算結果可能相差很大。我們以航線為例,如圖1所示,兩站之間基于平面的距離和基于圓的距離可能相差十萬八千里。實際上,SQL Server 2008可以根據多個不同的圓度和坐標進行計算,這種支持是必要的,因為不同的國家地球形狀略有不同,計算方法略有差異,如果不小心,這些差異即使可能很微小,但最終也會影響到你的結果。
圖 1 哪條線路是最短的?
SQL Server 2008引入了一個空間參考標識符(Spatial Reference Identifiers,簡稱SRID)的概念,當你使用geometry和geography這兩個數據類型時就必須使用它。對于最簡單的geometry數據類型,可以忽略SRID值,或設置為0;對于geography數據類型,你就必須明確設置SRID值。SQL Server一般使用WGS 84坐標系(World Geodetic System 1984),它給SRID賦予了一個魔法值4326,所有支持的SRID可以從Master數據庫中的sys.spatial_reference_systems視圖查詢到,如圖2所示。