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 ...
随机推荐
- Ubuntu 14.04远程登录服务器--openssh的安装和配置简明步骤
如果要主机通过网络操作嵌入式板子,ttelnet就够了,但是 如果要相互传文件,则必须使用另外一个强大的软件SSH.更完整的步骤和截图请参考http://jingyan.baidu.com/artic ...
- 【CDOJ931】Car race game(树状数组求逆序)
题目连接:http://acm.uestc.edu.cn/#/problem/show/931 OJ评判系统有些坑,不支持__int64以及输出的%I64d大家注意.全开long long也会TLE, ...
- 微信内置浏览器的JsAPI(WeixinJSBridge续)_Alien的笔记
微信内置浏览器的JsAPI(WeixinJSBridge续)_Alien的笔记 微信内置浏览器的JsAPI(WeixinJSBridge续)进入全屏 之前有写过几篇关于微信内置浏览器(WebView) ...
- PyQt4中无边框窗口的移动(拖动)
import sys from PyQt4.QtGui import * from PyQt4.Qt import * from PyQt4.QtCore import * class AboutUs ...
- springMVC3学习(六)--SimpleFormController
SimpleFormController提交表单流程例如以下: login.jsp <form action="login" method="post"& ...
- HDUJ 2074 叠筐 模拟
叠筐 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...
- SQLLoader3(数据文件没有分隔符时的导入)
数据文件:D:\oracletest\ldr_tab_fiile.dat1.数据文件字段中间以制表符TAB隔开:7369 SMITH CLERK7499 ALLEN SALESMAN7521 WARD ...
- 触摸点为scrollview上的子控件时,scrollview不能滚动(iOS8)
现象:在iOS8上,scrollview上面布局了多行多列的button,滑动scrollview,如果当触摸点是在按钮上,scrollview不能滚动. 例如: 解决方法:设置scrollview的 ...
- 使用HttpClient发送GET请求
HttpRequestMessage http_req_msg = new HttpRequestMessage(); http_req_msg.Method = HttpMethod.Get; ht ...
- 并行查询提高sql查询速度
新项目在使用Oracle开发中遇到测试库千万级数据导致数据慢,除去加索引和存储过程可以明显提速外,使用并行也可以提速 select /*+parallel(a,8)*/ a.* from a 加上/* ...