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中空间数据类型相关的知识点,了解到了什么是空间数据,什么是空间数据类型,如何在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 geographyGO
三、为空间数据类型列制定空间引用标识(SRID)
任何空间数据类型字段都可以向其指派相应的空间引用标识(SRID),部分空间数据类型字段还是必须制定SRID的。实现对空间数据类型列指派SRID也非常简单,SQL提供了指派命令来完成,下面的SQL命令演示了给上面新添加的空间数据类型指派SRID的实现。
--指派空间数据类型列的SRIDALTER 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;

同样可以使用系统函数将查询出的空间结果转化为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

五、相关资料
[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.cnblogs.com/ 或 http://www.cnblogs.com/

SQL Server 2008空间数据应用系列五:数据表中使用空间数据类型的更多相关文章
- SQL Server 2008空间数据应用系列十一:提取MapInfo地图数据中的空间数据解决方案
原文:SQL Server 2008空间数据应用系列十一:提取MapInfo地图数据中的空间数据解决方案 友情提示,您阅读本篇博文的先决条件如下: 1.本文示例基于Microsoft SQL Serv ...
- SQL Server 2008空间数据应用系列十:使用存储过程生成GeoRSS聚合空间信息
原文:SQL Server 2008空间数据应用系列十:使用存储过程生成GeoRSS聚合空间信息 友情提示,您阅读本篇博文的先决条件如下: 1.本文示例基于Microsoft SQL Server 2 ...
- SQL Server 2008空间数据应用系列八:基于Bing Maps(Silverlight)的空间数据存储
原文:SQL Server 2008空间数据应用系列八:基于Bing Maps(Silverlight)的空间数据存储 友情提示,您阅读本篇博文的先决条件如下: 1.本文示例基于Microsoft S ...
- SQL Server 2008空间数据应用系列二:空间索引(Spatial Index)基础
原文:SQL Server 2008空间数据应用系列二:空间索引(Spatial Index)基础 在前一篇博文中我们学习到了一些关于地理信息的基础知识,也学习了空间参照系统,既地球椭球体.基准.本初 ...
- SQL Server 2008空间数据应用系列三:SQL Server 2008空间数据类型
原文:SQL Server 2008空间数据应用系列三:SQL Server 2008空间数据类型 友情提示,您阅读本篇博文的先决条件如下: 1.本文示例基于Microsoft SQL Server ...
- SQL Server 2008空间数据应用系列四:基础空间对象与函数应用
原文:SQL Server 2008空间数据应用系列四:基础空间对象与函数应用 友情提示,您阅读本篇博文的先决条件如下: 1.本文示例基于Microsoft SQL Server 2008 R2调测. ...
- SQL Server 2008空间数据应用系列十二:Bing Maps中呈现GeoRSS订阅的空间数据
原文:SQL Server 2008空间数据应用系列十二:Bing Maps中呈现GeoRSS订阅的空间数据 友情提示,您阅读本篇博文的先决条件如下: 1.本文示例基于Microsoft SQL Se ...
- SQL Server 2008空间数据应用系列六:基于SQLCRL的空间数据可编程性
原文:SQL Server 2008空间数据应用系列六:基于SQLCRL的空间数据可编程性 友情提示,您阅读本篇博文的先决条件如下: 1.本文示例基于Microsoft SQL Server 2008 ...
- SQL Server 2008空间数据应用系列七:基于Bing Maps(Silverlight) 的空间数据展现
原文:SQL Server 2008空间数据应用系列七:基于Bing Maps(Silverlight) 的空间数据展现 友情提示,您阅读本篇博文的先决条件如下: 1.本文示例基于Microsoft ...
随机推荐
- android官方侧滑菜单DrawerLayout详解
drawerLayout是Support Library包中实现了侧滑菜单效果的控件,可以说drawerLayout是因为第三方控件如MenuDrawer等的出现之后,google借鉴而出现的产物.d ...
- PERL 实现微信登录
get 请求: https://login.weixin.qq.com/jslogin? appid=wx782c26e4c19acffb &redirect_uri=https%3A%2F% ...
- java链接sqlite资料整理
0.SQLite三种JDBC驱动的区别 摘自http://blog.sina.com.cn/s/blog_654337ca01016x4n.html 在DBeaver中看到SQLite有三种JDBC驱 ...
- Linux 计算器
bc: 默认没有小数位,使用scale=2设置保留的位数.
- 用户登陆,退出等基本Action
用户登陆页面user_login.jsp对应action为login.do: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transiti ...
- BZOJ 4541 【HNOI2016】 矿区
题目链接:矿区 这道题去年暑假就想写了,但是一直拖拉,以至于现在才来写这道题.以前一直在刻意回避几何类的题目,但到了现在这个时候,已经没有什么好害怕的了. 正巧今天神犇\(xzy\)讲了这道题,那我就 ...
- struts——文件上传
上传文件在一个系统当中是一个很常用的功能,也是一个比较重要的功能.今天我们就一起来学习一下Struts2如何上传文件. 今天讲的上传文件的方式有三种: 1,以字节为单位传输文件: 2,Struts2封 ...
- iOS更新之DFU模式和恢复模式
DFU模式和恢复模式的区别:DFU模式是在iPhone固件引导启动之前进行恢复的模式.所以用DFU模式刷机一般比较干净,不会有任何垃圾文件.想当于电脑重新格式化之后再安装系统. DFU模式进入方法:1 ...
- java时间格式转换
package org.shineway.com; import java.text.ParseException; import java.text.SimpleDateFormat; import ...
- [React] Styling a React button component with Radium
React's inline styles allow components to stand on their own by not requiring any external CSS. Howe ...