设为首页 收藏本站
查看: 744|回复: 0

[经验分享] SQL Server 2008空间数据应用系列五:数据表中使用空间数据类型

[复制链接]

尚未签到

发表于 2015-6-29 14:30:17 | 显示全部楼层 |阅读模式
    友情提示,您阅读本篇博文的先决条件如下:
  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中空间数据类型相关的知识点,了解到了什么是空间数据,什么是空间数据类型,如何在SQL中变成定义基础的空间对象实例,这些知识点主要是为了后续学习空间数据应用和做地理空间分析做准备。本篇将继续介绍SQL Server 2008中空间数据类型的应用知识点,主要介绍如何在数据表中使用空间数据类型列,如何存储空间数据到空间数据类型,以及如何查询、预览空间数据等相关知识点。
  
  选择使用空间数据类型,意味着必须在SQL数据表中添加空间数据类型列以存储空间数据。通常有两种情况:
  1、创建一张带有空间数据类型的新表。
  2、向已有数据表中添加空间数据类型列字段。
  
  一、创建空间数据类型新表
  创建一个带有空间数据类型的新表和创建普通的表基本没有区别,唯一的不同就是使用了空间数据类型字段。以下SQL演示了创建带有空间数据类型的数据表:


CREATE TABLE [Cities] (
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [CityName] [varchar](255) NOT NULL,
    [CityLocation] [geometry] NOT NULL
)
GO  
  二、添加空间数据类型到已有表
  向已有表中添加空间数据类型列和普通表添加新的列是一样的,同样使用alter table  xxx  add  yyy datatype命令完成。下面代码演示了向刚创建的新表添加一空间数据类型字段:


--向已有表中添加空间数据类型字段
ALTER TABLE [Cities]
    ADD geo geography
GO  
  三、为空间数据类型列制定空间引用标识(SRID)
  任何空间数据类型字段都可以向其指派相应的空间引用标识(SRID),部分空间数据类型字段还是必须制定SRID的。实现对空间数据类型列指派SRID也非常简单,SQL提供了指派命令来完成,下面的SQL命令演示了给上面新添加的空间数据类型指派SRID的实现。


--指派空间数据类型列的SRID
ALTER TABLE [Cities]
    ADD CONSTRAINT [enforce_srid_geographycolumn]
    CHECK (geo.STSrid = 4326)
GO  
  四、插入空间数据到空间数据类型字段
  插入数据导表格中同样使用“insert into table.....”语法实现,不同的是插入空间数据的时候需要对数据进行格式化处理才能被成功的插入到空间数据类型列。针对于两种(geography和geometry)空间数据类型,系统提供了专门的空间格式化语法来处理,比如通过将WKT文本插入到空间数据列,可以使用geometry::STGeomFromText()或者geography::STGeomFromText()函数来对WKT文本进行空间数据类型格式转化。


insert into Cities
    (CityName,CityLocation)
        values
            ('chongqing',geometry::STGeomFromText('POLYGON ((107.04352 28.870554, 107.043891 28.873231......)',4326));  
  注:上面SQL代码块实现了将重庆市区区域WKT格式的空间数据插入到Cities表的CityLocation字段中,由于WKT内用太长,代码段中对其进行了截取。
  
  四、查询空间数据类型数据
  查询空间数据和普通的数据查询几乎没有区别,同样使用“select xxx from table where x=y”的方式实现数据查询。下面SQL命令演示了查询刚刚插入的数据记录:


select * from Cities; DSC0000.jpg
  同样可以使用系统函数将查询出的空间结果转化为WKT文本格式输出,下面的SQL命令详细演示了改功能函数的使用:


--转换空间数据为WKT文本
DECLARE @chongqing geometry;
select @chongqing = CityLocation from Cities where ID=1;
select @chongqing as 重庆市;
select @chongqing.ToString() as 重庆市;
select @chongqing.STAsText() as 重庆市;   --WKT  
DSC0001.jpg
  
  五、相关资料
  [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
  
  版权说明
  本文属原创文章,欢迎转载且注明文章出处,其版权归作者和博客园共有。为了保存作者的创作热情,请在转载后的明显位置标记本文出处。   
  作      者:Beniao
  文章出处:http://beniao.iyunv.com/  或  http://www.iyunv.com/
DSC0002.jpg

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-81555-1-1.html 上篇帖子: Sql server中时间函数用法详解 下篇帖子: SQL Server 日期函数:某天是星期几?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表