SQL Servr 2008空间数据应用系列四:基本空间工具与函数应用建站经验

来源:互联网 / 作者:SKY / 2017-05-09 14:10 / 点击:
SQL Server 2008中支持的7种基本空间工具实例,别离为:点(Point)、点荟萃(MultiPoint )、线(LineString)、线荟萃(MultiLineString)、多边形(Polygon

SQL Server 2008中支持的7种基本空间工具实例,别离为:点(Point)、点荟萃(MultiPoint )、线(LineString)、线荟萃(MultiLineString)、多边形(Polygon )、多边形荟萃(MultiPolygon)和空间荟萃(GeometryCollection)。本篇意在为各人先容SQL Server 2008空间数据库体系构成部门中的基本空间工具以及体系内置的相干函数API,并就这些开拓API举办先容基于SQL Server 2008空间数据库体系的开拓与应用。

一、点(Point)

在 SQL Server 空间数据中,Point 是暗示单个位置的零维工具,也许包括 Z(仰角)和 M(怀抱)值。可以通过下面SQL建设一个点的示例,默认该点的SRID(空间引用标识)为0。

DECLARE @p geometry;
SET @p = geometry::Parse('POINT(30.6666587469201 104.062021177233)');
select @p.STX AS X;
select @p.STY AS Y;

 

如下SQL呼吁这建设了包括 Z(仰角)和 M(怀抱)值的点(Point)实例,个中 Z(仰角)和 M(怀抱)值可以表现的指定为“null”。

DECLARE @g geometry;
SET @g = geometry::Parse('POINT(30.6666587469201 104.062021177233 15 3.5)');
--SET @g = geometry::Parse('POINT(30.6666587469201 104.062021177233 null null)');
select @g.STX AS X
select @g.STY AS Y
select @g.Z as Z
select @g.M as M

 

二、点荟萃(MultiPoint )

MultiPoint 是零个点或更多个点的荟萃。MultiPoint 实例的界线为空。着实必要行使函数STGeomFromText()来名目化被界说的数据凭证OGC尺度输出WKT名目标空间数据功效,也可行使函数STMPointFromText()取代STGeomFromText()的行使,通过如下SQL呼吁可界说一个点荟萃工具实例,并行使函数STGeometryN()输出空间数据功效:

--建设点荟萃实例
DECLARE @cd geometry;
SET @cd = geometry::STGeomFromText('MULTIPOINT((30.6666587469201 104.062021177233),(29.5076372217973 106.489384971208))',4326);
--SET @cd = geometry::STMPointFromText('MULTIPOINT((30.6666587469201 104.062021177233),(29.5076372217973 106.489384971208))',4326);
select @cd.STGeometryN(1).STAsText() as 重庆;
select @cd.STGeometryN(2).STAsText() as 成都;
---------------------------------------------------------------------------------------
执行输出功效:

重庆
---------------------------------------------------------------------------------------
POINT (30.6666587469201 104.062021177233)

成都
---------------------------------------------------------------------------------------

POINT (29.5076372217973 106.489384971208)

 

三、线(LineString)

LineString 是一个一维工具,暗示一系列点和毗连这些点的线段。一个 LineString 实例必需由至少两个非一再点构成,也可觉得空。线条描写了空间上的两个或多个点之间的间隔,必需有两个端点,别离为:起止点(StartPoint)和终止点(EndPoint)。如下SQL呼吁实现了界说重庆到成都两点之间的线条:

DECLARE @cdline geometry;
SET @cdline = geometry::STGeomFromText('LINESTRING(30.6666 104.06202, 29.50763 106.48938)'4326);
select @cdline.STAsText() as 重庆_成都
-------------------------------------------------------------------------------------------
重庆_成都
-------------------------------------------------------------------------------------------
LINESTRING (30.6666 104.0620229.50763 106.48938)

 

在SQL Server 2008的空间功效中所泛起的结果如下图所示:

SQL Servr 2008空间数据应用系列四:根基空间器材与函数应用

图1

SQL Servr 2008空间数据应用系列四:根基空间器材与函数应用

图2

注:线条有多种外面泛起方法,有非闭合线条、闭合线条以及图形伟大的线条等多种环境呈现。如上(图2)所示。

四、线荟萃(MultiLineString)

MultiLineString 是零个或更多 geometry 或 geography LineString 实例的荟萃。为使 MultiLineString 实例有用,该实例必需满意以下前提:

1、组成 MultiLineString 实例的全部实例必需都是有用的 LineString 实例。

2、在组成 MultiLineString 实例的 LineString 实例中,不能有两个实例在某一段隔断上重叠。LineString 实例只能与自身相交或打仗,可能在有限数量标点上与其他 LineString 实例相交或打仗。

通过如下SQL代码片断演示MultiLineString的详细行使:

1
3