前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SQL Server 2008 geometry 数据类型

SQL Server 2008 geometry 数据类型

作者头像
水击三千
发布2018-02-27 17:37:14
1.2K0
发布2018-02-27 17:37:14
举报
文章被收录于专栏:水击三千水击三千

摘自SQL Server 2008帮助

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

注册 geometry 类型

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

示例

以下两个示例显示了如何添加和查询几何图形数据。第一个示例创建了带有标识列和 geometryGeomCol1 的表。第三列将 geometry 列呈现为其开放地理空间联盟 (OGC) 熟知文本 (WKT) 表示形式,并使用 STAsText() 方法。接下来将插入两行:一行包含 geometry 类型的 LineString 实例,一行包含 Polygon 实例。

代码语言:javascript
复制
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 实例相交的点。

代码语言:javascript
复制
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(度量)值。

语法

代码语言:javascript
复制
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

代码语言:javascript
复制
ALTER PROCEDURE [dbo].[Spatialpro]
AS
BEGIN
	declare @g1 geometry;
	set @g1=geometry::STGeomFromText('LINESTRING (100 100, 20 180, 180 180)', 0);
	select @g1;
END
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-01-07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 注册 geometry 类型
  • 示例
  • 维度
  • 简单
  • 边界、内部和外部
  • 包络线
  • 闭合
  • 空间引用标识符 (SRID)
  • 语法
  • 参数
  • 返回类型
  • 备注
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档