本文介紹空間幾何函數的基本文法及樣本。
空間幾何概念
以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_AreaFunction Compute該空間幾何體在二維平面上的投影面積。
-
查詢和分析語句
* | 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_DistanceFunction Compute兩個空間幾何體之間的最小距離。
-
查詢和分析語句
* | 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_LengthFunction Compute線段的長度。
-
查詢和分析語句
* | 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。