SQL Server 2008空间数据应用系列三:SQL Server 2008空间数据类型

SQL Server 2008空间数据应用系列三:SQL Server 2008空间数据类型
原文: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、具备相应的GIS专业理论知识。

  5、其他相关知识。


 

   SQL Server 2008为大地测量空间数据提供了geography数据类型,为平面空间数据提供了geometry数据类型。这两个都是Microsoft .NET Framework通用语言运行时(CLR)类型,并且可以用来存储不同种类的地理元素,例如点、线和多边形。这两个数据类型都提供了你可以用来执行空间操作的属性和方法,例如计算位置间的距离和找出两者间交叉的地理特性(例如一条河流经一个城镇)。本篇以SQL Server 2008的数据类型为核心内容,介绍其数据类型的支持以及新的空间数据类型的相关特性及基本应用。 

         

 

一、SQL Server 2008通用数据类型

  在SQL Server 2008中的每个变量,参数都会被定义为一个特定的数据类型,这些特定的数据类型主要用于排序、存储等,在SQL Server 2008中的通用数据类型和SQL Server 2005一样,主要的几个通用数据类型为下表所示:

   通用数据类型
数据类型描述
char固定长度字符串
datetime日期时间类型字段
float单精度字段
int整型字段
money货币类型
nvarchar可变长字符型

 

二、SQL Server 2008空间数据类型

   SQL Server 2008中出了兼容低版本的SQL数据库的通用数据类型和其他基础数据类型(比如:real、text等类型),新推出了两个用于支持空间数据存储的空间数据类型,分别为:大地向量空间类型(geography)和几何平面向量空间类型(geometry)。

 

  1、geography数据类型

  官方定义:geography数据类型为空间数据提供了一个由经度和纬度联合定义的存储结构。使用这种数据的典型用法包括定义道路、建筑、或者地理特性如可以覆盖到一个光栅图上的向量数据,它考虑了地球的弯曲性,或者计算真实的圆弧距离和空中传播轨道,而这些在一个平面模型中所存在的固有失真引起的错误程度是不可接受的。

 

  2、geometry数据类型

  官方定义:geometry数据类型为空间数据提供了一个存储结构,它是由任意平面上的坐标定义的。这种数据通常是用在区域匹配系统中的,例如由美国政府制定的州平面系统,或者是不需要考虑地球弯曲性的地图和内层布置图。geometry 数据类型提供了与开放地理空间联盟(OGC)Simple Features Specification for SQL标准结合的属性和方法,使得你可以对geometry数据执行操作以产生行业标准的行为。

       

 

  虽然这两个数据类型都可以用于存储空间数据,在针对不同的空间数据的时候还是有所异同。如果我们需要自己基于SQL Server 2008来做空间数据定义,就需要根据不同的数据在这两种空间数据类型中作出正确的决策了,这点在以后的博文中会进行介绍,这里飘过。此两种空间类型是完美符合空间参照系统标准制定的,包括测距计量单位、空间引用索引、授权标准以及WKT等规范,如下SQL可查看对于空间数据类型所对于的空间引用索引标准中制定的地理空间测距计量单位:

SELECT
  unit_of_measure
FROM
  sys.spatial_reference_systems
WHERE
  authority_name 
= 'EPSG'
  
AND
  authorized_spatial_reference_id 
= 4326
------------------------------------------------------------
执行结果:metre

 

 三、空间数据的存储方式

   SQL Server 2008中的两种空间数据:大地向量空间类型(geography)和几何平面向量空间类型(geometry)都是可变长度的数据类型,这意味着它们相对于比如int或者datetime等固定长度的数据类型,其存储的数据占用空间根据所存储数据的复杂程度、数据描述文字等不同可自适应数据类型的长度变化。

 

  空间数据类型字段的数据存储以8个字节的二进制格式存储,每条记录的数据的头部分就被定义好了空间数据的类型(点、线、面等类型),以及所使用的空间参考系统和地理坐标(经度、纬度)等值。通常情况下二进制数据内容越长所占用的空间数据存储空间就越大。

 

四、空间数据可视化

  在 SQL Server 2008 中Microsoft 引入具有两个新的内置数据类型、 几何图形和地理空间数据支持。 尽管您可能 “ 看到 ” 数据空间列的二进制数据存储但还是不能直观的反应出空间数据的预览效果, SQL Server 2008 的SQL Server Management Studio 中提供了一个空间结果选项卡,专门用于可视化预览空间数据结果。

 

  比如当前执行查询重庆大区边界的空间数据,那么对应于重庆大区边界数据库表可以执行以下SQL:

SELECT [ID]
      ,
[CODE]
      ,
[ELEV]
      ,
[NAME]
      ,
[geom]
  
FROM [BingMapsDB].[dbo].[CQ_Area_region]

 

  得到相应的SQL查询记录结果和空间可视化结果为下图所示:

      

   

五、参考资料

  [1]、空间数据(百度百科):http://baike.baidu.com/view/125911.htm

  [2]、空间数据可视化:http://msdn.microsoft.com/zh-cn/magazine/ee335706.aspx

 

 

版权说明

  本文属原创文章,欢迎转载且注明文章出处,其版权归作者和博客园共有。为了保存作者的创作热情,请在转载后的明显位置标记本文出处。  

  作      者:Beniao

 文章出处:http://beniao.cnblogs.com/  或  http://www.cnblogs.com/

posted on 2015-11-12 11:00 NET未来之路 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/lonelyxmas/p/4958311.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/289927.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

shell脚本中怎样同时执行多个.sql文件,并把结果写入文件中(转)

转载:http://joewalker.iteye.com/blog/408879命令行下具体用法如下: mysqldump -u用戶名 -p密码 -d 数据库名 表名 > 脚本名;导出整个数据库结构和数据mysqldump -h localhost -uroot -p123456 database > dump.sql导出单个数据表结构和数据mysql…

.NET 很好,你可能对它有一些误解

> 作者:Charles Chen在 20 年前的 2002 年, 微软公布了下一代的软件、服务的愿景和路线,2 月 13 日,Visual Studio .NET 推出,.NET 开发平台的第一个版本正式向世界发布。到现在为止,.NET 都已经 20 岁了, 它已经成…

ajax返回数据类型为JSON数据的处理

ajax返回数据类型为JSON数据的处理 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns"http://www.w3.org/1999/xhtml"> <head> <…

SQL语言实现金额小写转大写完整案例代码

1. 数字大小写对照表 一到十数字大小写: 1——壹,2——贰,3——叁,4——肆,5——伍,6——陆,7——柒,8——捌,9——玖,10——拾 2. 大小写转换案例 将12.345元转换为大写 select dbo.L2U(12.345,1) select dbo.L2U(123456789.345,1) 结果: 3. SQL转化代码 CREA…

Android studio之编译出现 Error:null value in entry: outputDirectory=null

1、问题 昨天编译好好的&#xff0c;今天编译无缘无故报下面这个错 Error:null value in entry: outputDirectorynull 2、解决办法 cd 到项目的根目录去&#xff0c;然后删除.gradle/文件夹就可以了 rm -rf .gradle/

c# 操作excle

添加引用 Microsoft.Office.Interop.Excel; 添加命名空间 using Excel Microsoft.Office.Interop.Excel; //创建接口变量------------------------------------------ _Workbook _xlWorkBook null; Worksheet _xlWorkSheet null; Excel.Application _xlApp null;//创建exc…

mysql 权重 取值_mysql如何按权重查询数据啊?

楼上的回答全都会错意了&#xff0c;题主意思是根据权重设定随机几率&#xff0c;例如 A 的权重为10&#xff0c;B 的权重为 5&#xff0c;这个时候随机出现 A 的几率要比出现 B 的几率高。你可以试试这个备选方案。就是先取出权重列表再去根据权重随机出来的那个权重值&#x…

使用 JsonSchema 验证 API 的返回格式

使用 JsonSchema 验证 API 的返回格式Intro最近我们的 API 提供给了别的团队的小伙伴用&#xff0c;按照他们的需求做了接口的改动&#xff0c;API 返回的数据结构有一些变化&#xff0c;我们提供的接口有缓存&#xff0c;数据库更新之后不会马上刷新&#xff0c;于是就想验证一…

盘点PHP编程常见失误

为什么80%的码农都做不了架构师&#xff1f;>>> 变量声明 如果在一条语句中声明一个变量&#xff0c;如下所示&#xff1a;$varvalue;编译器首先会求出语句右半部分的值&#xff0c;恰恰正是语句的这一部分常常会引发错误。如果使用的语法不正确&#xff0c;就会出…

Scala具体解释---------Scala是什么?可伸展的语言!

Scala是什么 Scala语言的名称来自于“可伸展的语言”。之所以这样命名&#xff0c;是由于他被设计成随着使用者的需求而成长。你能够把Scala应用在非常大范围的编程任务上。从写个小脚本到建立个大系统。51CTO编辑推荐&#xff1a;Scala编程语言专题 Scala是非常easy进入的语言…

地理学:从未磨灭的价值

地理学&#xff1a;从未磨灭的价值 文|梁鹏 庄子说&#xff1a;“天地有大美而不言&#xff0c;四时有明法而不议&#xff0c;万物有成理而不说”&#xff0c;天地不言&#xff0c;四时不议&#xff0c;万物不说&#xff0c;于是地理学家就是替天地说话的那帮人。推开自然之门&…

Android之导入项目提示Android requires compiler compliance level 5.0 or 6.0. Found ‘1.8‘ instead解决办法

1、问题 导入项目eclipse提示如下&#xff1a; Android requires compiler compliance level 5.0 or 6.0. Found 1.8 instead 2、解决办法 项目右键->Android tools->Fix Project

Educational Codeforces Round 1

被C坑的不行不行的。。。其他题目都还可以。 A - Tricky Sum 求1&#xff0c;2&#xff0c;3,...,n的加和&#xff0c;其中2^x&#xff08;x>0&#xff09;为负。 因为2^x的个数很少&#xff0c;所以以每个2^x为分界点进行判断. 初始化x0; 如果n>2^x,求出2^(x-1)到2^(x)之…

自定义View的三个构造函数

自定义View有三个构造方法&#xff0c;它们的作用是不同的。 public MyView(Context context) {super(context); }public MyView(Context context, AttributeSet attrs) {super(context, attrs);}public MyView(Context context, AttributeSet attrs, int defStyleAttr) {su…

mysql查询今天_昨天_7天_近30天_本月_上一月 数据_mysql查询今天、昨天、7天、近30天、本月、上一月 数据...

获取当前时间CURTIME();查询今天的数据select * from table where to_days(time) to_days(now())查询昨天数据select * from error where to_days(now())-to_days(alarmtime)1查询最近一个星期数据select * from error where to_days(now())-to_days(alarmtime)<7SELECT * …

甲骨文严查Java授权,企业连夜删除JDK

文 | Travis出品 | OSC开源社区&#xff08;ID&#xff1a;oschina2013)根据外媒 The Register 报道和各大企业的反馈&#xff0c;甲骨文公司近日已经开始将 Java 纳入其软件许可审查中&#xff0c;目的是找出那些处于不合规边缘或已经违规的客户&#xff0c;甲骨文此举是为了推…

前端日志分析

前端日志分析介绍 前端日志分析是通过搜集访客访问网站的行为数据&#xff0c;然后在这些用户日志数据的基础上通过定量和定性分析&#xff0c;来改善用户的浏览体验及网站性能&#xff0c;最终提升商业回报的过程&#xff0c;通常&#xff0c;前端日志分析遵循以下步骤…

历史之外,地理之中

历史之外&#xff0c;地理之中 ◎梁鹏 沉迷于历史&#xff0c;却最终选择了地理&#xff0c;于是苦苦寻求历史与地理之间的共通衔接之处。于学科而言&#xff0c;是历史与地理&#xff0c;于我而言&#xff0c;是梦想与现实。我知道已经存在的历史地理学不是我的归宿&#xff…

linux之readelf命令

1、readelf命令解释 readelf命令用来显示一个或者多个elf格式的目标文件的信息 2、ELF文件类型 可重定位文件:用户和其他目标文件一起创建可执行文件或者共享目标文件,例如lib*.a文件。 可执行文件:用于生成进程映像,载入内存执行,例如编译好的可执行文件a.out。 共享目标文件…

zuul转发的一些常见异常

为什么80%的码农都做不了架构师&#xff1f;>>> ##序 使用zuul作为api网关的话&#xff0c;经常会碰见一些异常&#xff0c;这里小结一下。 ##ZuulException 这个是最外层的异常 public class ZuulException extends Exception {public int nStatusCode;public Str…