做一事恒心 成一事辉煌

当前位置: 首页> 产品介绍> 恒辉空间数据库

HHGDB

恒辉空间数据库

一、产品概况

       目前,由于“关系型数据库+空间数据引擎”的技术方案访问迅速、与GIS联系紧密的优点,在应用中占有一定的优势,但空间数据引擎独立于数据库内核,难以充分利用关系型数据库中各种成熟的数据管理、访问技术,成为进一步发展的致命弱点。另外,难以支持扩展SQL,不易实现数据共享与互操作等问题也逐渐暴露出来。
       “恒辉信达有限公司”(简称为“恒辉”)为了适应时代的需求,结合多年数据库研发积累的经验,成功研发出具有完全自主知识产权的“恒辉空间数据库”(简称为“HHGDB”),从而让空间数据库和关系数据库完美结合,让企业在大数据时代抓住商机,展望未来。
       HHGDB是对象关系型数据库系统HHDB的一个扩展,遵循OpenGIS的规范。在HHGDB中,使用文本表达方法WKT(Well Known Text)和二进制表达方法WKB(Well Known Binary)表达不同的几何体类型,并由对象类型和构成对象的坐标两部分组成。HHGDB中基于OpenGIS的空间操作包括:字段处理函数、几何关系函数、几何分析函数和读写函数。除此之外,在OpenGIS基础上扩展的空间操作包括:空间索引创建、空间查询、网络地图服务、数据类型支持、量算函数、几何操作函数等扩展功能。除空间操作符之外,HHGDB提供了一系列用于检测空间对象关系的二元谓词(如Contains、Within、Overlaps),并返回布尔值来表征对象间符合关系。HHGDB依照OGC的Simple Features for SQL 1.1规范设计,同时,HHGDB也实现了ISO组织SQL Multi-media标准的绝大多数空间操作函数,并能够在SQL查询中实现常用的空间运算并获得返回结果。同时HHGDB支持空间聚集函数查询操作,以对某一属性列所有空间对象执行操作,如返回一系列要素的最大外包矩形框的聚集操作。


鼠标悬浮展示空间状态


二、技术指标

HHGDB支持的矢量空间数据类型:

· 点(POINT)
· 线(LINESTRING)
· 多边形(POLYGON)
· 多点(MULTI_POINT)
· 多线(MULTI_LINESTRING)
· 多边形集合(MULTI_POLYGON)
· 集合对象集(GEOMETRY_COLLECTION)


HHGDB支持的索引类型:

· B树索引主要用于顺序排列的一维数据,在存储空间数据的HHGDB上应用较少
· R树索引将数据分成矩形、子矩形、子子矩形,适用于为二维空间数据建立索引
· GiST索引是一种平衡,树状结构的访问方法,将数据划分成:一般数据、重叠数据和内部数据,并可在基础模版中实现多种索引模式。


几何对象关系函数:

· 获取两个几何对象间的距离:ST_Distance(geometry,geometry)
· 判断两个几何对象是否分离:ST_Disjoint(geometry,geometry)
· 判断两个几何对象是否相交:ST_Intersects(geometry,geometry)
· 判断两个几何对象的边缘是否接触:ST_Touches(geometry,geometry)
· 判断两个几何对象是否互相穿过:ST_Crosses(geometry,geometry)
· 判断A是否被B包含:ST_Within(geometry A,geometry B)
· 判断两个几何对象是否是重叠:ST_Overlaps(geometry,geometry)
· 判断A是否包含B:ST_Contains(geometry A,geometry B)
· 判断A是否覆盖B:ST_Covers(geometry A,geometry B)
· 判断A是否被B所覆盖:ST_CoveredBy(geometry A,geometry B)
· 通过DE-9IM矩阵判断两个几何对象的关系是否成立: ST_Relate(geometry,geometry,intersectionPatternMatrix)
· 获得两个几何对象的关系(DE-9IM矩阵):ST_Relate(geometry,geometry)


几何对象处理函数:

· 获取几何对象的中心:ST_Centroid(geometry)
· 面积量测:ST_Area(geometry)
· 长度量测:ST_Length(geometry)
· 返回曲面上的一个点:ST_PointOnSurface(geometry)
· 获取边界:ST_Boundary(geometry)
· 获取缓冲后的几何对象:ST_Buffer(geometry,double,)
· 获取多几何对象的外接对象:ST_ConvexHull(geometry)
· 获取两个几何对象相交的部分:ST_Intersection(geometry,geometry)
· 将经度小于0的值加360使所有经度值在0-360间:ST_Shift_Longitude(geometry)
· 获取两个几何对象不相交的部分(A、B可互换):ST_SymDifference(geometry A,geometry B)
· 从A去除和B相交的部分后返回:ST_Difference(geometry A,geometry B)
· 返回两个几何对象的合并结果:ST_Union(geometry,geometry)
· 返回一系列几何对象的合并结果:ST_Union(geometry set)


几何对象存取函数:

· 获取几何对象的WKT描述: ST_AsText(geometry)
· 获取几何对象的WKB描述: ST_AsBinary(geometry)
· 获取几何对象的空间参考ID: ST_SRID(geometry)
· 获取几何对象的维数: ST_Dimension(geometry)
· 获取几何对象的边界范围: ST_Envelope(geometry)
· 判断几何对象是否为空: ST_IsEmpty(geometry)
· 判断几何对象是否不包含特殊点(比如自相交): ST_IsSimple(geometry)
· 判断几何对象是否闭合: ST_IsClosed(geometry)
· 判断曲线是否闭合并且不包含特殊点: ST_IsRing(geometry)
· 获取多个几何对象中的对象个数: ST_NumGeometries(geometry)
· 获取多个几何对象中第N个对象: ST_GeometryN(geometry,int)
· 获取几何对象中的点个数: ST_NumPoints(geometry)
· 获取几何对象的第N个点: ST_PointN(geometry,integer)
· 获取多边形的外边缘: ST_ExteriorRing(geometry)
· 获取多边形内边界个数: ST_NumInteriorRings(geometry)
· 获取多边形的第N个内边界:ST_InteriorRingN(geometry,integer)
· 获取线的终点:ST_EndPoint(geometry)
· 获取线的起始点:ST_StartPoint(geometry)
· 获取几何对象的类型:GeometryType(geometry)
· 获取点的X坐标:ST_X(geometry)
· 获取点的Y坐标:ST_Y(geometry)
· 获取点的Z坐标:ST_Z(geometry)
· 获取点的M值:ST_M(geometry)


量算函数:

· 量测面积函数:ST_Area()
· 量测2D对象长度函数:ST_length2d()
· 量测3D对象长度函数:ST_length3d()
· 量测两个对象间距离函数:ST_distance()
· 量测两条线之间的最大距离函数:ST_max_distance()
· 量测2D对象的周长函数:ST_perimeter()、ST_perimeter2d()
· 量测3D对象的周长函数:ST_perimeter3d()
· 量测两点构成的方位角,单位弧度函数:ST_azimuth()


几何操作函数:

· 几何对象类型转换函:ST_Force_collection()、ST_Force_2d()、ST_Force_3dz()、ST_Force_3d()、ST_Force_3dm()、 ST_Force_4d()、ST_Multi()
· 将几何对象转化到指定空间参考函数:ST_Transform()
· 对3D几何对象作仿射变化函数:ST_Affine()
· 对2D几何对象作仿射变化函数:ST_Affine()
· 对几何对象作偏移函数:ST_Translate()
· 对几何对象作缩放函数:ST_Scale()
· 对3D几何对象作旋转函数:ST_RotateZ()、ST_RotateX()、ST_RotateY()
· 对2D对象作偏移和缩放函数:ST_TransScale()
· 反转函数:ST_Reverse()
· 使用Douglas-Peuker算法函数:ST_Simplify()、ST_SimplifyPreserveTopology()
· 将几何对象顶点捕捉到网格函数:ST_SnapToGrid()、ST_SnapToGrid()、ST_SnapToGrid()
· 指定原点坐标函数:ST_SnapToGrid()
· 分段函数:ST_Segmentize()
· 合并为线函数:ST_LineMerge()