摘自SQL Server 2008帮助

平面空间数据类型 geometry 是作为 SQL Server 中的公共语言进行时 (CLR) 数据类型实现的。此类型表示欧几里得(平面)坐标系中的数据。

注册 geometry 类型

geometry 类型已进行预定义,并可在每个数据库中使用。您可以创建 geometry 类型的表列并对 geometry 数据进行操作,就像使用其他 CLR 类型一样。

示例

以下两个示例显示了如何添加和查询几何图形数据。第一个示例创建了带有标识列和 geometryGeomCol1 的表。第三列将 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(例如 PointMultiPoint)没有长度或面积。一维对象(例如 LineStringMultiLineString)具有长度。二维实例(例如 PolygonMultiPolygon)具有面积和长度。空实例将报告为 -1 维,并且GeometryCollection 将根据其内容类型报告一个面积。

“空”geometry 实例不包含任何点。空的 LineStringMultiLineString 实例的长度为零。空的 PolygonMultiPolygon 实例的面积为 0。

简单

为了使实例的 geometry 变得“简单”,必须符合以下全部两个要求:

  • 实例的每个图形不能与自身相交,但其终点除外。
  • 实例的任何两个图形可在某个点上相交,但两个边界上的点除外。

边界、内部和外部

geometry 实例的“内部”是指由实例占用的空间,而“外部”是指未占用的空间。

“边界”由 OGC 定义,如下所示:

  • PointMultiPoint 实例没有边界。
  • LineStringMultiLineString 边界由起始点和终点形成,并删除那些出现次数为偶数的点。

包络线

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_textnvarchar(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 数据类型的更多相关文章

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

    原文:SQL Server 2008空间数据应用系列三:SQL Server 2008空间数据类型 友情提示,您阅读本篇博文的先决条件如下: 1.本文示例基于Microsoft SQL Server ...

  2. sql server 2008 数据库数据类型

    sql server 2008 数据库数据类型 一.数值型 int:整数类型,它的精度由执行机构确定.. smallint:短整数类型,它的精度由执行机构确定.. numeric(p,s):数值型,并 ...

  3. 【转】SQL Server 2008 新数据类型

    概览: 新日期和时间数据类型 代表在层次结构中的位置 用于处理空间数据的两种模型 在全球经济环境下开展业务这一趋势越来越要求各公司使用新型的数据.应用程序以及复杂的计算.SQL Server 2008 ...

  4. SQL SERVER 2008 Hierarchyid数据类型

    以往我们在关系数据库中建立树状结构的时候,通常使用ID+ParentID来实现两条纪录间的父子关系.但这种方式只能标示其相对位置.解决这类问题在SqlServer2005出现之前通常是采用游标来操作, ...

  5. C#中SQL SERVER 2008字符数据类型使用心得

    一.尽可能使用Varchar,少使用或者不使用Char字符类型 因为char类型输入的数据长度达不到设计长度,会用空格补足,下面是数据表设计图: 下面是编辑前200行的图: 凡是输入的数据长度达不到设 ...

  6. SQL Server 2008空间数据应用系列五:数据表中使用空间数据类型

    原文:SQL Server 2008空间数据应用系列五:数据表中使用空间数据类型 友情提示,您阅读本篇博文的先决条件如下: 1.本文示例基于Microsoft SQL Server 2008 R2调测 ...

  7. SQL SERVER 数据类型详解(SQL Server 2008)

    数据类型类别 SQL Server 中的数据类型归纳为下列类别: 数字类型 1.精确数字 2.近似数字 3.日期和时间 字符串类型 4.非Unicode字符串 4.Unicode字符串 5.二进制字符 ...

  8. SQL Server 2008空间数据应用系列九:使用空间工具(Spatial Tools)导入ESRI格式地图数据

    转自:http://www.cnblogs.com/beniao/archive/2011/03/22/1989310.html 友情提示,您阅读本篇博文的先决条件如下: 1.本文示例基于Micros ...

  9. SQL Server 2008空间数据应用系列六:基于SQLCRL的空间数据可编程性

    原文:SQL Server 2008空间数据应用系列六:基于SQLCRL的空间数据可编程性 友情提示,您阅读本篇博文的先决条件如下: 1.本文示例基于Microsoft SQL Server 2008 ...

随机推荐

  1. (转)web.config详解之在文件中配置网站默认页面

    在<configuration></configuration>中添加下面的配置 <system.webServer>        <defaultDocu ...

  2. jquery easyui-datagrid 如何清空数据

      //清空原有数据 方法1: var item = $('#filegrid').datagrid('getRows'); if (item) { ; i >= ; i--) { var in ...

  3. Mac_配置adb环境变量

    1.打开终端Terminal. 2.进入HOME目录:命令行输入 echo(这之间有一个空格) $HOME 3.创建.bash_profile文件:命令行输入 touch(这之间有一个空格).bash ...

  4. AngularJs练习Demo7

    @{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="viewport&quo ...

  5. 我永远的 dell 15r

    陪伴我三年多的15r  让我疯狂过.努力过.更记录了我很多的成长,与很多个瞬间.看到它是有感情的.还记得第一次失去她.我好像失去了自己. 我是一个程序员.每个程序员都有自己的环境配置.不同的软件.就是 ...

  6. Shell脚本中单引号(‘)和双引号(“)的使用区别[转载]

    shell可以识别4种不同类型的引字符号: 单引号字符' 双引号字符" 反斜杠字符\ 反引号字符` 1. 单引号 ( '' ) # grep Susan phonebook Susan Go ...

  7. MFC中使用ADO方式连接数据库

    文章转自:http://blog.sina.com.cn/s/blog_a43aba5601014z8h.html 一.数据库操作准备 1.导入ADO动态链接库 在工程的stdafx.h中加入如下语句 ...

  8. vc 获取当前时间

    1.使用CTime类 CString str; //获取系统时间 CTime tm; tm=CTime:: GetCurrentTime_r(); str=tm.Format("现在时间是% ...

  9. 在java中生成二维码,并直接输出到jsp页面

    在java中生成的二维码不存到磁盘里要直接输出到页面上,这就需要把生成的二维码直接以流的形式输出到页面上,我用的是myeclipse 和 tomcat 它的原理是:在加载页面时,根据img的src(c ...

  10. 新花生壳+tomcat(内网映射,无需设置路由器)建站攻略

    说明: 1.适用于内网用户(局域网,校园网,或者公司网等无法更改路由器映射的情况) 2.一共花了8块钱…………心疼.不过如果大家有钱的话,8块钱,少吃一顿麻辣烫就好了~总之,这个适用于测试网站,小访问 ...