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

SQL Server 2008空間數(shù)據(jù)應(yīng)用系列六:基于SQLCRL的空間數(shù)據(jù)可編程性

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

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

  1. 本文示例基于Microsoft SQL Server 2008 R2調(diào)測(cè)。
  2. 具備 Transact-SQL 編程經(jīng)驗(yàn)和使用 SQL Server Management Studio 的經(jīng)驗(yàn)。
  3. 具有使用 Microsoft Visual Studio 進(jìn)行 Microsoft .NET Framework開(kāi)發(fā)的經(jīng)驗(yàn)。
  4. 熟悉或了解Microsoft SQL Server 2008中的空間數(shù)據(jù)類(lèi)型。
  5. 具備相應(yīng)(比如OGC)的GIS專(zhuān)業(yè)理論知識(shí)。

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

一、SQLCLR & .NET CLR互編程性

可以在SQL Server 2008的安裝目錄下找到SQLCLR與.NET CLR共享的空間數(shù)據(jù)類(lèi)型共享庫(kù)組件(Microsoft.SqlServer.Types.dll),該組件除了支持基于SQL Server 2008的空間數(shù)據(jù)類(lèi)型數(shù)據(jù)庫(kù)編程,同時(shí)也支持基于.NET Framework的面向?qū)ο缶幊蹋▽?duì)VB.NET、C#的多語(yǔ)言的支持,該組件位于如下安裝目錄中:

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

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

  1. SQLCLR:定義一個(gè)地理坐標(biāo)點(diǎn)  
  2. declare @geom geometry;  
  3. set @geom = geometry::Point(107.04352,28.870554,4326);  
  4. select @geom;  
  5. ------------------------------------------------------  
  6. .NET CLR:定義一個(gè)地理坐標(biāo)點(diǎn)  
  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編程中所提供的編程接口,也就是說(shuō)在.NET CLR中變成不僅僅只是局限于再空間對(duì)象的定義上,還包括對(duì)象的相關(guān)屬性、方法的支持,如下代碼塊演示了SQLCLR和.NET CLR編程實(shí)現(xiàn)地理測(cè)距函數(shù)的對(duì)比。

  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 + "(米)"); 

二、創(chuàng)建空間對(duì)象到數(shù)據(jù)庫(kù)

Microsoft.SqlServer.Types.dll提供友好的.NET CLR編程性,同樣我們可以將在.NET CLR中創(chuàng)建的對(duì)象插入到空間數(shù)據(jù)庫(kù)中進(jìn)行查詢(xún),以便于做空間分析、計(jì)算。下面演示通過(guò).NET CLR構(gòu)造一個(gè)多邊形空間對(duì)象并插入到SQL Server 2008數(shù)據(jù)庫(kù)中。

  1. static void Main(string[] args)  
  2. {  
  3.     //定義一個(gè)多邊形  
  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.     }  

三、查詢(xún)數(shù)據(jù)庫(kù)空間數(shù)據(jù)

首先來(lái)看看基于SQL Server Management Studio 查詢(xún)剛剛?cè)霂?kù)的記錄,通過(guò)空間結(jié)果可以直接預(yù)覽查詢(xún)結(jié)果。

  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對(duì)其進(jìn)行編程實(shí)現(xiàn),這其實(shí)和查詢(xún)普通數(shù)據(jù)是沒(méi)有區(qū)別的,只是將查詢(xún)結(jié)果轉(zhuǎn)為為的是空間數(shù)據(jù)類(lèi)型。可以通過(guò)如下代碼實(shí)現(xiàn)查詢(xún)空間數(shù)據(jù)到應(yīng)用程序中。

  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.     }  

本篇就大概介紹到這里,經(jīng)常內(nèi)容請(qǐng)關(guān)注后續(xù)系列博文,下一篇將介紹微軟Bing Maps與空間數(shù)據(jù)的親密接觸,敬請(qǐng)期待~~~~

四、相關(guān)資料

[1]、數(shù)據(jù)表中使用空間數(shù)據(jù)類(lèi)型:http://www.cnblogs.com/beniao/archive/2011/02/21/1959347.html

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

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

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

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

【編輯推薦】

  1. 淺談SQL Server2005的幾種分頁(yè)方法
  2. 用SQL查詢(xún)?nèi)?月 周 季
  3. SQL Server 2008中的代碼安全
  4. SQL問(wèn)題與解答:維護(hù)日志和索引
  5. SQL Servr 2008空間數(shù)據(jù)應(yīng)用系列五:數(shù)據(jù)表中使用空間數(shù)據(jù)類(lèi)型
責(zé)任編輯:艾婧 來(lái)源: 博客園
相關(guān)推薦

2011-02-21 13:06:42

Microsoft S

2011-03-22 10:20:18

Bing MapsSQL Server

2011-03-22 15:10:49

Bing MapsSQL Server

2011-02-21 13:41:14

SQL Server

2009-04-16 17:55:55

SQL Server 空間數(shù)據(jù).NET

2011-02-21 10:47:44

Microsoft S

2011-02-21 10:26:53

Microsoft S

2011-02-21 13:23:54

微軟 SQL Serv

2011-09-01 13:24:42

SQL Server 呈現(xiàn)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

數(shù)據(jù)挖掘空間數(shù)據(jù)方法

2009-04-16 17:38:24

SQL Server 空間數(shù)據(jù)智能

2010-09-07 16:28:58

DB2 空間數(shù)據(jù)

2022-03-30 09:30:00

數(shù)據(jù)庫(kù)地理空間查詢(xún)SQL

2022-09-14 11:27:19

物聯(lián)網(wǎng)大數(shù)據(jù)智慧城市

2010-07-07 14:42:17

SQL Server

2024-10-18 17:03:16

Python地理空間數(shù)據(jù)處理

2010-05-07 12:35:05

Oracle spat
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 国产精品久久久久久久久久 | 国产a区 | 日韩图区 | av资源中文在线 | 午夜丰满少妇一级毛片 | 欧美一区二区三区免费电影 | 久久三级av | 久久亚洲精品久久国产一区二区 | 久久成人国产 | 国产精品夜夜夜一区二区三区尤 | 黄色成人免费在线观看 | 国产日韩欧美一区 | caoporn地址| 综合网在线 | 女生羞羞网站 | 一级黄色片免费 | 欧美日韩中文字幕在线播放 | 黄色大片免费网站 | 久久美女网| 亚洲欧洲精品在线 | 精品国产欧美日韩不卡在线观看 | 欧美男人的天堂 | 午夜成人免费电影 | 精品免费国产 | 亚洲狠狠丁香婷婷综合久久久 | 中文字幕国产高清 | 亚洲精品一区二区三区中文字幕 | 一级毛片大全免费播放 | 国产99久久精品一区二区永久免费 | 粉嫩高清一区二区三区 | 日本亚洲欧美 | 人人亚洲 | 国产免费一区二区三区免费视频 | 极情综合网 | 色综合美女| 久久久性色精品国产免费观看 | 中文字幕欧美日韩一区 | 中文区中文字幕免费看 | 国产在线第一页 | 欧美日韩亚洲三区 | www四虎影视 |