空间几何函数

本文介绍空间几何函数的基本语法及示例。

空间几何概念

以ST_前缀开头的空间几何函数支持SQL/MM标准并符合开放地理空间联盟 (OGC) 的OpenGIS规范。空间几何函数使用Well-Known Text(WKT)格式描述空间几何体(例如点、线段、多边形等),详细说明如下表所示。

空间几何体

Well-Known Text(WKT)格式

POINT (0 0)

线段

LINESTRING (0 0, 1 1, 1 2)

多边形

POLYGON((0 0, 4 0, 4 4, 0 4, 0 0), (1 1, 2 1, 2 2, 1 2, 1 1))

多点

MULTIPOINT(0 0, 1 2)

多线段

MULTILINESTRING((0 0, 1 1, 1 2), (2 3, 3 2, 5 4))

多个多边形

MULTIPOLYGON(((0 0, 4 0, 4 4, 0 4, 0 0), (1 1, 2 1, 2 2, 1 2, 1 1)), ((-1 -1, -1 -2, -2 -2, -2 -1, -1 -1)))

空间几何体集合

GEOMETRYCOLLECTION(POINT(2 3), LINESTRING(2 3, 3 4))

函数列表

分类

函数名称

语法

说明

支持SQL

支持SPL

构造空间实体

ST_AsText函数

ST_AsText(x)

将一个空间几何体转变为WKT格式的文本。

×

ST_GeometryFromText函数

ST_GeometryFromText(x)

根据输入的WKT文本构造一个空间几何体。

×

ST_LineFromText函数

ST_LineFromText(x)

根据输入的WKT文本构造一条线段。

×

ST_Polygon函数

ST_Polygon(x)

根据输入的WKT文本构造一个多边形。

×

ST_Point函数

ST_Point(x, y)

根据输入的WKT文本构造一个点。

×

运算符

ST_Boundary函数

ST_Boundary(x)

返回空间几何体的边界。

×

ST_Buffer函数

ST_Buffer(x, distance)

返回距离指定空间几何体一定距离的空间几何体。

×

ST_Difference函数

ST_Difference(x, y)

返回两个空间几何体不同点的集合。

×

ST_Envelope函数

ST_Envelope(x)

返回空间几何体的最小边界框。

×

ST_ExteriorRing函数

ST_ExteriorRing(x)

返回空间几何体的外环(线段形式)。

×

ST_Intersection函数

ST_Intersection(x, y)

返回两个空间几何体的交集点。

×

ST_SymDifference函数

ST_SymDifference(x, y)

返回两个空间几何体的不同点,然后组成一个新的空间几何体。

×

空间关系判断

ST_Contains函数

ST_Contains(x, y)

判断第一个空间几何体是否包含第二个空间几何体(边界可存在交集)。如果包含,则返回true。

×

ST_Crosses函数

ST_Crosses(x, y)

判断两个空间几何体是否存在相同的内部点。如果存在,则返回true。

×

ST_Disjoint函数

ST_Disjoint(x, y)

判断两个空间几何体是否没有任何交集。 如果没有,则返回true。

×

ST_Equals函数

ST_Equals(x, y)

判断两个空间几何体是否完全相同。如果是,则返回true。

×

ST_Intersects函数

ST_Intersects(x, y)

判断两个空间几何体的平面投影是否存在共同点。如果是,则返回true。

×

ST_Overlaps函数

ST_Overlaps(x, y)

判断两个空间几何体的维度是否相同。如果两个空间几何体的维度相同且不是包含关系,则返回true。

×

ST_Relate函数

ST_Relate(x, y, patternMatrix string)

判断两个空间几何体是否相关。如果是,则返回true。

×

ST_Touches函数

ST_Touches(x, y)

判断两个空间几何体是否只有边界存在关联,没有共同的内部点。如果是,则返回true。

×

ST_Within函数

ST_Within(x, y)

判断第一个空间几何体是否完全在第二个空间几何体内部(边界无交集)。如果是,则返回true。

×

Accessors

ST_Area函数

ST_Area(x)

使用欧几里得测量法计算空间几何体在二维平面上的投影面积。

×

ST_Centroid函数

ST_Centroid(x)

返回空间几何实体的中心点。

×

ST_CoordDim函数

ST_CoordDim(x)

返回空间几何体的坐标维度。

×

ST_Dimension函数

ST_Dimension(x)

返回空间几何实体的固有维度,必须小于或等于坐标维度。

×

ST_Distance函数

ST_Distance(x, y)

计算两个空间几何体之间的最小距离。

×

ST_EndPoint函数

ST_EndPoint(x)

返回线段中的最后一个点。

×

ST_IsClosed函数

ST_IsClosed(x)

判断输入的空间几何体是否封闭。如果是,则返回true。

×

ST_IsEmpty函数

ST_IsEmpty(x)

判断输入的空间几何体是否为空。如果是,则返回true。

×

ST_IsRing函数

ST_IsRing(x)

判断输入的空间几何体是否为闭合的简单线段(环)。如果是,则返回true。

×

ST_Length函数

ST_Length(x)

使用欧几里得测量法计算线段的二维投影长度。如果存在多条线段,则返回所有线段的长度之和。

×

ST_NumPoints函数

ST_NumPoints(x)

返回空间几何体中点的个数。

×

ST_NumInteriorRing函数

ST_NumInteriorRing(x)

计算空间几何体中内部环的数量。

×

ST_StartPoint函数

ST_StartPoint(x)

返回线段中的第一个点。

×

ST_X函数

ST_X(x)

返回输入点的第一个X轴坐标。

×

ST_XMax函数

ST_XMax(x)

返回空间几何体的第一个最大的X轴坐标。

×

ST_XMin函数

ST_XMin(x)

返回空间几何体的第一个最小的X轴坐标。

×

ST_Y函数

ST_Y(x)

返回输入点的第一个Y轴坐标。

×

ST_YMax函数

ST_YMax(x)

返回空间几何体的第一个最大的Y轴坐标。

×

ST_YMin函数

ST_YMin(x)

返回几何体的第一个最小的Y轴坐标。

×

Bing图块

bing_tile函数

bing_tile(x, y, zoom_level)

通过X坐标、Y坐标和缩放级别构造一个Bing图块。

×

bing_tile(quadKey)

通过四叉树键构造一个Bing图块。

×

bing_tile_at函数

bing_tile_at(x, y, zoom_level)

通过经纬度和缩放级别构造一个Bing图块。

×

bing_tile_coordinates函数

bing_tile_coordinates(x)

返回目标Bing图块对应的X坐标和Y坐标。

×

bing_tile_polygon函数

bing_tile_polygon(x)

返回目标Bing图块的多边形格式。

×

bing_tile_quadkey函数

bing_tile_quadkey(x)

返回目标Bing图块的四叉树键。

×

bing_tile_zoom_level函数

bing_tile_zoom_level(x)

返回目标Bing图块的缩放级别。

×

ST_AsText函数

ST_AsText函数用于将一个空间几何体转变成WKT文本。

语法

ST_AsText(x)

参数说明

参数

说明

x

参数值为geometry类型。

返回值类型

varchar类型。

示例

将一个点转变成WKT格式的文本。

  • 查询和分析语句

    * | SELECT ST_AsText(ST_Point(1,1))
  • 查询和分析结果ST_AsText

ST_GeometryFromText函数

ST_GeometryFromText函数会根据您输入的WKT文本构造一个空间几何体。

语法

ST_GeometryFromText(x)

参数说明

参数

说明

x

参数值为varchar类型。

返回值类型

geometry类型。

示例

构造多个多边形。

  • 查询和分析语句

    * | SELECT ST_GeometryFromText('multipolygon(((10 10,10 20,20 20,20 15,10 10), (50 40,50 50,60 50,60 40,50 40)))')
  • 查询和分析结果ST_GeometryFromText

ST_LineFromText函数

ST_LineFromText函数会根据您输入的WKT文本构造一条线段。

语法

ST_LineFromText(x)

参数说明

参数

说明

x

参数值为varchar类型。

返回值类型

linestring类型。

示例

构造一条线段。

  • 查询和分析语句

    * | SELECT ST_LineFromText('linestring(10 10,20 20)')
  • 查询和分析结果ST_LineFromText

ST_Polygon函数

ST_Polygon函数会根据您输入的WKT文本构造一个多边形。

语法

ST_Polygon(x)

参数说明

参数

说明

x

参数值为varchar类型。

返回值类型

polygon类型。

示例

构造一个多边形。

  • 查询和分析语句

    * | SELECT ST_Polygon('polygon((10 10,10 20,20 20,20 15,10 10))')
  • 查询和分析结果ST_Polygon

ST_Point函数

ST_Point函数会根据您输入的WKT文本构造一个点。

语法

ST_Point(x, y)

参数说明

参数

说明

x

参数值为geometry类型。

y

参数值为geometry类型。

返回值类型

point类型。

示例

构造一个点。

  • 查询和分析语句

    * | SELECT ST_Point(0,0)
  • 查询和分析结果ST_Point

ST_Boundary函数

ST_Boundary函数用于返回空间几何体的边界。

  • 点的边界为空,即返回POINT EMPTY。

  • 线段的边界由线段的端点组成。

  • 多边形的边界由构成多边形的外环及其所有内环的线段组成。

语法

ST_Boundary(x)

参数说明

参数

说明

x

参数值为geography类型。

返回值类型

geography类型。

示例

使用ST_Polygon函数构造一个多边形,然后使用ST_Boundary返回多边形的边界。

  • 查询和分析语句

    * | SELECT  ST_Boundary(ST_Polygon('polygon((10 10,10 20,20 20,20 15,10 10))'))
  • 查询和分析结果ST_Boundary

ST_Buffer函数

ST_Buffer函数用于返回距离指定空间几何体一定距离的空间几何体。

语法

ST_Buffer(x, distance)

参数说明

参数

说明

x

参数值为geometry类型。

distance

距离。

返回值类型

geometry类型。

示例

使用ST_Point函数构造一个点,然后使用ST_Buffer函数返回距离该点一定距离的多边形。

  • 查询和分析语句

    * | SELECT ST_Buffer(ST_Point(1,1),1)
  • 查询和分析结果ST_Buffer

ST_Difference函数

ST_Difference函数用于返回两个空间几何体不同点的集合。

语法

ST_Difference(x, y)

参数说明

参数

说明

x

参数值为geometry类型。

y

参数值为geometry类型。

返回值类型

geometry类型。

示例

使用ST_GeometryFromText函数构造两个空间几何体,然后使用ST_Difference函数返回两个空间几何体不同点的集合。

  • 查询和分析语句

    * |
    SELECT
      ST_Difference(
        ST_GeometryFromText(
          'multipolygon (((10 10,10 20,20 20,0 15,0 10), (50 40,50 50,60 50,60 40,50 40)))'
        ),
        ST_GeometryFromText(
          'multipolygon (((10 10,10 20,20 20,20 15,10 10), (50 40,50 50,60 50,60 40,50 50)))'
        )
      ) AS "Difference"
  • 查询和分析结果ST_Difference

ST_Envelope函数

ST_Envelope函数用于返回空间几何体的最小边界框。

语法

ST_Envelope(x)

参数说明

参数

说明

x

参数值为geometry类型。

返回值类型

geometry类型。

示例

使用ST_GeometryFromText函数构造一个空间几何体,然后使用ST_Envelope函数返回该空间几何体的最小边界框。

  • 查询和分析语句

    * |
    SELECT
      ST_Envelope(
        ST_GeometryFromText(
          'multipolygon (((10 10,10 20,20 20,20 15,10 10), (50 40,50 50,60 50,60 40,50 40)))'
        )
      ) 
  • 查询和分析结果ST_Envelope

ST_ExteriorRing函数

ST_ExteriorRing函数用于返回空间几何体的外环(线段形式)。

语法

ST_ExteriorRing(x)

参数说明

参数

说明

x

参数值为geometry类型。

返回值类型

geometry类型。

示例

使用ST_GeometryFromText函数构造一个空间几何体,然后使用ST_ExteriorRing函数返回该空间几何体的外环。

  • 查询和分析语句

    * |
    SELECT
      ST_ExteriorRing(
        ST_GeometryFromText(
          'multipolygon (((10 10,10 20,20 20,20 15,10 10), (50 40,50 50,60 50,60 40,50 40)))'
        )
      )
  • 查询和分析结果ST_ExteriorRing

ST_Intersection函数

ST_Intersection函数用于返回两个空间几何体的交集点。

语法

ST_Intersection(x, y)

参数说明

参数

说明

x

参数值为geometry类型。

y

参数值为geometry类型。

返回值类型

geometry类型。

示例

使用ST_GeometryFromText函数构造两个空间几何体,然后使用ST_Intersection函数返回两个空间几何体的交集点。

  • 查询和分析语句

    * |
    SELECT
      ST_Intersection(
        ST_GeometryFromText(
          'multipolygon (((10 10,10 20,20 20,20 15,10 10), (50 40,50 50,60 50,60 40,50 40)))'
        ),
        ST_GeometryFromText(
          'multipolygon (((10 10,10 20,20 20,20 15,10 10), (50 40,50 50,60 50,60 40,50 50)))'
        )
      ) 
  • 查询和分析结果ST_Intersection

ST_SymDifference函数

ST_SymDifference函数用于返回两个空间几何体的不同点,然后组成一个新的空间几何体。

语法

ST_SymDifference(x, y)

参数说明

参数

说明

x

参数值为geometry类型。

y

参数值为geometry类型。

返回值类型

geometry类型。

示例

使用ST_GeometryFromText函数构造两个空间几何体,然后使用ST_SymDifference函数返回两个空间几何体的不同点,组成一个新的空间几何体。

  • 查询和分析语句

    * |
    SELECT
      ST_SymDifference(
        ST_GeometryFromText(
          'multipolygon (((10 10,10 20,20 20,20 15,10 10), (50 40,50 50,60 50,60 40,50 40)))'
        ),
        ST_GeometryFromText(
          'multipolygon (((10 10,10 20,20 20,20 15,10 10), (50 40,50 50,60 50,60 40,50 50)))'
        )
      )
  • 查询和分析结果ST_SymDifference

ST_Contains函数

ST_Contains函数用于判断第一个空间几何体是否包含第二个空间几何体(边界可存在交集)。如果包含,则返回true。

语法

ST_Contains(x, y)

参数说明

参数

说明

x

参数值为geometry类型。

y

参数值为geometry类型。

返回值类型

boolean类型。

示例

使用ST_GeometryFromText函数构造两个空间几何体,然后使用ST_Contains函数判断第一个空间几何体是否包含第二个空间几何体(边界可存在交集)。

  • 查询和分析语句

    * |
    SELECT
      ST_Contains(
        ST_GeometryFromText(
          'polygon((10 10,10 20,20 20,20 15,10 10))'
        ),
        ST_GeometryFromText(
          'point(11 11)'
        )
      )
  • 查询和分析结果 ST_Contains

ST_Crosses函数

ST_Crosses函数用于判断两个空间几何体是否存在相同的内部点。如果存在,则返回true。

语法

ST_Crosses(x, y)

参数说明

参数

说明

x

参数值为geometry类型。

y

参数值为geometry类型。

返回值类型

boolean类型。

示例

使用ST_GeometryFromText函数构造两个空间几何体,然后使用ST_Crosses函数判断两个空间几何体是否存在相同的内部点。

  • 查询和分析语句

    * |
    SELECT
      ST_Crosses(
        ST_GeometryFromText(
          'multipolygon (((10 10, 10 20, 20 20, 20 15 , 10 10), (50 40, 50 50, 60 50, 60 40, 50 40)))'
        ),
        ST_GeometryFromText(
          'multipolygon (((10 10, 10 20, 20 20, 20 15 , 10 10), (50 40, 50 50, 60 50, 60 40, 50 50)))'
        )
      )
  • 查询和分析结果ST_Crosses

ST_Disjoint函数

ST_Disjoint函数用于判断两个空间几何体是否没有任何交集。 如果没有,则返回true。

语法

ST_Disjoint(x, y)

参数说明

参数

说明

x

参数值为geometry类型。

y

参数值为geometry类型。

返回值类型

boolean类型。

示例

使用ST_GeometryFromText函数构造两个空间几何体,然后使用ST_Disjoint函数判断两个空间几何体是否存在交集。

  • 查询和分析语句

    * |
    SELECT
       ST_Disjoint(
        ST_GeometryFromText(
          'multipolygon (((10 10,10 20,20 20,20 15,10 10), (50 40,50 50,60 50,60 40,50 40)))'
        ),
        ST_GeometryFromText(
          'multipolygon (((10 10,10 20,20 20,20 15,10 10), (50 40,50 50,60 50,60 40,50 50)))'
        )
      )
  • 查询和分析结果ST_Crosses

ST_Equals函数

ST_Equals函数用于判断两个空间几何体是否完全相同。如果是,则返回true。

语法

ST_Equals(x, y)

参数说明

参数

说明

x

参数值为geometry类型。

y

参数值为geometry类型。

返回值类型

boolean类型。

示例

使用ST_GeometryFromText函数构造两个空间几何体,然后使用ST_Equals函数判断两个空间几何体是否完全相同。

  • 查询和分析语句

    * |
    SELECT
       ST_Equals(
        ST_GeometryFromText(
          'multipolygon(((10 10,10 20,20 20,20 15,10 10),(50 40,50 50,60 50,60 40,50 40)))'
        ),
        ST_GeometryFromText(
          'multipolygon(((10 10,10 20,20 20,20 15,10 10),(50 40,50 50,60 50,60 40,50 50)))'
        )
      )
  • 查询和分析结果ST_Crosses

ST_Intersects函数

ST_Intersects函数用于判断两个空间几何体的平面投影是否存在共同点。如果是,则返回true。

语法

ST_Intersects(x, y)

参数说明

参数

说明

x

参数值为geometry类型。

y

参数值为geometry类型。

返回值类型

boolean类型。

示例

使用ST_GeometryFromText函数构造两个空间几何体,然后使用ST_Intersects函数判断两个空间几何体的平面投影是否存在共同点。

  • 查询和分析语句

    * |
    SELECT
       ST_Intersects(
        ST_GeometryFromText(
          'multipolygon (((10 10,10 20,20 20,20 15,10 10), (50 40,50 50,60 50,60 40,50 40)))'
        ),
        ST_GeometryFromText(
          'multipolygon (((10 10,10 20,20 20,20 15,10 10), (50 40,50 50,60 50,60 40,50 50)))'
        )
      )
  • 查询和分析结果 ST_Contains

ST_Overlaps函数

ST_Overlaps函数用于判断两个空间几何体的维度是否相同。如果两个空间几何体的维度相同且不是包含关系,则返回true。

语法

ST_Overlaps(x, y)

参数说明

参数

说明

x

参数值为geometry类型。

y

参数值为geometry类型。

返回值类型

boolean类型。

示例

使用ST_GeometryFromText函数构造两个空间几何体,然后使用ST_Overlaps函数判断两个空间几何体的维度是否相同。

  • 查询和分析语句

    * |
    SELECT
      ST_Overlaps(
        ST_GeometryFromText(
          'multipolygon (((10 10,10 20,20 20,20 15,10 10), (50 40,50 50,60 50,60 40,50 40)))'
        ),
        ST_GeometryFromText(
          'multipolygon (((10 10,10 20,20 20,20 15,10 10), (50 40,50 50,60 50,60 40,50 50)))'
        )
      )
  • 查询和分析结果ST_Crosses

ST_Relate函数

ST_Relate函数用于判断两个空间几何体是否相关(内部或边界以任何方式相关)。如果是,则返回true。

语法

ST_Relate(x, y, patternMatrix string)

参数说明

参数

说明

x

参数值为geometry类型。

y

参数值为geometry类型。

patternMatrix string

DE-9IM模式矩阵字符串,参数值为varchar类型。

返回值类型

boolean类型。

示例

使用ST_GeometryFromText函数构造两个空间几何体,然后使用ST_Relate函数判断两个空间几何体是否相关。

  • 查询和分析语句

    * |
    SELECT
      ST_Relate(
        ST_GeometryFromText(
          'multipolygon (((10 10,10 20,20 20,20 15,10 10), (50 40,50 50,60 50,60 40,50 40)))'
        ),
        ST_GeometryFromText(
          'multipolygon (((10 10,10 20,20 20,20 15,10 10), (50 40,50 50,60 50,60 40,50 50)))'
        ),  '****T****'
      )
  • 查询和分析结果 ST_Contains

ST_Touches函数

ST_Touches函数用于判断两个空间几何体是否只有边界存在关联,没有共同的内部点。如果是,则返回true。

语法

ST_Touches(x, y)

参数说明

参数

说明

x

参数值为geometry类型。

y

参数值为geometry类型。

返回值类型

boolean类型。

示例

使用ST_GeometryFromText函数构造两个空间几何体,然后使用ST_Touches函数判断两个空间几何体是否只有边界存在关联,没有共同的内部点。

  • 查询和分析语句

    * |
    SELECT
       ST_Touches(
        ST_GeometryFromText(
          'multipolygon (((10 10,10 20,20 20,20 15,10 10), (50 40,50 50,60 50,60 40,50 40)))'
        ),
        ST_GeometryFromText(
          'multipolygon (((10 10,10 20,20 20,20 15,10 10), (50 40,50 50,60 50,60 40,50 50)))'
        )
      )
  • 查询和分析结果ST_Crosses

ST_Within函数

ST_Within函数用于判断第一个空间几何体是否完全在第二个空间几何体内部(边界无交集)。如果是,则返回true。

语法

ST_Within(x, y)

参数说明

参数

说明

x

参数值为geometry类型。

y

参数值为geometry类型。

返回值类型

boolean类型。

示例

使用ST_GeometryFromText函数构造两个空间几何体,然后使用ST_Within函数判断第一个空间几何体是否完全在第二个空间几何体内部。

  • 查询和分析语句

    * |
    SELECT
      ST_Within(
        ST_GeometryFromText(
          'multipolygon (((10 10,10 20,20 20,20 15,10 10), (50 40,50 50,60 50,60 40,50 40)))'
        ),
        ST_GeometryFromText(
          'multipolygon (((10 10,10 20,20 20,20 15,10 10), (50 40,50 50,60 50,60 40,50 50)))'
        )
      )
  • 查询和分析结果ST_Crosses

ST_Area函数

ST_Area函数使用欧几里得测量法计算空间几何体在二维平面上的投影面积。

语法

ST_Area(x)

参数说明

参数

说明

x

参数值为geometry类型。

返回值类型

double类型。

示例

使用ST_GeometryFromText函数构造一个空间几何体,然后使用ST_Area函数计算该空间几何体在二维平面上的投影面积。

  • 查询和分析语句

    * |
    SELECT
      ST_Area(
        ST_GeometryFromText(
          'multipolygon (((10 10,10 20,20 20,20 15,10 10), (50 40,50 50,60 50,60 40,50 40)))'
        )
      )
  • 查询和分析结果ST_Area

ST_Centroid函数

ST_Centroid函数用于返回空间几何体的中心点。

语法

ST_Centroid(x)

参数说明

参数

说明

x

参数值为geometry类型。

返回值类型

geometry类型。

示例

使用ST_GeometryFromText函数构造一个空间几何体,然后使用ST_Centroid函数返回该空间几何体的中心点。

  • 查询和分析语句

    * |
    SELECT
      ST_Centroid(
        ST_GeometryFromText(
          'multipolygon (((10 10,10 20,20 20,20 15,10 10), (50 40,50 50,60 50,60 40,50 40)))'
        )
      )
  • 查询和分析结果ST_Centroid

ST_CoordDim函数

ST_CoordDim函数用于返回空间几何体的坐标维度。

语法

ST_CoordDim(x)

参数说明

参数

说明

x

参数值为geometry类型。

返回值类型

bigint类型。

示例

使用ST_GeometryFromText函数构造一个空间几何体,然后使用ST_CoordDim函数返回该空间几何体的坐标维度。

  • 查询和分析语句

    * |
    SELECT
      ST_CoordDim(
        ST_GeometryFromText(
          'multipolygon (((10 10,10 20,20 20,20 15,10 10), (50 40,50 50,60 50,60 40,50 40)))'
        )
      )
  • 查询和分析结果ST_CoordDim

ST_Dimension函数

ST_Dimension函数用于返回空间几何体的固有维度,必须小于或等于坐标维度。

语法

ST_Dimension(x)

参数说明

参数

说明

x

参数值为geometry类型。

  • x为点或空的空间几何体时,返回值为0。

  • x为线段时,返回值为1。

  • x为多边形时,返回值为2。

  • x为空间几何体时,返回值为集合的最大维度。

返回值类型

bigint类型。

示例

使用ST_GeometryFromText函数构造一个空间几何体,然后使用ST_Dimension函数返回该空间几何体的固有维度。

  • 查询和分析语句

    * |
    SELECT
      ST_Dimension(
        ST_GeometryFromText(
          'multipolygon (((10 10,10 20,20 20,20 15,10 10), (50 40,50 50,60 50,60 40,50 40)))'
        )
      )
  • 查询和分析结果ST_Dimension

ST_Distance函数

ST_Distance函数用于计算两个空间几何体之间的最小距离。

语法

ST_Distance(x, y)

参数说明

参数

说明

x

参数值为geometry类型。

y

参数值为geometry类型。

返回值类型

double类型。

示例

使用ST_GeometryFromText函数构造两个空间几何体,然后使用ST_Distance函数计算两个空间几何体之间的最小距离。

  • 查询和分析语句

    * |
    SELECT
      ST_Distance(
        ST_GeometryFromText(
          'multipolygon (((10 10,10 20,20 20,20 15,10 10), (50 40,50 50,60 50,60 40,50 50)))'
        ),
        ST_GeometryFromText(
          'multipolygon (((10 10,10 20,20 20,20 15,10 10), (50 40,50 50,60 50,60 40,50 40)))'
        )
      )
  • 查询和分析结果ST_Distance

ST_EndPoint函数

ST_EndPoint函数用于返回线段中的最后一个点。

语法

ST_EndPoint(x)

参数说明

参数

说明

x

参数值为geometry类型。

返回值类型

point类型。

示例

使用ST_LineFromText函数构造一条线段,然后使用ST_EndPoint函数返回线段中的最后一个点。

  • 查询和分析语句

    * |
    SELECT
      ST_EndPoint(
        ST_LineFromText(
          'linestring (10 10,20 20)'
        )
      )
  • 查询和分析结果ST_EndPoint

ST_IsClosed函数

ST_IsClosed函数用于判断空间几何体是否封闭。如果是,则返回true。

语法

ST_IsClosed(x)

参数说明

参数

说明

x

参数值为geometry类型。

返回值类型

boolean类型。

示例

使用ST_LineFromText函数构造一条线段,然后使用ST_IsClosed函数判断该线段是否封闭。

  • 查询和分析语句

    * |
    SELECT
      ST_IsClosed(
        ST_LineFromText(
          'linestring (10.05 10.28 , 20.95 20.89 )'
        )
      )
  • 查询和分析结果ST_Crosses

ST_IsEmpty函数

ST_IsEmpty函数用于判断输入的空间几何体是否为空。如果是,则返回true。

语法

ST_IsEmpty(x)

参数说明

参数

说明

x

参数值为geometry类型。

返回值类型

boolean类型。

示例

使用ST_Point函数构造一个点,然后使用ST_IsEmpty函数判断该点是否为空。

  • 查询和分析语句

    * | SELECT ST_IsEmpty(ST_Point(1,1))
  • 查询和分析结果ST_Crosses

ST_IsRing函数

ST_IsRing函数用于判断输入的空间几何体是否为闭合的简单线段(环)。如果是,则返回true。

语法

ST_IsRing(x)

参数说明

参数

说明

x

参数值为geometry类型。

返回值类型

boolean类型。

示例

使用ST_LineFromText函数构造一条线段,然后使用ST_IsRing函数判断该线段是否为一个环。

  • 查询和分析语句

    * |
    SELECT
      ST_IsRing(
        ST_LineFromText(
          'linestring (10.05 10.28,20.95 20.89 )'
        )
      )
  • 查询和分析结果ST_Crosses

ST_Length函数

ST_Length函数使用欧几里得测量法计算线段的二维投影长度。如果存在多条线段,则返回所有线段的长度之和。

语法

ST_Length(x)

参数说明

参数

说明

x

参数值为geometry类型。

返回值类型

double类型。

示例

使用ST_LineFromText函数构造一条线段,然后使用ST_Length函数计算线段的长度。

  • 查询和分析语句

    * |
    SELECT
      ST_Length(
        ST_LineFromText(
          'linestring (10.05 10.28,20.95 20.89)'
        )
      )
  • 查询和分析结果ST_Length

ST_NumPoints函数

ST_NumPoints函数用于返回空间几何体中点的个数。

语法

ST_NumPoints(x)

参数说明

参数

说明

x

参数值为geometry类型。

返回值类型

bigint类型。

示例

使用ST_LineFromText函数构造一条线段,然后使用ST_NumPoints函数返回线段中点的个数。

  • 查询和分析语句

    * |
    SELECT
      ST_NumPoints(
        ST_LineFromText('linestring (10 10,20 20)')
      )
  • 查询和分析结果ST_NumPoints

ST_NumInteriorRing函数

ST_NumInteriorRing函数用于计算空间几何体中内部环的数量。

语法

ST_NumInteriorRing(x)

参数说明

参数

说明

x

参数值为geometry类型。

返回值类型

bigint类型。

示例

使用ST_GeometryFromText函数构造一个空间几何体,然后使用ST_NumInteriorRing函数返回该几何体中内部环的数量。

  • 查询和分析语句

    * |
    SELECT
      ST_NumInteriorRing(
        ST_GeometryFromText(
          'multipolygon (((10 10,10 20,20 20,20 15,10 10), (50 40,50 50,60 50,60 40,50 40)))'
        )
      )
  • 查询和分析结果ST_NumInteriorRing

ST_StartPoint函数

ST_StartPoint函数用于返回线段中的第一个点。

语法

ST_StartPoint(x)

参数说明

参数

说明

x

参数值为geometry类型。

返回值类型

point类型。

示例

使用ST_LineFromText函数构造一条线段,然后使用ST_StartPoint函数返回该线段中的第一个点。

  • 查询和分析语句

    * |
    SELECT
      ST_StartPoint(
        ST_LineFromText(
          'linestring (10 10,20 20 )'
        )
      )
  • 查询和分析结果ST_StartPoint

ST_X函数

ST_X函数用于返回输入点的X轴坐标。

语法

ST_X(x)

参数说明

参数

说明

x

参数值为point类型。

返回值类型

double类型。

示例

使用ST_Point函数构造一个点,然后使用ST_X函数返回该点的X轴坐标。

  • 查询和分析语句

    * | SELECT ST_X(ST_Point(1,3))
  • 查询和分析结果ST_X

ST_XMax函数

ST_XMax函数用于返回空间几何体的第一个最大的X轴坐标。

语法

ST_XMax(x)

参数说明

参数

说明

x

参数值为geometry类型。

返回值类型

double类型。

示例

使用ST_GeometryFromText函数构造一个空间几何体,然后使用ST_XMax函数返回该空间几何体的第一个最大的X轴坐标。

  • 查询和分析语句

    * |
    SELECT
      ST_XMax(
        ST_GeometryFromText(
          'multipolygon (((10 10,10 20,20 20,20 15,10 10), (50 40,50 50,60 50,60 40,50 40)))'
        )
      )
  • 查询和分析结果ST_XMax

ST_XMin函数

ST_XMin函数用于返回空间几何体的第一个最小的X轴坐标。

语法

ST_XMin(x)

参数说明

参数

说明

x

参数值为geometry类型。

返回值类型

double类型。

示例

使用ST_GeometryFromText函数构造一个空间几何体,然后使用ST_XMin函数返回该空间几何体的第一个最小的X轴坐标。

  • 查询和分析语句

    * |
    SELECT
      ST_XMin(
        ST_GeometryFromText(
          'multipolygon (((10 10,10 20,20 20,20 15,10 10), (50 40,50 50,60 50,60 40,50 40)))'
        )
      )
  • 查询和分析结果ST_XMin

ST_Y函数

ST_Y函数用于返回输入点的Y轴坐标。

语法

ST_Y(x)

参数说明

参数

说明

x

参数值为point类型。

返回值类型

double类型。

示例

使用ST_Point函数构造一个点,然后使用ST_Y函数返回该点的Y轴坐标。

  • 查询和分析语句

    * | SELECT ST_Y(ST_Point(1,3))
  • 查询和分析结果ST_Y

ST_YMax函数

ST_YMax函数用于返回空间几何体的第一个最大的Y轴坐标。

语法

ST_YMax(x)

参数说明

参数

说明

x

参数值为geometry类型。

返回值类型

double类型。

示例

使用ST_GeometryFromText函数构造一个空间几何体,然后使用ST_YMax函数返回该空间几何体的第一个最大的Y轴坐标。

  • 查询和分析语句

    * |
    SELECT
      ST_YMax(
        ST_GeometryFromText(
          'multipolygon (((10 10,10 20,20 20,20 15,10 10), (50 40,50 50,60 50,60 40,50 40)))'
        )
      )
  • 查询和分析结果ST_YMax

ST_YMin函数

ST_YMin函数用于返回空间几何体的第一个最小的Y轴坐标。

语法

ST_YMin(x)

参数说明

参数

说明

x

参数值为geometry类型。

返回值类型

double类型。

示例

使用ST_GeometryFromText函数构造一个空间几何体,然后使用ST_YMin函数返回空间几何体的第一个最小的Y轴坐标。

  • 查询和分析语句

    * |
    SELECT
      ST_YMin(
        ST_GeometryFromText(
          'multipolygon (((10 10,10 20,20 20,20 15,10 10), (50 40,50 50,60 50,60 40,50 40)))'
        )
      )
  • 查询和分析结果ST_YMin

bing_tile函数

bing_tile函数用于构造一个Bing图块。

语法

  • 通过X坐标、Y坐标和缩放级别构造一个Bing图块。

    bing_tile(x, y, zoom_level)
  • 通过四叉树键构造一个Bing图块。

    bing_tile(quadKey)

参数说明

参数

说明

x

X坐标,参数值为integer类型。

y

Y坐标,参数值为integer类型。

zoom_level

缩放级别,取值范围为[1,23],参数值为integer类型。

quadKey

四叉树键。

返回值类型

BingTile类型。

示例

  • 示例1:通过X坐标、Y坐标和缩放级别构造一个Bing图块。

    • 查询和分析语句

      * | SELECT bing_tile(10, 20, 20)
    • 查询和分析结果bing_tile

  • 示例2:通过四叉树键构造一个Bing图块。

    • 查询和分析语句

      * | SELECT bing_tile(bing_tile_quadkey(bing_tile(10, 20, 20)))
    • 查询和分析结果bing_tile

bing_tile_at函数

bing_tile_at函数通过经纬度和缩放级别构造一个Bing图块。

语法

bing_tile_at(x, y, zoom_level)

参数说明

参数

说明

x

纬度,取值范围为[-85.05112878,85.05112878],参数值为double类型。

y

经度,取值范围为[-180,180],参数值为double类型。

zoom_level

缩放级别,取值范围为[1,23],参数值为integer类型。

返回值类型

BingTile类型。

示例

创建一个Bing图块。

  • 查询和分析语句

    * | SELECT bing_tile_at(47.265511, -122.465691, 12)
  • 查询和分析结果bing_tile_at

bing_tile_coordinates函数

bing_tile_coordinates函数用于返回目标Bing图块对应的X坐标和Y坐标。

语法

bing_tile_coordinates(x)

参数说明

参数

说明

x

参数值为BingTile类型。

返回值类型

array(integer,integer)类型。

示例

通过输入的Bing图块返回对应的X坐标和Y坐标。

  • 查询和分析语句

    * | SELECT bing_tile_coordinates(bing_tile_at(47.265511, -122.465691, 12))
  • 查询和分析结果bing_tile_coordinates

bing_tile_polygon函数

bing_tile_polygon函数用于返回目标Bing图块的多边形格式。

语法

bing_tile_polygon(x)

参数说明

参数

说明

x

参数值为BingTile类型。

返回值类型

polygon类型。

示例

返回Bing图块的多边形格式。

  • 查询和分析语句

    * | SELECT bing_tile_polygon(bing_tile_at(30.26, 120.19, 12))
  • 查询和分析结果bing_tile_polygon

bing_tile_quadkey函数

bing_tile_quadkey函数用于返回目标Bing图块的四叉树键。

语法

bing_tile_quadkey(x)

参数说明

参数

说明

x

参数值为BingTile类型。

返回值类型

varchar类型。

示例

返回目标Bing图块的四叉树键。

  • 查询和分析语句

    * | SELECT bing_tile_quadkey(bing_tile(10, 20, 20))
  • 查询和分析结果bing_tile_quadkey

bing_tile_zoom_level函数

bing_tile_zoom_level函数用于返回目标Bing图块的缩放级别。

语法

bing_tile_zoom_level(x)

参数说明

参数

说明

x

参数值为BingTile类型。

返回值类型

double类型。

示例

返回目标Bing图块的缩放级别。

  • 查询和分析语句

    * | SELECT bing_tile_zoom_level(bing_tile(10, 20, 20))
  • 查询和分析结果bing_tile_zoom_level