SQL Server 2008 geometry 数据类型
摘自SQL Server 2008帮助
平面空间数据类型 geometry 是作为 SQL Server 中的公共语言进行时 (CLR) 数据类型实现的。此类型表示欧几里得(平面)坐标系中的数据。
注册 geometry 类型
geometry 类型已进行预定义,并可在每个数据库中使用。您可以创建 geometry 类型的表列并对 geometry 数据进行操作,就像使用其他 CLR 类型一样。
示例
以下两个示例显示了如何添加和查询几何图形数据。第一个示例创建了带有标识列和 geometry 列 GeomCol1 的表。第三列将 geometry 列呈现为其开放地理空间联盟 (OGC) 熟知文本 (WKT) 表示形式,并使用 STAsText() 方法。接下来将插入两行:一行包含 geometry 类型的 LineString 实例,一行包含 Polygon 实例。
ALTER PROCEDURE [dbo].[Spatialpro]
AS
BEGIN
if object_id('dbo.test','u') is null
CREATE TABLE test(id INT IDENTITY(1,1),Geocol1 geometry,Geocol2 as Geocol1.STAsText());
insert into test(Geocol1)values(geometry::STGeomFromText('LINESTRING (100 100, 20 180, 180 180)',0));
insert into test(Geocol1)values(geometry::STGeomFromText('POLYGON ((0 0, 150 0, 150 150, 0 150, 0 0))',0));
END
第二个示例使用 STIntersection() 方法返回两个以前插入的 geometry 实例相交的点。
ALTER PROCEDURE [dbo].[Spatialpro]
AS
BEGIN
declare @g1 geometry;
declare @g2 geometry;
declare @result geometry;
select @g1=Geocol1 from test where id=1;
select @g2=Geocol1 from test where id=2;
select @result=@g1.STIntersection(@g2);
select @result;
END
维度
非空 geometry 实例可以为零维、一维或二维。零维 geometries(例如 Point 和 MultiPoint)没有长度或面积。一维对象(例如 LineString 和 MultiLineString)具有长度。二维实例(例如 Polygon 和 MultiPolygon)具有面积和长度。空实例将报告为 -1 维,并且GeometryCollection 将根据其内容类型报告一个面积。
空
“空”geometry 实例不包含任何点。空的 LineString 和 MultiLineString 实例的长度为零。空的 Polygon 和 MultiPolygon 实例的面积为 0。
简单
为了使实例的 geometry 变得“简单”,必须符合以下全部两个要求:
- 实例的每个图形不能与自身相交,但其终点除外。
- 实例的任何两个图形可在某个点上相交,但两个边界上的点除外。
边界、内部和外部
geometry 实例的“内部”是指由实例占用的空间,而“外部”是指未占用的空间。
“边界”由 OGC 定义,如下所示:
- Point 和 MultiPoint 实例没有边界。
- LineString 和 MultiLineString 边界由起始点和终点形成,并删除那些出现次数为偶数的点。
包络线
geometry 实例的“包络线”又称为“边界框”,它是一个由实例的最小和最大坐标 (X,Y) 形成的轴对齐矩形。
闭合
“闭合的”geometry 实例是指起始点和终点相同的图形。Polygon 实例是闭合的。Point 实例不是闭合的。
环是一个简单、闭合的 LineString 实例。
空间引用标识符 (SRID)
空间引用标识符 (SRID) 是指定 geometry 实例所在的坐标系的标识符。两个拥有不同 SRID 的实例是不可比的。
geometry 数据类型提供了许多内置方法,您可以使用这些方法基于现有实例创建新的 geometry 实例。
geometry 数据类型提供了许多内置方法,您可以使用这些方法确定两个 geometry 实例之间的关系。
所有 geometry 实例都有很多可以通过 SQL Server 提供的方法进行检索的属性。下列主题定义了几何图形类型的属性和行为,并为查询每种图形定义了方法。
可通过以熟知文本(Well-Known Text,WKT)或熟知二进制(Well-Known Binary,WKB)格式输入数据来构造 geometry 空间数据类型的实例。
STGeomFromText(geometry 数据类型)
从开放地理空间联盟 (OGC) 熟知文本 (WKT) 表示形式返回 geometry 实例,增加了该实例传递的任何 Z(标高)和 M(度量)值。
语法
STGeomFromText ( 'geometry_tagged_text' , SRID )
参数
geometry_tagged_text
-
您希望返回的 geometry 实例的 WKT 表示形式。geometry_tagged_text 为 nvarchar(max) 表达式。
- SRID
-
一个 int 表达式,它表示您希望返回的 geometry 实例的空间引用 ID (SRID)。
返回类型
SQL Server 返回类型:geometry
CLR 返回类型:SqlGeometry
备注
STGeomFromText() 返回的 geometry 实例的 OGC 类型设置为相应的 WKT 输入。
如果输入格式不正确,此方法将引发 FormatException。
ALTER PROCEDURE [dbo].[Spatialpro]
AS
BEGIN
declare @g1 geometry;
set @g1=geometry::STGeomFromText('LINESTRING (100 100, 20 180, 180 180)', 0);
select @g1;
END
SQL Server 2008 geometry 数据类型的更多相关文章
- SQL Server 2008空间数据应用系列三:SQL Server 2008空间数据类型
原文:SQL Server 2008空间数据应用系列三:SQL Server 2008空间数据类型 友情提示,您阅读本篇博文的先决条件如下: 1.本文示例基于Microsoft SQL Server ...
- sql server 2008 数据库数据类型
sql server 2008 数据库数据类型 一.数值型 int:整数类型,它的精度由执行机构确定.. smallint:短整数类型,它的精度由执行机构确定.. numeric(p,s):数值型,并 ...
- 【转】SQL Server 2008 新数据类型
概览: 新日期和时间数据类型 代表在层次结构中的位置 用于处理空间数据的两种模型 在全球经济环境下开展业务这一趋势越来越要求各公司使用新型的数据.应用程序以及复杂的计算.SQL Server 2008 ...
- SQL SERVER 2008 Hierarchyid数据类型
以往我们在关系数据库中建立树状结构的时候,通常使用ID+ParentID来实现两条纪录间的父子关系.但这种方式只能标示其相对位置.解决这类问题在SqlServer2005出现之前通常是采用游标来操作, ...
- C#中SQL SERVER 2008字符数据类型使用心得
一.尽可能使用Varchar,少使用或者不使用Char字符类型 因为char类型输入的数据长度达不到设计长度,会用空格补足,下面是数据表设计图: 下面是编辑前200行的图: 凡是输入的数据长度达不到设 ...
- SQL Server 2008空间数据应用系列五:数据表中使用空间数据类型
原文:SQL Server 2008空间数据应用系列五:数据表中使用空间数据类型 友情提示,您阅读本篇博文的先决条件如下: 1.本文示例基于Microsoft SQL Server 2008 R2调测 ...
- SQL SERVER 数据类型详解(SQL Server 2008)
数据类型类别 SQL Server 中的数据类型归纳为下列类别: 数字类型 1.精确数字 2.近似数字 3.日期和时间 字符串类型 4.非Unicode字符串 4.Unicode字符串 5.二进制字符 ...
- SQL Server 2008空间数据应用系列九:使用空间工具(Spatial Tools)导入ESRI格式地图数据
转自:http://www.cnblogs.com/beniao/archive/2011/03/22/1989310.html 友情提示,您阅读本篇博文的先决条件如下: 1.本文示例基于Micros ...
- SQL Server 2008空间数据应用系列六:基于SQLCRL的空间数据可编程性
原文:SQL Server 2008空间数据应用系列六:基于SQLCRL的空间数据可编程性 友情提示,您阅读本篇博文的先决条件如下: 1.本文示例基于Microsoft SQL Server 2008 ...
随机推荐
- 创建和管理表【weber出品必属精品】
创建表 必须有 : 1. CREATE TABLE 的权限 SQL> conn /as sysdba 已连接. SQL> create user test default tablespa ...
- (原创) ubuntu 12.04 install nvidia by the deb
先安装 驱动 1. sudo dpkg -i XXX.deb 2. sudo apt-get update 3. sudo apt-get install cuda 4. gedit ~/.bash ...
- PHP面向对象编程快速入门
面向对象编程(OOP)是我们编程的一项基本技能,PHP4对OOP提供了良好的支持.如何使用OOP的思想来进行PHP的高级编程,对于提高PHP编程能力和规划好Web开发构架都是非常有意义的.下面我们就通 ...
- 换行word-wrap与word-break兼容IE和FIREFOX -----设计师零张
word-wrap是控制换行的.使用break-word时,是将强制换行.中文没有任何问题,英文语句也没问题.但是对于长串的英文,就不起作用.word-break是控制是否断词的.normal是默认情 ...
- 写下你的第一个Django应用,第三部分
这篇指南开始于指南2结束的地方.我们将继续web投票应用和集中注意力在创建公共接口——“view” 理念 一个视图在你的Django应用中一个web页面的“品种”和它通常作为一个特定的函数以及有一个特 ...
- libevent使用之安装(一)
1.下载安装包,在官网http://www.monkey.org/~provos/libevent/下载 2.解压 运行命令: tar zxvf libevent-2.0.10-stable.tar. ...
- No.5 表达式中的陷阱
1. 关于字符串的陷阱 JVM对字符串的处理 String java = new String("Java"); 创建了几个对象? 2个."Java"直接量对应 ...
- Using ROWNUM in Oracle
ROWNUM is an Oracle pseudo column which numbers the rows in a result set. SELECT rownum, table_nameF ...
- 如何使用WCF调试器WcfTestClient.exe
如果启用服务出现如下异常 请启用下面该服务 C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE 文件->添加服务 地 ...
- 链表的基本操作(Basic Operations on a Linked List)
链表可以进行如下操作: 创建新链表 增加新元素 遍历链表 打印链表 下面定义了对应以上操作的基本函数. 创建新链表 新链表创建之后里面并没有任何元素,我们要为数据在内存中分配节点,再将节点插入链表.由 ...