本文介绍空间几何函数的基本语法及示例。
空间几何概念
以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(x) |
将一个空间几何体转变为WKT格式的文本。 |
√ |
× |
|
|
ST_GeometryFromText(x) |
根据输入的WKT文本构造一个空间几何体。 |
√ |
× |
||
|
ST_LineFromText(x) |
根据输入的WKT文本构造一条线段。 |
√ |
× |
||
|
ST_Polygon(x) |
根据输入的WKT文本构造一个多边形。 |
√ |
× |
||
|
ST_Point(x, y) |
根据输入的WKT文本构造一个点。 |
√ |
× |
||
|
运算符 |
ST_Boundary(x) |
返回空间几何体的边界。 |
√ |
× |
|
|
ST_Buffer(x, distance) |
返回距离指定空间几何体一定距离的空间几何体。 |
√ |
× |
||
|
ST_Difference(x, y) |
返回两个空间几何体不同点的集合。 |
√ |
× |
||
|
ST_Envelope(x) |
返回空间几何体的最小边界框。 |
√ |
× |
||
|
ST_ExteriorRing(x) |
返回空间几何体的外环(线段形式)。 |
√ |
× |
||
|
ST_Intersection(x, y) |
返回两个空间几何体的交集点。 |
√ |
× |
||
|
ST_SymDifference(x, y) |
返回两个空间几何体的不同点,然后组成一个新的空间几何体。 |
√ |
× |
||
|
空间关系判断 |
ST_Contains(x, y) |
判断第一个空间几何体是否包含第二个空间几何体(边界可存在交集)。如果包含,则返回true。 |
√ |
× |
|
|
ST_Crosses(x, y) |
判断两个空间几何体是否存在相同的内部点。如果存在,则返回true。 |
√ |
× |
||
|
ST_Disjoint(x, y) |
判断两个空间几何体是否没有任何交集。 如果没有,则返回true。 |
√ |
× |
||
|
ST_Equals(x, y) |
判断两个空间几何体是否完全相同。如果是,则返回true。 |
√ |
× |
||
|
ST_Intersects(x, y) |
判断两个空间几何体的平面投影是否存在共同点。如果是,则返回true。 |
√ |
× |
||
|
ST_Overlaps(x, y) |
判断两个空间几何体的维度是否相同。如果两个空间几何体的维度相同且不是包含关系,则返回true。 |
√ |
× |
||
|
ST_Relate(x, y, patternMatrix string) |
判断两个空间几何体是否相关。如果是,则返回true。 |
√ |
× |
||
|
ST_Touches(x, y) |
判断两个空间几何体是否只有边界存在关联,没有共同的内部点。如果是,则返回true。 |
√ |
× |
||
|
ST_Within(x, y) |
判断第一个空间几何体是否完全在第二个空间几何体内部(边界无交集)。如果是,则返回true。 |
√ |
× |
||
|
Accessors |
ST_Area(x) |
使用欧几里得测量法计算空间几何体在二维平面上的投影面积。 |
√ |
× |
|
|
ST_Centroid(x) |
返回空间几何实体的中心点。 |
√ |
× |
||
|
ST_CoordDim(x) |
返回空间几何体的坐标维度。 |
√ |
× |
||
|
ST_Dimension(x) |
返回空间几何实体的固有维度,必须小于或等于坐标维度。 |
√ |
× |
||
|
ST_Distance(x, y) |
计算两个空间几何体之间的最小距离。 |
√ |
× |
||
|
ST_EndPoint(x) |
返回线段中的最后一个点。 |
√ |
× |
||
|
ST_IsClosed(x) |
判断输入的空间几何体是否封闭。如果是,则返回true。 |
√ |
× |
||
|
ST_IsEmpty(x) |
判断输入的空间几何体是否为空。如果是,则返回true。 |
√ |
× |
||
|
ST_IsRing(x) |
判断输入的空间几何体是否为闭合的简单线段(环)。如果是,则返回true。 |
√ |
× |
||
|
ST_Length(x) |
使用欧几里得测量法计算线段的二维投影长度。如果存在多条线段,则返回所有线段的长度之和。 |
√ |
× |
||
|
ST_NumPoints(x) |
返回空间几何体中点的个数。 |
√ |
× |
||
|
ST_NumInteriorRing(x) |
计算空间几何体中内部环的数量。 |
√ |
× |
||
|
ST_StartPoint(x) |
返回线段中的第一个点。 |
√ |
× |
||
|
ST_X(x) |
返回输入点的第一个X轴坐标。 |
√ |
× |
||
|
ST_XMax(x) |
返回空间几何体的第一个最大的X轴坐标。 |
√ |
× |
||
|
ST_XMin(x) |
返回空间几何体的第一个最小的X轴坐标。 |
√ |
× |
||
|
ST_Y(x) |
返回输入点的第一个Y轴坐标。 |
√ |
× |
||
|
ST_YMax(x) |
返回空间几何体的第一个最大的Y轴坐标。 |
√ |
× |
||
|
ST_YMin(x) |
返回几何体的第一个最小的Y轴坐标。 |
√ |
× |
||
|
Bing图块 |
bing_tile(x, y, zoom_level) |
通过X坐标、Y坐标和缩放级别构造一个Bing图块。 |
√ |
× |
|
|
bing_tile(quadKey) |
通过四叉树键构造一个Bing图块。 |
√ |
× |
||
|
bing_tile_at(x, y, zoom_level) |
通过经纬度和缩放级别构造一个Bing图块。 |
√ |
× |
||
|
bing_tile_coordinates(x) |
返回目标Bing图块对应的X坐标和Y坐标。 |
√ |
× |
||
|
bing_tile_polygon(x) |
返回目标Bing图块的多边形格式。 |
√ |
× |
||
|
bing_tile_quadkey(x) |
返回目标Bing图块的四叉树键。 |
√ |
× |
||
|
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)) -
查询和分析结果为
POINT (1 1)。
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)))') -
查询和分析结果为
POLYGON ((10 10, 20 15, 20 20, 10 20, 10 10), (50 40, 50 50, 60 50, 60 40, 50 40))。
ST_LineFromText函数
ST_LineFromText函数会根据您输入的WKT文本构造一条线段。
语法
ST_LineFromText(x)
参数说明
|
参数 |
说明 |
|
x |
参数值为varchar类型。 |
返回值类型
linestring类型。
示例
构造一条线段。
-
查询和分析语句
* | SELECT ST_LineFromText('linestring(10 10,20 20)') -
查询和分析结果为
LINESTRING (10 10, 20 20)。
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))') -
查询和分析结果为
POLYGON ((10 10, 20 15, 20 20, 10 20, 10 10))。
ST_Point函数
ST_Point函数会根据您输入的WKT文本构造一个点。
语法
ST_Point(x, y)
参数说明
|
参数 |
说明 |
|
x |
参数值为geometry类型。 |
|
y |
参数值为geometry类型。 |
返回值类型
point类型。
示例
构造一个点。
-
查询和分析语句
* | SELECT ST_Point(0,0) -
查询和分析结果为
POINT (0 0)。
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))')) -
查询和分析结果为
LINESTRING (10 10, 20 15, 20 20, 10 20, 10 10)。
ST_Buffer函数
ST_Buffer函数用于返回距离指定空间几何体一定距离的空间几何体。
语法
ST_Buffer(x, distance)
参数说明
|
参数 |
说明 |
|
x |
参数值为geometry类型。 |
|
distance |
距离。 |
返回值类型
geometry类型。
示例
使用ST_Point函数构造一个点,然后使用ST_Buffer函数返回距离该点一定距离的多边形。
-
查询和分析语句
* | SELECT ST_Buffer(ST_Point(1,1),1) -
查询和分析结果为一个近似圆形的POLYGON值,坐标点较多,起始坐标为
(2 1, 1.9978589232386...)。
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" -
查询和分析结果为
MULTIPOLYGON (((0 10, 10 10, 10 17.5, 0 15, 0 10)), ((50 40, 60 40, 50 50, 50 40)))。
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)))' ) ) -
查询和分析结果为
POLYGON ((10 10, 60 10, 60 50, 10 50, 10 10))。
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)))' ) ) -
查询和分析结果为
LINESTRING (10 10, 20 15, 20 20, 10 20, 10 10)。
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)))' ) ) -
查询和分析结果为
MULTIPOLYGON (((10 10, 20 15, 20 20, 10 20, 10 10)), ((60 40, 60 50, 50 50, 60 40)))。
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)))' ) ) -
查询和分析结果为
POLYGON ((50 40, 60 40, 50 50, 50 40))。
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)' ) ) -
查询和分析结果为
true。
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)))' ) ) -
查询和分析结果为
false。
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)))' ) ) -
查询和分析结果为
false。
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)))' ) ) -
查询和分析结果为
false。
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)))' ) ) -
查询和分析结果为
true。
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)))' ) ) -
查询和分析结果为
false。
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****' ) -
查询和分析结果为
true。
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)))' ) ) -
查询和分析结果为
false。
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)))' ) ) -
查询和分析结果为
false。
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)))' ) ) -
查询和分析结果为
-25.0。
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)))' ) ) -
查询和分析结果为
POINT (176.66666666666669 131.66666666666669)。
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)))' ) ) -
查询和分析结果为
2。
ST_Dimension函数
ST_Dimension函数用于返回空间几何体的固有维度,必须小于或等于坐标维度。
语法
ST_Dimension(x)
参数说明
|
参数 |
说明 |
|
x |
参数值为geometry类型。
|
返回值类型
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)))' ) ) -
查询和分析结果为
2。
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)))' ) ) -
查询和分析结果为
0.0。
ST_EndPoint函数
ST_EndPoint函数用于返回线段中的最后一个点。
语法
ST_EndPoint(x)
参数说明
|
参数 |
说明 |
|
x |
参数值为geometry类型。 |
返回值类型
point类型。
示例
使用ST_LineFromText函数构造一条线段,然后使用ST_EndPoint函数返回线段中的最后一个点。
-
查询和分析语句
* | SELECT ST_EndPoint( ST_LineFromText( 'linestring (10 10,20 20)' ) ) -
查询和分析结果为
POINT (20 20)。
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 )' ) ) -
查询和分析结果为
false。
ST_IsEmpty函数
ST_IsEmpty函数用于判断输入的空间几何体是否为空。如果是,则返回true。
语法
ST_IsEmpty(x)
参数说明
|
参数 |
说明 |
|
x |
参数值为geometry类型。 |
返回值类型
boolean类型。
示例
使用ST_Point函数构造一个点,然后使用ST_IsEmpty函数判断该点是否为空。
-
查询和分析语句
* | SELECT ST_IsEmpty(ST_Point(1,1)) -
查询和分析结果为
false。
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 )' ) ) -
查询和分析结果为
false。
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)' ) ) -
查询和分析结果为
15.211249126879752。
ST_NumPoints函数
ST_NumPoints函数用于返回空间几何体中点的个数。
语法
ST_NumPoints(x)
参数说明
|
参数 |
说明 |
|
x |
参数值为geometry类型。 |
返回值类型
bigint类型。
示例
使用ST_LineFromText函数构造一条线段,然后使用ST_NumPoints函数返回线段中点的个数。
-
查询和分析语句
* | SELECT ST_NumPoints( ST_LineFromText('linestring (10 10,20 20)') ) -
查询和分析结果为
2。
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)))' ) ) -
查询和分析结果为
1。
ST_StartPoint函数
ST_StartPoint函数用于返回线段中的第一个点。
语法
ST_StartPoint(x)
参数说明
|
参数 |
说明 |
|
x |
参数值为geometry类型。 |
返回值类型
point类型。
示例
使用ST_LineFromText函数构造一条线段,然后使用ST_StartPoint函数返回该线段中的第一个点。
-
查询和分析语句
* | SELECT ST_StartPoint( ST_LineFromText( 'linestring (10 10,20 20 )' ) ) -
查询和分析结果为
POINT (10 10)。
ST_X函数
ST_X函数用于返回输入点的X轴坐标。
语法
ST_X(x)
参数说明
|
参数 |
说明 |
|
x |
参数值为point类型。 |
返回值类型
double类型。
示例
使用ST_Point函数构造一个点,然后使用ST_X函数返回该点的X轴坐标。
-
查询和分析语句
* | SELECT ST_X(ST_Point(1,3)) -
查询和分析结果为
1.0。
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)))' ) ) -
查询和分析结果为
60.0。
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)))' ) ) -
查询和分析结果为
10.0。
ST_Y函数
ST_Y函数用于返回输入点的Y轴坐标。
语法
ST_Y(x)
参数说明
|
参数 |
说明 |
|
x |
参数值为point类型。 |
返回值类型
double类型。
示例
使用ST_Point函数构造一个点,然后使用ST_Y函数返回该点的Y轴坐标。
-
查询和分析语句
* | SELECT ST_Y(ST_Point(1,3)) -
查询和分析结果为
3.0。
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)))' ) ) -
查询和分析结果为
50.0。
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)))' ) ) -
查询和分析结果为
10.0。
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) -
查询和分析结果为
{"x":10,"y":20,"zoom":20}。
-
-
示例2:通过四叉树键构造一个Bing图块。
-
查询和分析语句
* | SELECT bing_tile(bing_tile_quadkey(bing_tile(10, 20, 20))) -
查询和分析结果为
{"x":10,"y":20,"zoom":20}。
-
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) -
查询和分析结果为
{"x":654,"y":1436,"zoom":12}。
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)) -
查询和分析结果为
[654,1436]。
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)) -
查询和分析结果为
POLYGON ((120.146484375 30.297017883372042, 120.146484375 30.221101852485987, 120.234375 30.221101852485987, 120.234375 30.297017883372042, 120.146484375 30.297017883372042))。
bing_tile_quadkey函数
bing_tile_quadkey函数用于返回目标Bing图块的四叉树键。
语法
bing_tile_quadkey(x)
参数说明
|
参数 |
说明 |
|
x |
参数值为BingTile类型。 |
返回值类型
varchar类型。
示例
返回目标Bing图块的四叉树键。
-
查询和分析语句
* | SELECT bing_tile_quadkey(bing_tile(10, 20, 20)) -
查询和分析结果为
000000000000021210。
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)) -
查询和分析结果为
20。