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

SQL Server 2008空間數據應用系列四:基礎空間對象與函數應用

開發
Microsoft SQL Server 2008支持7中舉出空間對象實例,并且針對地理空間數據、對象、實例提供了非常豐富的內置函數,使用這些函數可以快速的完成一系列的空間數據分析。

微軟SQL Server 2008中支持的7種基礎空間對象實例,分別為:點(Point)、點集合(MultiPoint )、線(LineString)、線集合(MultiLineString)、多邊形(Polygon )、多邊形集合(MultiPolygon)和空間集合(GeometryCollection)。

一、點(Point)

  在 SQL Server 空間數據中,Point 是表示單個位置的零維對象,可能包含 Z(仰角)和 M(度量)值。可以通過下面SQL創建一個點的示例,默認該點的SRID(空間引用標識)為0。

  1. DECLARE @p geometry;  
  2. SET @p = geometry::Parse('POINT(30.6666587469201 104.062021177233)');  
  3. select @p.STX AS X;  
  4. select @p.STY AS Y; 

  如下SQL命令這創建了包含 Z(仰角)和 M(度量)值的點(Point)實例,其中 Z(仰角)和 M(度量)值可以顯示的指定為“null”。

  1. DECLARE @g geometry;  
  2. SET @g = geometry::Parse('POINT(30.6666587469201 104.062021177233 15 3.5)');  
  3. --SET @g = geometry::Parse('POINT(30.6666587469201 104.062021177233 null null)');  
  4. select @g.STX AS X  
  5. select @g.STY AS Y  
  6. select @g.Z as Z  
  7. select @g.M as M 

二、點集合(MultiPoint )

  MultiPoint 是零個點或更多個點的集合。MultiPoint 實例的邊界為空。其實需要使用函數STGeomFromText()來格式化被定義的數據按照OGC標準輸出WKT格式的空間數據結果,也可使用函數STMPointFromText()代替STGeomFromText()的使用,通過如下SQL命令可定義一個點集合對象實例,并使用函數STGeometryN()輸出空間數據結果:

  1. --創建點集合實例  
  2. DECLARE @cd geometry;  
  3. SET @cd = geometry::STGeomFromText('MULTIPOINT((30.6666587469201 104.062021177233),(29.5076372217973 106.489384971208))',4326);  
  4. --SET @cd = geometry::STMPointFromText('MULTIPOINT((30.6666587469201 104.062021177233),(29.5076372217973 106.489384971208))',4326);  
  5. select @cd.STGeometryN(1).STAsText() as 重慶;  
  6. select @cd.STGeometryN(2).STAsText() as 成都;  
  7. ---------------------------------------------------------------------------------------  
  8. 執行輸出結果:  
  9. 重慶  
  10. ---------------------------------------------------------------------------------------  
  11. POINT (30.6666587469201 104.062021177233)  
  12.    
  13. 成都  
  14. ---------------------------------------------------------------------------------------  
  15.  
  16. POINT (29.5076372217973 106.489384971208)  
  17.  

 

三、線(LineString)

  LineString 是一個一維對象,表示一系列點和連接這些點的線段。一個 LineString 實例必須由至少兩個非重復點組成,也可以為空。線條描述了空間上的兩個或多個點之間的距離,必須有兩個端點,分別為:起止點(StartPoint)和終止點(EndPoint)。如下SQL命令實現了定義重慶到成都兩點之間的線條:

  1. DECLARE @cdline geometry;  
  2. SET @cdline = geometry::STGeomFromText('LINESTRING(30.6666 104.06202, 29.50763 106.48938)', 4326);  
  3. select @cdline.STAsText() as 重慶_成都  
  4. -------------------------------------------------------------------------------------------  
  5. 重慶_成都  
  6. -------------------------------------------------------------------------------------------  
  7. LINESTRING (30.6666 104.06202, 29.50763 106.48938) 

  在SQL Server 2008的空間結果中所呈現的效果如下圖所示:

3.1

   

 

  注:線條有多種外觀呈現方式,有非閉合線條、閉合線條以及圖形復雜的線條等多種情況出現。如下圖示。

3.2

 

四、線集合(MultiLineString)

  MultiLineString 是零個或更多 geometry 或 geography LineString 實例的集合。為使 MultiLineString 實例有效,該實例必須滿足以下條件:

  1、構成 MultiLineString 實例的所有實例必須都是有效的 LineString 實例。

  2、在構成 MultiLineString 實例的 LineString 實例中,不能有兩個實例在某一段間隔上重疊。LineString 實例只能與自身相交或接觸,或者在有限數目的點上與其他 LineString 實例相交或接觸。

 

  通過如下SQL代碼片段演示MultiLineString的具體使用:

  1. DECLARE @ml geometry;  
  2. --SET @ml = geometry::Parse('MULTILINESTRING((30.6666 104.06202, 29.50763 106.48938),(30.6666 104.06202,33.78142 105.97914))');  
  3. SET @ml = geometry::STGeomFromText('MULTILINESTRING((30.6666 104.06202, 29.50763 106.48938),(30.6666 104.06202,33.78142 105.97914))',4326);  
  4. --SET @ml.STSrid = 4326;  
  5. select @ml;  
  6. select @ml.STIsValid();   --驗證ml對象是否為正確的空間對象 

4

五、多邊形(Polygon )

  Polygon 是存儲為一系列點的二維表面,這些點定義一個外部邊界環和零個或多個內部環。可以從至少具有三個不同點的環中構建一個 Polygon 實例。以下SQL命令演示了如何創建多邊形以及求多邊形的面積函數的應用。

  1. --創建多邊形  
  2. DECLARE @pg geometry;  
  3. SET @pg = geometry::STPolyFromText('POLYGON((0 0, 0 3, 3 3, 3 0, 0 0), (1 1, 1 2, 2 1, 1 1))', 10);  
  4. select @pg;  
  5. select @pg.STArea(); --求得多邊形的面積 

六、多邊形集合(MultiPolygon)

  多邊形集合(MultiPolygon )實例是零個或更多個 Polygon 實例的集合。下面的SQL命令演示了定義一個多邊形集合對象并返回第一個對象的WKT。

  1. --創建多邊形集合,并返回第一個多邊形的WKT  
  2. DECLARE @mpg geometry;  
  3. SET @mpg = geometry::Parse('MULTIPOLYGON(((1 1, 1 2, 2 1, 1 1)), ((9 9, 9 10, 10 9, 9 9)))');  
  4. SELECT @mpg.STGeometryN(1).STAsText();  
  5. ---------------------------------------------------------------------------------------------  
  6. 執行輸出結果:  
  7. POLYGON ((1 1, 1 2, 2 1, 1 1)) 

 

七、空間對象集合(GeometryCollection )

  GeometryCollection 是零個或更多個 geometry 或 geography 實例的集合。GeometryCollection 可以為空。以下SQL演示了定義一個帶有一個點(Point)實例和一個多邊形(Polygon)實例的空間對象集合對象。

  1. --空間集合  
  2. DECLARE @ggc geometry;  
  3. SET @ggc= geometry::STGeomCollFromText('GEOMETRYCOLLECTION(POINT(3 3 1), POLYGON((0 0 2, 1 10 3, 1 0 4, 0 0 2)))', 1);  
  4. select @ggc;  
  5. select @ggc.STAsText();        --輸出WKT文本(不帶Z,M值)  
  6. select @ggc.ToString();        --輸出對象原字符串(帶Z,M值)  
  7. ---------------------------------------------------------------------------------------------  
  8. 執行輸出結果:  
  9. ---------------------------------------------------------------------------------------------  
  10. 0x010000000105050000000000000000000840000000000000084000000000000000000000000000000000000000000000F03F0000000000002440000000000000F03F000000000000000000000000000000000000000000000000000000000000F03F0000000000000040000000000000084000000000000010400000000000  
  11. ---------------------------------------------------------------------------------------------  
  12. GEOMETRYCOLLECTION (POINT (3 3), POLYGON ((0 0, 1 10, 1 0, 0 0)))  
  13. ---------------------------------------------------------------------------------------------  
  14. GEOMETRYCOLLECTION (POINT (3 3 1), POLYGON ((0 0 2, 1 10 3, 1 0 4, 0 0 2)))  

八、SQL Server 2008函數應用

  SQL Server 2008中針對地理空間數據、對象、實例提供了非常豐富的內置函數,使用這些函數可以快速的完成一系列的空間數據分析。關于這些函數的具體使用這里就不逐一介紹,本文中也相應的使用了幾個常用的OGC靜態幾何圖形方法,以后的博文使用中會根據使用情況再做介紹,詳細請大家查閱MSDN,本文末也提供了相關參考資料的鏈接。下面代碼演示了測距重慶到成都兩點之間坐標的距離(單位:米)。

  1. DECLARE @chongqing geography = geography::Point(30.6666587469201,104.062021177233, 4326)  
  2. DECLARE @chengdu geography = geography::Point(29.5076372217973, 106.489384971208, 4326)  
  3. SELECT @chongqing.STDistance(@chengdu)  
  4. -----------------------------------------------------------------------------------------  
  5. 執行結果為:266943.740244237 

九、相關資料

  [1]、空間數據庫(百度百科):http://baike.baidu.com/view/1194566.htm

  [2]、使用空間數據實現位置智能:http://tech.ddvip.com/2008-04/120816526343873.html

  [3]、基礎空間對象(MSDN):http://msdn.microsoft.com/de-de/library/bb964711.aspx

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

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

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

  [7]、擴展靜態幾何圖形方法:http://msdn.microsoft.com/zh-cn/library/bb933805.aspx

【編輯推薦】

  1. SQL Server 2008應用 阻塞(Blocking)
  2. 微軟 SQL Server 2008中自動化數據采集器
  3. 并行查詢讓SQL Server加速運行
  4. 微軟SQL Server 2008令商業智能平民化

 

 

責任編輯:佚名 來源: 博客園
相關推薦

2011-02-21 13:06:42

Microsoft S

2011-02-21 10:26:53

Microsoft S

2011-02-21 10:47:44

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

2011-03-22 09:17:12

SQLCRLSQL Server

2011-09-01 13:24:42

SQL Server 呈現GeoRSS訂閱的Bing Maps

2011-03-22 15:36:44

Spatial TooSQL Server

2009-04-16 17:55:55

SQL Server 空間數據.NET

2011-02-21 13:06:34

SQL Servr 2

2009-08-28 11:38:15

MapPoint

2009-04-16 17:38:24

SQL Server 空間數據智能

2009-01-20 13:39:56

數據挖掘空間數據方法

2010-09-07 16:28:58

DB2 空間數據

2022-03-30 09:30:00

數據庫地理空間查詢SQL

2022-09-14 11:27:19

物聯網大數據智慧城市

2009-04-16 17:53:09

SQL Server 應用程序擴展性

2024-10-18 17:03:16

Python地理空間數據處理

2011-08-15 17:55:49

提取MapInfo地圖SQL Server
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产一级片在线观看视频 | 免费国产一区 | 亚洲网站免费看 | 亚洲综合在线视频 | a在线视频 | 欧美精品在线一区 | 国产电影一区二区 | 99re视频这里只有精品 | 人人九九精 | 99pao成人国产永久免费视频 | 九九久久久 | 国产综合视频 | 久久久久久成人网 | 日韩在线视频一区 | 最近日韩中文字幕 | 欧美国产精品一区二区 | 中文字幕免费观看 | 色播视频在线观看 | 久久亚| 99综合| 精品国产乱码久久久久久蜜臀 | 亚洲成人在线网 | 久久99久久99精品免视看婷婷 | 日韩看片 | 国产精品久久9 | 在线一区二区三区 | 日韩三级在线 | 欧美成人不卡 | 成人精品国产一区二区4080 | 久久久久国产一级毛片 | 午夜精品久久 | 91久操视频 | 日韩欧美一级精品久久 | 在线播放亚洲 | 久草在线 | 超碰精品在线观看 | 欧美日韩国产免费 | 欧洲精品在线观看 | 91视频国产精品 | 欧美日韩综合一区 | 91视频久久 |