设计网站推广方案,口碑营销策划方案,如何将wordpress转成小程序,淘宝网站建设类别SQL Server 2008空间数据应用系列四#xff1a;基础空间对象与函数应用 原文:SQL Server 2008空间数据应用系列四#xff1a;基础空间对象与函数应用友情提示#xff0c;您阅读本篇博文的先决条件如下#xff1a; 1、本文示例基于Microsoft SQL Server 2008 R2调测。 2、具… SQL Server 2008空间数据应用系列四基础空间对象与函数应用 原文:SQL Server 2008空间数据应用系列四基础空间对象与函数应用 友情提示您阅读本篇博文的先决条件如下 1、本文示例基于Microsoft SQL Server 2008 R2调测。 2、具备 Transact-SQL 编程经验和使用 SQL Server Management Studio 的经验。 3、熟悉或了解Microsoft SQL Server 2008中的空间数据类型。 4、具备相应比如OGC的GIS专业理论知识。 5、其他相关知识。 SQL Server 2008中支持的7种基础空间对象实例分别为点Point、点集合MultiPoint 、线LineString、线集合MultiLineString、多边形Polygon 、多边形集合MultiPolygon和空间集合GeometryCollection。本篇意在为大家介绍SQL Server 2008空间数据库系统组成部分中的基础空间对象以及系统内置的相关函数API并就这些开发API进行介绍基于SQL Server 2008空间数据库系统的开发与应用。 一、点Point 在 SQL Server 空间数据中Point 是表示单个位置的零维对象可能包含 Z仰角和 M度量值。可以通过下面SQL创建一个点的示例默认该点的SRID空间引用标识为0。 DECLARE p geometry;SET p geometry::Parse(POINT(30.6666587469201 104.062021177233));select p.STX AS X;select p.STY AS Y; 如下SQL命令这创建了包含 Z仰角和 M度量值的点Point实例其中 Z仰角和 M度量值可以显示的指定为“null”。 DECLARE g geometry;SET g geometry::Parse(POINT(30.6666587469201 104.062021177233 15 3.5));--SET g geometry::Parse(POINT(30.6666587469201 104.062021177233 null null));select g.STX AS Xselect g.STY AS Yselect g.Z as Zselect g.M as M 二、点集合MultiPoint MultiPoint 是零个点或更多个点的集合。MultiPoint 实例的边界为空。其实需要使用函数STGeomFromText()来格式化被定义的数据按照OGC标准输出WKT格式的空间数据结果也可使用函数STMPointFromText()代替STGeomFromText()的使用通过如下SQL命令可定义一个点集合对象实例并使用函数STGeometryN()输出空间数据结果 --创建点集合实例DECLARE cd geometry;SET cd geometry::STGeomFromText(MULTIPOINT((30.6666587469201 104.062021177233),(29.5076372217973 106.489384971208)),4326);--SET cd geometry::STMPointFromText(MULTIPOINT((30.6666587469201 104.062021177233),(29.5076372217973 106.489384971208)),4326);select cd.STGeometryN(1).STAsText() as 重庆;select cd.STGeometryN(2).STAsText() as 成都;---------------------------------------------------------------------------------------执行输出结果重庆---------------------------------------------------------------------------------------POINT (30.6666587469201 104.062021177233) 成都--------------------------------------------------------------------------------------- POINT (29.5076372217973 106.489384971208) 三、线LineString LineString 是一个一维对象表示一系列点和连接这些点的线段。一个 LineString 实例必须由至少两个非重复点组成也可以为空。线条描述了空间上的两个或多个点之间的距离必须有两个端点分别为起止点StartPoint和终止点EndPoint。如下SQL命令实现了定义重庆到成都两点之间的线条 DECLARE cdline geometry;SET cdline geometry::STGeomFromText(LINESTRING(30.6666 104.06202, 29.50763 106.48938), 4326);select cdline.STAsText() as 重庆_成都-------------------------------------------------------------------------------------------重庆_成都-------------------------------------------------------------------------------------------LINESTRING (30.6666 104.06202, 29.50763 106.48938) 在SQL Server 2008的空间结果中所呈现的效果如下图所示 注线条有多种外观呈现方式有非闭合线条、闭合线条以及图形复杂的线条等多种情况出现。如上右图示。 四、线集合MultiLineString MultiLineString 是零个或更多 geometry 或 geography LineString 实例的集合。为使 MultiLineString 实例有效该实例必须满足以下条件 1、构成 MultiLineString 实例的所有实例必须都是有效的 LineString 实例。 2、在构成 MultiLineString 实例的 LineString 实例中不能有两个实例在某一段间隔上重叠。LineString 实例只能与自身相交或接触或者在有限数目的点上与其他 LineString 实例相交或接触。 通过如下SQL代码片段演示MultiLineString的具体使用 DECLARE ml geometry;--SET ml geometry::Parse(MULTILINESTRING((30.6666 104.06202, 29.50763 106.48938),(30.6666 104.06202,33.78142 105.97914)));SET ml geometry::STGeomFromText(MULTILINESTRING((30.6666 104.06202, 29.50763 106.48938),(30.6666 104.06202,33.78142 105.97914)),4326);--SET ml.STSrid 4326;select ml;select ml.STIsValid(); --验证ml对象是否为正确的空间对象 五、多边形Polygon Polygon 是存储为一系列点的二维表面这些点定义一个外部边界环和零个或多个内部环。可以从至少具有三个不同点的环中构建一个 Polygon 实例。以下SQL命令演示了如何创建多边形以及求多边形的面积函数的应用。 --创建多边形DECLARE pg geometry;SET pg geometry::STPolyFromText(POLYGON((0 0, 0 3, 3 3, 3 0, 0 0), (1 1, 1 2, 2 1, 1 1)), 10);select pg;select pg.STArea(); --求得多边形的面积 六、多边形集合MultiPolygon 多边形集合MultiPolygon 实例是零个或更多个 Polygon 实例的集合。下面的SQL命令演示了定义一个多边形集合对象并返回第一个对象的WKT。 --创建多边形集合,并返回第一个多边形的WKTDECLARE mpg geometry;SET mpg geometry::Parse(MULTIPOLYGON(((1 1, 1 2, 2 1, 1 1)), ((9 9, 9 10, 10 9, 9 9))));SELECT mpg.STGeometryN(1).STAsText();---------------------------------------------------------------------------------------------执行输出结果POLYGON ((1 1, 1 2, 2 1, 1 1)) 七、空间对象集合GeometryCollection GeometryCollection 是零个或更多个 geometry 或 geography 实例的集合。GeometryCollection 可以为空。以下SQL演示了定义一个带有一个点Point实例和一个多边形Polygon实例的空间对象集合对象。 --空间集合DECLARE ggc geometry;SET ggc geometry::STGeomCollFromText(GEOMETRYCOLLECTION(POINT(3 3 1), POLYGON((0 0 2, 1 10 3, 1 0 4, 0 0 2))), 1);select ggc;select ggc.STAsText(); --输出WKT文本不带Z,M值select ggc.ToString(); --输出对象原字符串带Z,M值---------------------------------------------------------------------------------------------执行输出结果--------------------------------------------------------------------------------------------- 0x010000000105050000000000000000000840000000000000084000000000000000000000000000000000000000000000F03F0000000000002440000000000000F03F000000000000000000000000000000000000000000000000000000000000F03F0000000000000040000000000000084000000000000010400000000000--------------------------------------------------------------------------------------------- GEOMETRYCOLLECTION (POINT (3 3), POLYGON ((0 0, 1 10, 1 0, 0 0)))--------------------------------------------------------------------------------------------- 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本文末也提供了相关参考资料的链接。下面代码演示了测距重庆到成都两点之间坐标的距离单位米。 DECLARE chongqing geography geography::Point(30.6666587469201,104.062021177233, 4326)DECLARE chengdu geography geography::Point(29.5076372217973, 106.489384971208, 4326)SELECT chongqing.STDistance(chengdu)-----------------------------------------------------------------------------------------执行结果为266943.740244237 九、相关资料 [1]、空间数据库百度百科http://baike.baidu.com/view/1194566.htm [2]、使用空间数据实现位置智能http://tech.ddvip.com/2008-04/120816526343873.html [3]、基础空间对象MSDNhttp://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 版权说明 本文属原创文章欢迎转载且注明文章出处其版权归作者和博客园共有。为了保存作者的创作热情请在转载后的明显位置标记本文出处。 作 者Beniao 文章出处http://beniao.cnblogs.com/ 或 http://www.cnblogs.com/ posted on 2015-11-12 11:00 NET未来之路 阅读(...) 评论(...) 编辑 收藏 转载于:https://www.cnblogs.com/lonelyxmas/p/4958313.html