成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

SQL Server 2008空間數據應用系列六:基于SQLCRL的空間數據可編程性

數據庫 SQL Server
基于SQL Server 2008的核心組件SQLCRL提供了友好的的可編程性支持,SQL Server數據庫引擎將使用由CLR提供的功能無縫地提供了多種功能,其中包括使用空間數據類型goegraphy和goemetry的數據的可編程性支持。

友情提示,您閱讀本篇博文的先決條件如下:

  1. 本文示例基于Microsoft SQL Server 2008 R2調測。
  2. 具備 Transact-SQL 編程經驗和使用 SQL Server Management Studio 的經驗。
  3. 具有使用 Microsoft Visual Studio 進行 Microsoft .NET Framework開發的經驗。
  4. 熟悉或了解Microsoft SQL Server 2008中的空間數據類型。
  5. 具備相應(比如OGC)的GIS專業理論知識。

Microsoft .NET應用通常都是宿主在操作系統平臺的.NET Framework之上,如果想在SQL Server 2008中使用.NET進行托管代碼,SQL Server 2008將運行一個屬于自己的.NET Framewrok平臺運行環境(SQLOS),SQLOS和.NET CLR將共享數據庫引擎進程空間,因此基于SQL Server 2008的CLR也被稱為的SQLCLR。基于SQL Server 2008的核心組件SQLCRL提供了友好的的可編程性支持,SQL Server數據庫引擎將使用由CLR提供的功能無縫地提供了多種功能,其中包括使用空間數據類型goegraphy和goemetry的數據的可編程性支持。

一、SQLCLR & .NET CLR互編程性

可以在SQL Server 2008的安裝目錄下找到SQLCLR與.NET CLR共享的空間數據類型共享庫組件(Microsoft.SqlServer.Types.dll),該組件除了支持基于SQL Server 2008的空間數據類型數據庫編程,同時也支持基于.NET Framework的面向對象編程,包括對VB.NET、C#的多語言的支持,該組件位于如下安裝目錄中:

  1. C:\Program Files\Microsoft SQL Server\100\SDK\Assemblies\Microsoft.SqlServer.Types.dll 

通過下面這個示例程序可以演示基于Microsoft.SqlServer.Types.dll在SQLCLR和.NET CLR之間的雙向互支持性。

  1. SQLCLR:定義一個地理坐標點  
  2. declare @geom geometry;  
  3. set @geom = geometry::Point(107.04352,28.870554,4326);  
  4. select @geom;  
  5. ------------------------------------------------------  
  6. .NET CLR:定義一個地理坐標點  
  7. static void Main(string[] args)  
  8. {  
  9.     var point = SqlGeometry.Point(107.04352, 28.870554, 4326);  
  10.     Console.WriteLine(point.STX);  
  11.     Console.WriteLine(point.STY);  
  12.     Console.WriteLine(point.ToString());  
  13. }  

在.NET CLR中可以使用所有SQLCLR編程中所提供的編程接口,也就是說在.NET CLR中變成不僅僅只是局限于再空間對象的定義上,還包括對象的相關屬性、方法的支持,如下代碼塊演示了SQLCLR和.NET CLR編程實現地理測距函數的對比。

  1. declare @geom geometry;  
  2. set @geom = geometry::Point(107.04352,28.870554,4326);  
  3. declare @end geometry;  
  4. set @end = geometry::Point(103.84041, 29.170240,4326);  
  5. select @geom.STDistance(@end);  
  6. ----------------------------------------------------------------  
  7. var pointStart = SqlGeometry.Point(107.04352, 28.870554, 4326);  
  8. var pointEnd = SqlGeometry.Point(103.84041, 29.170240, 4326);  
  9. var result = pointStart.STDistance(pointEnd);  
  10. Console.WriteLine("地理距離:" + result + "(米)"); 

二、創建空間對象到數據庫

Microsoft.SqlServer.Types.dll提供友好的.NET CLR編程性,同樣我們可以將在.NET CLR中創建的對象插入到空間數據庫中進行查詢,以便于做空間分析、計算。下面演示通過.NET CLR構造一個多邊形空間對象并插入到SQL Server 2008數據庫中。

  1. static void Main(string[] args)  
  2. {  
  3.     //定義一個多邊形  
  4.     var polygon = SqlGeography.STGeomFromText(  
  5.         new SqlChars(  
  6.         new SqlString("POLYGON ((-114.01611328125 42.0003251483162, -114.0380859375 42.0003251483162," 
  7.             + "-113.994140625 37.0200982013681, -109.05029296875 37.0200982013681, -109.09423828125 41.0130657870063, " 
  8.             + "-111.07177734375 41.0462168145206, -111.07177734375 42.0003251483162, -114.01611328125 42.0003251483162))",  
  9.             111)),  
  10.             4326);  
  11.     var sql = "insert Cities (CityName,CityLocation) values ('test','" + polygon.ToString() + "')";  
  12.     InsertToDB(sql);  
  13. }  
  14.  
  15. private static void InsertToDB(string sql)  
  16. {  
  17.     using (var conn = new SqlConnection(ConfigurationManager.AppSettings["SQL2008"]))  
  18.     {  
  19.         if (conn.State == ConnectionState.Closed) conn.Open();  
  20.         using (var cmd = new SqlCommand(sql, conn))  
  21.         {  
  22.             int row = cmd.ExecuteNonQuery();  
  23.         }  
  24.     }  

三、查詢數據庫空間數據

首先來看看基于SQL Server Management Studio 查詢剛剛入庫的記錄,通過空間結果可以直接預覽查詢結果。

  1. declare @city geometry;  
  2. select @city = CityLocation from Cities where ID=5;  
  3. select @city;  
  4. select @city.STArea() as 面積;--求面積 
  5.  
  6. 0x000000000104080000000000000008815CC035B18AA70A0045400000000070825CC035B18AA70A00454000000000

    A07F5CC0CECAEE93928242400000000038435BC0CECAEE93928242400000000008465BC0BCF1C323AC814440000000

    0098C45BC01572BD6EEA8544400000000098C45BC035B18AA70A0045400000000008

    (1 行受影響)

    面積

    22.6802255629445

    (1 行受影響)
     

同樣可以使用.NET CLR對其進行編程實現,這其實和查詢普通數據是沒有區別的,只是將查詢結果轉為為的是空間數據類型。可以通過如下代碼實現查詢空間數據到應用程序中。

  1. static void Main(string[] args)  
  2. {  
  3.     var sql = "select CityLocation from Cities where ID = 5";  
  4.     var result = QueryDB(sql);  
  5.     var polygon = SqlGeography.STGeomFromText(  
  6.         new SqlChars(  
  7.         new SqlString(result)), 4326);  
  8.     Console.WriteLine(polygon.ToString());   
  9. }  
  10.  
  11. private static string QueryDB(string sql)  
  12. {  
  13.     using (var conn = new SqlConnection(ConfigurationManager.AppSettings["SQL2008"]))  
  14.     {  
  15.         if (conn.State == ConnectionState.Closed) conn.Open();  
  16.         using (var cmd = new SqlCommand(sql, conn))  
  17.         {  
  18.             return cmd.ExecuteScalar().ToString();  
  19.         }  
  20.     }  

本篇就大概介紹到這里,經常內容請關注后續系列博文,下一篇將介紹微軟Bing Maps與空間數據的親密接觸,敬請期待~~~~

四、相關資料

[1]、數據表中使用空間數據類型:http://www.cnblogs.com/beniao/archive/2011/02/21/1959347.html

[2]、幾何實例上的OGC方法:http://msdn.microsoft.com/zh-cn/visualc/bb933960.aspx

[3]、幾何圖形實例上的擴展方法:http://msdn.microsoft.com/zh-cn/library/bb933880.aspx

[4]、OGC 靜態幾何圖形方法:http://msdn.microsoft.com/zh-cn/library/bb933894.aspx

原文出處:http://www.cnblogs.com/beniao/archive/2011/02/24/1961729.html

【編輯推薦】

  1. 淺談SQL Server2005的幾種分頁方法
  2. 用SQL查詢日 月 周 季
  3. SQL Server 2008中的代碼安全
  4. SQL問題與解答:維護日志和索引
  5. SQL Servr 2008空間數據應用系列五:數據表中使用空間數據類型
責任編輯:艾婧 來源: 博客園
相關推薦

2011-02-21 13:06:42

Microsoft S

2011-03-22 15:10:49

Bing MapsSQL Server

2011-03-22 10:20:18

Bing MapsSQL Server

2011-02-21 13:41:14

SQL Server

2009-04-16 17:55:55

SQL Server 空間數據.NET

2011-02-21 10:26:53

Microsoft S

2011-02-21 10:47:44

Microsoft S

2011-02-21 13:23:54

微軟 SQL Serv

2011-09-01 13:24:42

SQL Server 呈現GeoRSS訂閱的Bing Maps

2009-08-28 11:38:15

MapPoint

2011-03-22 15:36:44

Spatial TooSQL Server

2011-02-21 13:06:34

SQL Servr 2

2009-01-20 13:39:56

數據挖掘空間數據方法

2009-04-16 17:38:24

SQL Server 空間數據智能

2010-09-07 16:28:58

DB2 空間數據

2022-03-30 09:30:00

數據庫地理空間查詢SQL

2022-09-14 11:27:19

物聯網大數據智慧城市

2024-10-18 17:03:16

Python地理空間數據處理

2010-07-07 14:42:17

SQL Server

2010-05-07 12:35:05

Oracle spat
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 美女露尿口视频 | 久久精品小视频 | 草久久 | 久久久久久久99 | 免费99精品国产自在在线 | 久在线| 欧美日韩不卡在线 | 中文字幕一区二区三区日韩精品 | 亚洲一区二区三区高清 | 久久成人国产精品 | 国产电影精品久久 | 91精品久久久 | 欧美一区二区大片 | 久久精品国产一区二区三区不卡 | 一区在线观看 | 99久久久久 | 97国产一区二区精品久久呦 | 日韩视频在线一区 | 亚洲精品久久久一区二区三区 | 人人爱干 | 国产高清在线观看 | 国产中文字幕网 | 精精国产xxxx视频在线播放 | 精品一二区 | 国产欧美综合在线 | 色婷婷亚洲国产女人的天堂 | 91精品国产91久久久久久 | 亚洲综合无码一区二区 | www.日韩| 最新午夜综合福利视频 | 中文字幕在线一区二区三区 | 欧美久久国产精品 | 欧美一区二区在线观看视频 | 黑人性hd| 91久久精品国产91久久性色tv | 欧亚av在线 | 亚洲区视频| 孕妇一级毛片 | 精品一区二区久久久久久久网站 | 久久99精品久久久久久 | 在线中文一区 |