发布日期:2025-01-04 13:58 点击次数:161
ST_Geometry 数据类型遵循用户定义数据类型 (UDT) 的 SQL 3 规范,用于创建可存储空间数据(如地标、街道或土地宗地的位置)的列。该数据类型可通过符合国际标准化组织 (ISO) 和开放地理空间联盟 (OGC) 标准的结构化查询语言 (SQL) 来访问地理数据库和数据库。通过向表示地理要素的对象(点、线及面)提供存储空间,此存储类型扩展了数据库的功能。此存储类型旨在充分利用数据库资源;与数据库要素(如复制与分区)兼容;以及快速访问空间数据。ST_Geometry 本身是抽象的、无法实例化的超类。但其子类可以实例化。实例化的数据类型是可定义为表列的数据类型,并且其类型值插入表列之中。虽然可以将列定义为类型 ST_Geometry,但是您无法将 ST_Geometry 值插入此列,因为无法对 ST_Geometry 进行实例化。相反,您可以插入子类值。下图说明了 ST_Geometry 数据类型及其子类的等级。ST_Geometry 超类及其子类子类ST_Geometry 的子类分为两类:基础几何子类和同类集合子类。基础几何包括 ST_Point、ST_LineString 和 ST_Polygon,而同类集合包括 ST_MultiPoint、ST_MultiLineString 和 ST_MultiPolygon。与名称的含义一致,同类集合是基础几何的集合。除了共享基础几何属性之外,同类集合还具有某些自身的属性。每个子类都存储其名称所指的几何类型;例如,ST_MultiPoint 存储多点。下表是子类及其说明的列表:子类型描述ST_Point 在坐标空间中占据单个位置的零维度几何 有单个 x,y 坐标值,始终简单,并且有 NULL 边界
ST_LineString 一维对象,作为一串定义线性插值路径的点来存储 ST_LineString 具有长度。如果 ST_LineString 不与其内部相交,则 ST_LineString 很简单。 闭合的 ST_LineString 的端点(边界)占据空间中的相同点。 如果 ST_LineString 是闭合的并且是简单的,那么它是一个环。 端点通常形成 ST_LineString 的边界,除非 ST_LineString 是闭合的(在这种情况下边界为空)。 ST_LineString 的内部是位于端点间的连接路径,ST_LineString 闭合的情况除外,这种情况下内部是连续的。
ST_Polygon 作为点序列存储的二维表面,定义该表面的外部边界环以及零或零以上的内部环 ST_Polygon 具有面积并且始终是简单的。外部环和任意内部环确定了 ST_Polygon 的边界,环之间的封闭空间确定了 ST_Polygon 的内部。 ST_Polygon 的环可以在切点相交,但绝不可以交叉。
ST_MultiPoint ST_Point 的集合 有 0 维 如果 ST_MultiPoint 的元素占据的坐标空间互不相同,则 ST_MultiPoint 就是简单的。ST_MultiPoint 的边界为空。
ST_MultiLineString ST_LineStrings 的集合 ST_MultiLineStrings 具有长度。如果 ST_MultiLineString 只在 ST_LineString 元素的端点相交,则它是简单的。 如果 ST_LineString 元素的内部相交,则 ST_MultiLineString 是非简单的。 ST_MultiLineString 的边界是 ST_LineString 元素的非相交端点。 如果 ST_MultiLineString 的所有 ST_LineString 元素均为闭合的,则它也为闭合的。 如果 ST_MultiLineString 的所有元素的所有端点都相交,则它的边界为空。
ST_MultiPolygon 面的集合 ST_MultiPolygons 具有面积。ST_MultiPolygon 的边界是其元素外部环和内部环的累积长度。 ST_MultiPolygon 的内部被定义为其 ST_Polygon 元素的累积内部。 ST_MultiPolygon 的元素的边界只能在切点相交。
ST_Geometry 子类型请注意每个子类都继承 ST_Geometry 的属性,但超类还有其本身的属性。适用于 ST_Geometry 数据类型的函数可接受任何子类实体类型。不过,有些函数定义在子类级别,且仅接受特定的子类。例如,ST_GeometryN 函数仅将 ST_MultiLinestring、ST_MultiPoint 或 ST_MultiPolygon 子类型值作为输入。要搜索 ST_Geometry 的子类,可使用 ST_GeometryType 函数。ST_GeometryType 函数获取 ST_Geometry 并返回字符串形式的实例化子类。要查找包含在同类集合中基础几何元素的数量,可使用 ST_NumGeometries 函数,该函数获取同类集合并返回其包含的基础几何元素的数目。相关主题如何实现 ST_Geometry?