GB/T 33187.1-2016 地理信息 简单要素访问 第1部分:通用架构
- 文档部分内容预览:
6.1.2.3几何对象间的空间关系测试方法
本条款中的方法在Geometry子类型的后续描述中有更详细的定义与描述。 Equals(anotherGeometry:Geometry):Integer 若该几何对象与另一个几何对象“空间上 相等”,则返回1(TRUE)。 Disjoint(anotherGeometry:Geometry):Integer若该几何对象与另一个几何对象“空间 上相离”,则返回1(TRUE)。 Intersects(anotherGeometry:Geometry):Integer 若该几何对象与另一个几何对象“空 间上相交”,则返回1(TRUE)。 Touches(anotherGeometry:Geometry):Integer 若该几何对象与另一个几何对象“空 间上相接”,则返回1(TRUE)。 Crosses(anotherGeometry:Geometry):Integer一一若该几何对象“空间上跨越”另一个几何 对象,则返回1(TRUE)。 Within(anotherGeometry:Geometry):Integer若该几何对象“空间上包含于”另一个几 何对象,则返回1(TRUE)。 Contains(anotherGeometry:Geometry):Integer若该几何对象“空间上包含”另一个几何 对象,则返回1(TRUE)。 Overlaps(anotherGeometry:Geometry).Integer— 若该儿何对象与另一个儿何对象“空间 上交登”,则返回1(TRUE)。 Relate(anotherGeometry:Geometry,intersectionPatternMatrix:String):Integer 若该儿 何对象与另一个几何对象符合intersection模型矩阵的值,则两对象空间上相关(Relate),返 回1(TRUE)
6.1.2.4支持空间分析的方法
6.1.3GeometryCollection
档案标准GeometryCollection是由1个几何对象或多个几何对象集合而成的一个几何对象。 GeometryCollection的所有元素应在同一空间参照中。这也是GeometryCollection的空间参照
GeometryCollection对其成员元素无约束条件。GeometryCollection子类则对其成员元素的维数 或成员元素间的交叠程度有所约束
NumGeometries():Integer一返回该GeometryCollection中几何元素的数目。 GeometryN(N.integer)Geometry 返回该GeometryCollection中第N个几何元素。
Point是0维几何对象,表示坐标空间中的一个单个位置。Point有工坐标值和y坐标值。 Point的边界是空集。
X():Double 一返回该Point的工坐标值 Y(),Double——返回该Point 的 y坐标值
X(:Double 一返回该Point的工坐标值 Y().Double 返回该Point的y坐标值。
6.1.5MultiPoint
MultiPoint是o维GeometryCollcction。MultiPoint的元素被限制为Point。这些Point 连接的或无序的。 MultiPoint中没有任意两个Point具有相同的坐标值,则它是简单的。 MultiPoint的边界是空集
6.1.6 Curve
Curve是存储为一系列Point(序列排列的点)的1维几何对象。其子类型决定了点与点之间插值 方式。本部分仅定义了Curve的一个子类一一LineString,它在点间采用线性插值。 Curve是1维几何对象,在f:[a,b]→R”映射中,它是一个真实的、闭合的、间隔D=[a,b]=(rE R.la≤≤b)的同胚映射。 若Curve没有两次穿过同一个Point,则该Curve是简单的(见参考文献[1]的3.12.7.3)。 VcECurve,[a,b]=c.Domain, c.IsSimple(l,2(a2→(1)f(2))(l,2[ab)2=f(1)f(2)) 若Curve的起始Point和终止Point相等,则该Curve是闭合的(见参考文献[1]的3.12.7.3)。 闭合Curve的边界是空。 简单闭合的Curve是Ring(环)。 非闭合Curve的边界由它的两个端Point组成(见参考文献[1]的3.12.3.2)。 Curve是拓扑闭合的
Curve是存储为一系列Point(序列排列的点)的1维几何对象。其子类型决定了点与点 式。本部分仅定义了Curve的一个子类一一LineString,它在点间采用线性插值。 Curve是1维几何对象,在f:[a,b]R”映射中,它是一个真实的、闭合的、间隔D=[a,b]=(E R.la≤工≤b)的同胚映射。 若Curve没有两次穿过同一个Point,则该Curve是简单的(见参考文献[1]的3.12.7.3)。 VcECurve,[a,b]=c.Domain, c.IsSimple=(Vl,2(a,b]l2→f()f(2))(l,2[ab)2→f(1)f(2)) 若Curve的起始Point和终止Point相等,则该Curve是闭合的(见参考文献[1]的3.12.7.3)。 闭合Curve的边界是空。 简单闭合的Curve是Ring(环)。 非闭合Curve的边界由它的两个端Point组成(见参考文献[1]的3.12.3.2)。 Curve是拓扑闭合的
Length().Double 该Curve在其空间参照系中的长度。 StartPoint():Point 该Curve的起始Point。 EndPoint(:Point 该Curve的终止Point。 IsClosed():Integer 若该Curve是闭合的[StartPoint()=EndPoint()],则返回
(TRUE)。 IsRing():Integer一若该Curve是闭合的[StartPoint()=EndPoint()」、且简单的(没有超过 一次地穿过同一个Point),则返回1(TRUE)
6.1.7LineString、Line(直线)和LinearRing(纟
图2LineString的示例—(a)简单的LineString;(b)非简单的LineString (e)简单、闭合的LineString(LinearRing):(d)非简单、闭合的LineString
NumPoints():Integer 返回该LineString中Point的数目, PointN(N.Integer):Point 返回该LineString中指定的第N个Point
6.1.8 MultiCurve
MultiCurve是元素为Curve的1维GeometryCollection,如图3所示。 在本部分中,MultiCurve是不可实例化的类;它为其子类定义了一套方法,且包括可扩展的原因。 当且仅当MultiCurve的所有元素是简单的、且任意两元素的交仅出现在这两元素边界上的Point 时,则该MultiCurve是简单的。 MultiCurve的边界可使用“模2”并规则获得:MultiCurve边界上的Point是该MultiCurve中奇数 个元素的边界上的Point(见参考文献[1]的3.12.3.2)。 若MultiCurve的所有元素是闭合的,则该MultiCurve是闭合的。闭合MultiCurve的边界总是 为空。 MultiCurve是拓扑闭合的
IsClosed():Integer 若该MultiCurve中每条Curve是闭合的[StartPoint()一EndPo (1,则返回1(TRUE)
Length():Double该MultiCurve的长度等于其所有Curve长度的总和
6.1.9MultiLineString
MultiLineString是元素为LineString的MultiCurve。 图3(a)、(b)、(c)中MultiLineString的边界分别是(sl,e2)、fsl,el)和0。
其中:s起始:e终止
图3MultiLineString示例——(a)简单的MultiLineString;(b)有2个元素的非简单 MultiLineString:(c)有2个元素的非简单,闭合的MultiLineString
6.1410 Surface
Surface是2维儿何对象。 一个简单Surface由与1个外边界,0到多个内边界相关的单个“斑块(Patch)”构成。在3维空间 中,简单Surface与平面是同构的。PolyhedralSurface(多面体曲面)由简单Surface沿着它们的边界 “缝合”而成;3维空间中的PolyhedralSurface总体上不可以是平坦的(见参考文献[1]的3.12.9.1、 .12.9.3)。 简单Surface的边界是由其内边界、外边界组成的闭合Curve的集合(见参考文献[1]的3.12.9.4)。 本部分定义了Surface唯一可实例化的子类Polygon它是简单的平坦 Surface,
Area():Double——在该Surface空间参照系内,测量的该Surface的面积。 Centroid():Point 以点的形式返回该Surface的数学质心。返回的结果并不一定在该 Surface上。 PointOnSurface().Point 返回一个在该Surface上的Point。
):Double——在该Surface空间参照系内,测量的该Surface的面积。 id():Point 一以点的形式返回该Surface的数学质心。返回的结果并不一定在该 e上。 OnSurface()Point 返回一个在该Surface上的Point
6.1.11Polygon
Polygon是由1个外边界,o到多个内边界定义的平坦Surface。每一个内边界定义了Polygon的 个洞。 Polygon的声明(定义为有效Polygon的规则)如下: a)Polygon是拓扑闭合的; b)Polygon的边界由一套描述其内、外边界的LinearRing组成; c)边界上的两个Ring不能相互跨越,且Polygon边界上的Ring仅能相切在一个Point上。例
如,VPolygon,Vcl2E.Boundaryl2EPointqEclqEc2→ ±c2]; d) Polygon不可以有切割线,边缘不可以有刺峰或刺孔。例如,PEPolygon,P=Closure(Interior (P)); e) 每个Polygon的内部是相连接的点的集合; D 有1或多个洞的Polygon的外部是不连通的。每个洞定义了外部的一个连接组分。 在上述声明中,内部、闭合和外部有了标准的拓扑定义。a)和c)的结合使Polygon成为一个规则的 闭合点集。 Polygon是简单几何对象。 图4示出Polygon的一些例子
图4Polygon示例 (a)有1个Ring的Polygon(b)有2个Ring的Polygon: (c)有3个Ring的 Polygon
6.1.11.2 方法
声明、不能用单个Polygon实例表示的几何对象
图5不能用单个Polygon实例表达的几何对象示例
ExteriorRing():LineString 返回该Polygon的外环。 NumlnteriorRing():Integer 返回该Polygon内环的数目。 InteriorRingN(N:Integer).LineString 以LineString的形式返回该Polygon的第N个 Ring.
6.1.12 MultiSurface
MultiSurface是其元索为Surface的2维GeometryCollection。MultiSurface中任意两个Surface 的内部不可以相交。MultiSurface中任意两个元素的边界可能最多相交在有限个Point上。 本部分的MultiSurface是不可实例化的类。它为其子类定义了一套方法,且包括可扩展的原因。 MultiSurface可实例化的子类是MultiPolygon,对应Polygon的集合
Area():Double—一在该MultiSurface空间参照系内,测量的该MultiSurface的面积。 Centroid()Point一 一以Point的形式返回该MultiSurface的数学质心。返回的结果并不一 定在该MultiSurface面上。 PointOnSurface()Point 返回在该MultiSurface上的一个Point
6.1.13MultiPolygon
6.1.14 关系算子
6.1.14.1 背景
不能用单个MultiPolygon实例所表示的几何对
图9Touches关系的示
图11 Within关系的示例一 (a)Polygon/Polygon;(b)Polygon/LineString (c)LineString/LineString;(d)Polygon/Point
图12Overlaps关系的示例一 (a)Polygon/LineString:(b)LineString/LineString
tains包含 a. Contains(b) 台 b. Within(a)
[ntersects 相图
6.2几何的WKT表示
每个儿何类型都有其WKT表示。该表示可用于构建该类型的新实例,也可将已有实例转换为以 字母数字表达的文本形式。
单”(tokens)重复0到多次:该大
《GeometryTaggedText): (Point Tagged Text) I(LineString Tagged Text) I (Polygon Tagged Text) I《MultiPoint Tagged Text) I《MultiLineString Tagged Text) I 《MultiPolygon Tagged Text) I(GeometryCollection Tagged Text) 《Point Tagged Text);" POINT (Point Text) 《LineString Tagged Text)" LINESTRING (LineString Text)
表2几何的WKT表示示例
6.3几何的WKB表示
几何的WKB表示(WKBGeometry)提供了一种几何对象连续字节流的便捷表示。它可以实现几 何对象在SQL/CLI客户端和SQL实现之间的二进制形式交换
数字类型的序列,然后将每个数字类型序列化为公认定义的、标准的、二进制表示数据类型(ND R)之一的字节序列。几何表示的二进制编码(NDR或XDR)方式用位于系列字节之前的一字节 述。两种Geometry编码的唯一不同的是字节顺序,XDR编码是大端的,而NDR编码是小端的
6.3.2.2数字(Numeric)类型的定义
UnsignedInteger是对[0,4294967295]范围内的非负整数进行编码的32位(4字节)数据类型。 Double是采用IEEE745[18双精度格式对双精度数进行编码的64位(8字节)双精度数据类型。 上述定义在XDR和NDR中是一样的
6.3.2.3数字类型的XDR(大端)编码
UnsignedInteger的XDR表示是大端的(最有效的字节在前)。 Double的XDR表示是大端的(符号位是第一字节)
63.2.4数字类型的NDR(小端)编码
JnsignedInteger的NDR表乐 Double的NDR表示是小端的(符号位是最后字节)
6.3.2.5WKBGeometry的NDR和XDR表示的转换
UnsignedInteger和Double的NDR和XDR数据类型间的转换较为简单,即将字节流中的无符 型和双精度型字节进行交换
槽钢标准6.3.2.6与其他COM和CORBA数据转换协议的关系
上述用于UnsignedInteger和Double数值的XDR表示也是CORBA外部服务规范15中用于外 部化对象的CORBA标准流格式的UnsignedInteger和Double数值的标准表示。 上述用于UnsigncdInteger和Double数值的NDR表示也是基于DEC、RPC和NDR[16]的 DCOM协议中UnsignedInteger和Double数值的标准表示
6.3.2.7WKBGeometry表示的描述
Geometry的WKB表示的基本结构单元是由两个Double数组成的Point的字节流。可以使用日 定义几何对象的字节流构建其他几何对象的字节流。 //基本类型定义 //byte:1字节 //uint32:32位无符号整数(4字节)
6.3.2.8几何的WKB表示的声明
格式(B=1)的具有两个LinearRing(NR=2)、每 有3个点(NP=3)的Polygon(T=3)的WKB表
Geometry的WKB表示设计用于几何类型实例。任何WKBGeometry实例应该满足它 何类型的声明(见6.1)。
5.4空间参照系的WKT表示
照明设计标准6.4空间参照系的WKT表示
....- 相关专题: 地理信息