SQL Server 2008空間數據應用系列九:使用空間工具(Spatial Tools)導入ESRI格式地圖數據
友情提示,您閱讀本篇博文的先決條件如下:
- 本文示例基于Microsoft SQL Server 2008 R2調測。
- 具備 Transact-SQL 編程經驗和使用 SQL Server Management Studio 的經驗。
- 熟悉或了解Microsoft SQL Server 2008中的空間數據類型。
- 具備相應(比如OGC規范、KML規范)的GIS專業理論知識。
- 其他相關知識。
geography 和geometry數據類型包括以用于在OGC中所定義的地理數據的已知文本(Well Known Text,WKT)和已知二進制(Well Known Binary,WKB)格式導入和導出數據的方法,還包括普遍使用的地理標示語言(Geographic Markup Language,GML)格式,這使得很容易從支持這些格式的數據源導入地理數據。地理數據很容易從一些政府和商業數據源獲得,并且可以相對容易地從許多現有的GIS應用程序和GPS系統中導出。Microsoft保持與一些第三方GIS供應商和地理數據解決方案供應商的緊密關系,這幫助確保SQL server 2008和廣泛的行業標準工具間的強大兼容能力,以用于導入、導出和操縱空間數據。
通常我們開發一個GIS應用,基于GIS做數據分布呈現、統計匯總、搜索等等的功能,幾乎都離不開地圖數據的支持,一方面是作為地圖呈現需要,其次是為了方便做空間分析等諸多功能。而對于空間數據的需求,通常不需要自己去建立空間數據,市面上有許多非常成熟的地圖數據可以直接被采購使用,并以此為基礎直接建立基于地圖空間數據的GIS應用。另外網上也提供了比較多的空間數據免費下載資源,可以輕松的獲取到空間數據。本篇將使用SQL空間工具(SqlSpatialTools) 介紹ESRI地圖空間數據(shpfile)導入到SQL Server 2008的實現。
一、SQL空間數據導入工具(Shape2SQL)
SharpGIS發布了一個專門用來導入ESRI地圖空間數據(shpfile)的工具,可以非常簡單的實現將shpfile的地圖數據文件中的空間數據導入到SQL Server 2008中,可以通過如下地址下載該工具。
SQL空間工具下載地址:http://www.sharpgis.net/page/SQL-Server-2008-Spatial-Tools.aspx
該工具的運行環境需要微軟.NET Framewrok 3.5和Microsoft SQL Server System CLR Types。使用該工具通過簡單的可視化界面即可連接上SQL Server 2008的數據庫服務器,目前該工具僅僅只支持幾種常用的主流空間類型數據,包括:Point 、MultiPoint、(Multi)Polygon 和 (Multi)LineStrings 。詳細可訪問:http://www.sharpgis.net/page/Shape2SQL.aspx
二、SQL空間數據查詢工具(SqlSpatial-Query-Tool)
SQL Server 2008空間數據查詢工具可以直接連接到SQL Server 2008數據庫服務器,實現空間數據的查詢,可視化界面呈現。詳細可訪問:http://www.sharpgis.net/page/SqlSpatial-Query-Tool.aspx
三、導入Shpfile地圖空間數據
如本文篇前的截圖,使用SQL空間導入工具實現將ESRI的shpfile地圖空間數據導入SQL Server 2008其實非常簡單,在導入的時候注意表名和SRID就可以了,其他的可以不用管。如下圖演示了將重慶市的大區邊界地圖數據導入到SQL Server 2008中。
四、查詢空間數據
實現可以查詢可以在SQL Server Management Studio中執行對表(CQ_Region)的的全表查詢,于空間結果選項中可以看到如下圖所示的空間呈現效果。
另外還可以使用空間查詢工具實現SQL Server 2008中的空間數據查詢,Spatial Query Tools查詢出的空間輸入結果如下所示。
五、空間計算支持
數據庫里面有了空間數據,就可以給予數據展開空間計算、統計、分析等給力的功能實現,與GIS客戶端結合來完成各種簡單、負責的空間計算、分析。如下SQL演示了計算上面導入的重慶大界區的地圖的地理面積計算。
- select geom.STArea() from CQ_Region WHERE ID=1;
- select geom.STArea() from CQ_Region WHERE ID=2
- select geom.STArea() from CQ_Region WHERE ID=3;
- select geom.STArea() from CQ_Region WHERE ID=4;
- select SUM(geom.STArea()) from CQ_Region;
[1]、KML規范:http://www.opengeospatial.org/standards/kml/
[2]、Google KML文檔簡介:http://code.google.com/intl/zh-CN/apis/kml/documentation/
[3]、空間工具(Spatial Tools): http://www.sharpgis.net/page/SQL-Server-2008-Spatial-Tools.aspx
原文鏈接:http://www.cnblogs.com/beniao/archive/2011/03/22/1989310.html
【編輯推薦】