Geospatial Toolkit 函数

使用 Geospatial Toolkit 提供的函数可处理空间数据以及建立索引。

表 1. 用于任意几何体类型的函数
函数 输入 输出 描述
ST_Area 任意1 Double 返回多边形的面积;对于任何其他几何体,返回 0.0。
ST_AsBinary 任意1 Binary 将对象导出为熟知二进制 (WKB) 表示。
ST_AsText 任意1 String 将对象导出为熟知文本 (WKT) 表示。
ST_Boundary 任意1 ST_Geometry 返回几何体的边界。
ST_Buffer 任意1,Double ST_Geometry 返回一个几何体,表示与输入几何体对象的距离小于或等于指定距离的所有点。计算将在此几何体对象的空间参考系中进行。由于线性插值的限制,此距离通常有相对较小的误差,但它应该接近于所用坐标的分辨率。
ST_ContainingGeohash 任意1,Double String 返回覆盖指定几何体的单个地理位置散列,并按指定的距离精度缓冲。请注意,这可能会产生比 ST_GeohashEncodeDistance 更宽松的覆盖。
ST_Contains 任意1,任意1 Boolean 如果第二个几何体完全包含在第一个几何体中,那么返回 TRUE。
ST_Crosses 任意1,任意1 Boolean 如果两个指定的几何体彼此相交,即符合下列条件,那么返回 TRUE:
  • 它们的相交产生一个几何体,其维数比两个源几何体的最大维数小 1。
  • 交集位于两个源几何体内部。
ST_Difference 任意1,任意1 ST_Geometry 返回一个几何体对象,它表示两个指定几何体对象的点差集。
ST_Dimension 任意1 Integer 返回输入几何体的固有维数,该维数必须小于或等于坐标维数。在非齐次集合中,这将返回所含对象的最大拓扑维数。
ST_Disjoint 任意1,任意1 Boolean 如果两个指定的几何体不相交,即,它们彼此间没有交集,那么返回 TRUE。
ST_Distance 任意1,任意1 Double 返回两个几何体中的任意两点之间的最短距离(在其空间参考系中计算)。由于几何体是闭合的,因此可以在每个几何体对象上找到一个点,使得这两个点之间的距离就是在这两个几何体之间返回的距离。
ST_Envelope 任意1 ST_BoundingBox 返回输入几何体的最小边界框。
EnvelopesIntersect 任意1,Double,Double,Double,Double Boolean 确定所指定几何体的包络是否与指定的包络或边界框相交。包络或边界框由其下角(由第二个和第三个参数指定的经度和纬度)和上角(由第四个和第五个参数指定的经度和纬度)确定。
ST_Equals 任意1,任意1 Boolean 如果两个指定的几何体相等,即,如果它们的 X 坐标和 Y 坐标都匹配,那么返回 TRUE。
ST_GeohashEncode 任意1,Integer String[] 返回一个集合,其中包含覆盖指定几何体的地理散列(不超过 6 个)。如果该几何体可以被位深大于指定位深的地理散列所覆盖,那么这些地理散列将截断为该位深。点几何体始终生成单个地理散列。
ST_GeohashEncodeDistance 任意1,Double String[] 返回一个集合,其中包含覆盖(按指定的距离精度缓冲)指定几何体的地理散列(不超过 6 个)。
ST_GeoJSONFromGeom 任意1 String 将 SQL 几何体转换为 GeoJSON 字符串。
ST_GeomCollection 任意1[] ST_GeomCollection 几何体集合的构造函数。
ST_GeometryType 任意1 String 以字符串形式返回几何体的可实例化子类型名称,此对象是该子类型的可实例化成员。
ST_Intersection 任意1,任意1 ST_Geometry 返回一个几何体对象,它表示两个指定几何体对象的点交集。
ST_Intersects 任意1,任意1 Boolean 如果两个指定的几何体彼此相交,那么返回 TRUE。
ST_IntersectsInterior 任意1,任意1 Boolean 如果第一个几何体与第二个几何体的内部相交,那么返回 TRUE。
ST_IsDegenerate 任意1 Boolean 如果指定的几何体退化成一个点,那么返回 TRUE。
ST_IsEmpty 任意1 Boolean 如果指定的几何体是空几何体(即,该几何体表示坐标空间的空点集 ∅),那么返回 TRUE。
ST_IsMeasured 任意1 Boolean 如果指定的几何体具有测量 (M) 坐标值,那么返回 TRUE。因为此数据库不支持 M 值,所以此函数始终返回 FALSE。
ST_IsSimple 任意1 Boolean 如果指定的几何体没有不规则几何点(例如自交或自切),那么返回 TRUE。每个可实例化几何类的描述都包括特定的条件,符合这些条件的类实例即归类为非简单实例。
ST_IsValid 任意1 Boolean 如果指定的几何体有效,那么返回 TRUE。
ST_Is3D 任意1 Boolean 如果指定的几何体具有 Z 坐标值,那么返回 TRUE。因为此数据库不支持 Z 值,所以此函数始终返回 FALSE。
ST_Overlaps 任意1,任意1 Boolean 如果两个指定的几何体重叠,即,它们的交集产生一个与它们都不同但维数相同的几何体,那么返回 TRUE。
ST_SRID 任意1 Integer 返回此对象的空间参考系标识。缺省标识为 4326 -- WGS84
ST_SymDifference 任意1,任意1 ST_Geometry 返回一个几何体对象,它表示两个指定几何体对象的点对称差集。
ST_Touches 任意1,任意1 Boolean 如果两个指定的几何体彼此接触,即,它们的边界相交,或者一个几何体的内部与另一个几何体的边界相交,那么返回 TRUE。
ST_Within 任意1,任意1 Boolean 如果第一个几何体完全包含在第二个几何体中,那么返回 TRUE。
ST_Union 任意1,任意1 ST_Geometry 返回一个几何体对象,它表示两个指定几何体对象的点并集。
1 输入几何体类型可以是此处列出的任何类型。
表 2. 用于点的函数
SQL 函数 输入 输出 描述
ST_Azimuth ST_Point,ST_Point Double 返回球状体上的方位角,以弧度计,并且是以正北方为标准,从垂直方向上的第一点到第二点顺时针测量。
ST_DestinationPoint ST_Point,Double,Double ST_Point 返回球状体上的一个点,该点与指定的起始点(第一个参数)之间存在指定的方位角(第二个参数)和距离(第三个参数)。
ST_GeodesicAzimuth ST_Point,ST_Point Double 返回椭圆体上的方位角,以弧度计,并且是以正北方为标准,从垂直方向上的第一点到第二点顺时针测量。
ST_GeodesicDestinationPoint ST_Point,Double,Double ST_Point 返回椭圆体上的一个点,该点与指定的起始点(第一个参数)之间存在指定的方位角(第二个参数)和距离(第三个参数)。
ST_Point Double,Double ST_Point 返回具有指定的经度和纬度值(以度数计)的点。坐标系必须是椭球坐标系;缺省值为 WGS84。
ST_X ST_Point Double 返回所指定点的 X 坐标(经度)。
ST_Y ST_Point Double 返回所指定点的 Y 坐标(纬度)。
表 3. 用于曲线的函数
SQL 函数 输入 输出 描述
ST_EndPoint ST_Curve ST_Point 返回所指定曲线的结束点。
ST_Length ST_Curve Double 返回所指定曲线的长度。
ST_StartPoint ST_Curve ST_Point 返回所指定曲线的开始点。
表 4. 用于线串的函数
SQL 函数 输入 输出 描述
ST_LineString ST_Point[] ST_LineString 返回根据指定的点数组构造的线串。
ST_NumPoints ST_LineString Integer 返回所指定线串中的点数。
ST_PointN ST_LineString ST_Point 返回所指定线串中的第 N 个点。
表 5. 用于多边形和边界框的函数
SQL 函数 输入 输出 描述
ST_BoundingBox Double,Double,Double,Double ST_BoundingBox 返回具有指定的西南经度、西南纬度、东北经度和东北纬度的 SQL 几何体边界框。
ST_BoundingBoxCenter ST_BoundingBox ST_Point 返回所指定边界框的中心。
ST_ExteriorRing ST_Polygon 或 ST_BoundingBox ST_LineString 返回所指定多边形或边界框的外环。
ST_InteriorRingN ST_Polygon 或 ST_BoundingBox ST_LineString 返回所指定多边形或边界框的第 N 个内环。
ST_InteriorRings ST_Polygon 或 ST_BoundingBox ST_LineString[] 返回所指定多边形或边界框的内环数组。
ST_NorthEastCorner ST_BoundingBox ST_Point 返回所指定边界框的东北角。
ST_NumInteriorRing ST_Polygon 或 ST_BoundingBox Integer 返回所指定多边形或边界框的内环数。
ST_PointOnSurface ST_Polygon 或 ST_BoundingBox ST_Point 返回所指定多边形或边界框上的点。
ST_SouthWestCorner ST_BoundingBox ST_Point 返回所指定边界框的西南角。
表 6. 用于几何体集合的函数
SQL 函数 输入 输出 描述
ST_GeometryN ST_GeomCollection ST_Geometry 返回所指定集合中的第 N 个几何体。
ST_NumGeometries ST_GeomCollection Integer 返回所指定集合中的几何体数。
表 7. 用于非几何体数据类型的函数
SQL 函数 输入 输出 描述
ST_GeohashDecode Varchar ST_Geometry 将指定为二进制数字字符串的地理位置散列解码为边界框(如果地理散列的位深小于或等于 63)或一个点(反之)。例如,字符串 '110010110' 将解码为具有以下坐标的边界框:
67.5 11.25, 78.74999999999999 22.499999999999996
ST_GeoJSONToSQL Varchar ST_Geometry 将 GeoJSON 字符串转换为 SQL 几何体。
ST_RangeDiff Bigint,Bigint,Bigint,Bigint Bigint 返回两个时间范围之间的重叠(以毫秒计)。第一个时间范围由前两个输入参数的值确定;第二个时间范围由后两个输入参数的值确定。每个输入参数都是从 UNIX 戳记(1970 年 1 月 1 日)开始计算的毫秒数。例如,时间戳记 2007-02-14 12:15:06.123 相当于 1171451706123 毫秒。在每个时间范围内,第一个参数(开始时间)必须小于第二个参数(结束时间)。
ST_TimeShift Bigint,Bigint Bigint 返回通过将输入时间(第一个参数)与时移(第二个参数,以毫秒计)相加计算所得的时间。输入时间是从 UNIX 戳记(1970 年 1 月 1 日)开始计算的毫秒数。例如,时间戳记 2007-02-14 12:15:06.123 相当于 1171451706123 毫秒。时移可以为负,在这种情况下,输出时间将早于输入时间。
ST_WKBToSQL Binary ST_Geometry 将几何体的熟知二进制 (WKB) 表示转换为几何体对象。
ST_WKTToSQL Varchar ST_Geometry 根据包含几何体熟知文本 (WKT) 表示的输入字符串构造几何体对象。