ST Geometry 的空間運算函式

2021-08-19 18:41:17 字數 3260 閱讀 5952

空間運算利用幾何函式來接收輸入的空間資料,對其進行分析,然後生成輸出資料,輸出資料為針對輸入資料執行分析的派生結果。

完成以下操作可從輸入資料建立新資料。

st_buffer 函式通過在指定距離圈定幾何生成乙個幾何。緩衝主要幾何時或者當某個集合的緩衝多邊形相距足夠近會重疊時,將生成單獨的多邊形。當被緩衝的集合中的元素之間存在足夠的間距時,各個緩衝 st_polygons 將生成乙個 st_multipolygon。

st_buffer 函式既接受正距離也接受負距離,但只有維度為 2 的幾何(st_polygon 和 st_multipolygon)可以應用具有負距離的緩衝區。源幾何的維度小於 2 時,將使用緩衝距離的絕對值;也就是說,所有幾何既不是 st_polygon 也不是 st_multipolygon。一般來說,正值緩衝距離將生成遠離源幾何中心的面環,(就 st_polygon 或 st_multipolygon 的外部環而言)負值緩衝距離將生成趨向源幾何中心的面環。對於 st_polygon 或 st_multipolygon 的內部環而言,緩衝距離為正值時緩衝區圓環將趨向中心;緩衝距離為負值時緩衝區圓環將遠離中心。緩衝過程將合併重疊的緩衝多邊形。負值距離大於多邊形最大內部寬度的二分之一時,將產生乙個空幾何。

有關語法和示例,請參閱 st_buffer。

st_convexhull 函式用於返回任何幾何的凸包,該幾何至少包含用於形成凸形的三個折點。如果幾何的折點未形成凸形,st_convexhull 將返回空值。例如,將 st_convexhull 應用於由兩個折點組成的一條線,將會返回空值。同樣,使用 st_convexhull 對某個點要素進行操作,也將返回空值。鑲嵌一組點以建立不規則三角網 (tin) 時的第乙個步驟通常是建立凸包。

有關語法和示例,請參閱 st_convexhull。

st_difference 函式用於返回主要幾何中未被次要幾何相交的部分(即空間的邏輯與非)。st_difference 函式僅用於操作具有相似維度的幾何,並且返回與源幾何具有相同維度的集合。如果源幾何相等,則返回乙個空幾何。

注:在以下四個圖中,第乙個輸入幾何是黑色,第二個輸入幾何是橙色。

有關語法和示例,請參閱 st_difference。

st_intersection 函式用於返回兩個幾何的交集。交集始終作為乙個集合返回,該集合是源幾何的最小維度。例如,對於與 st_polygon 相交的 st_linestring,st_intersection 函式將返回與 st_polygon 的內部和邊界的公共部分作為 st_multilinestring。如果源 st_linestring 有兩個或更多的不連續線段與 st_polygon 相交,st_multilinestring 將包含多個 st_linestring。如果兩個幾何未相交或者如果相交結果的維度比兩個源幾何的維度都少,將返回空幾何。下圖展示了一些 st_intersection 函式的示例。

st_symmetricdiff 函式用於返回兩個幾何的對稱差集(空間的邏輯異或)。源幾何必須具有相同的維度。如果兩個幾何相等,st_symmetricdiff 函式將返回乙個空幾何;否則,此函式將以集合的形式返回結果。

有關語法和示例,請參閱 st_symmetricdiff。

st_union 函式用於返回兩個幾何的並集(空間的布林邏輯或)。源幾何必須具有相同的維度。st_union 始終以集合的形式返回結果。

有關語法和示例,請參閱 st_union。

先前的函式返回了新的幾何。st_distance 函式以兩個要素作為輸入,並返回二者之間的最小距離。

分隔兩個要素的最小距離表示在兩個位置之間的最短距離(直線距離)。舉例來說,該距離不是您駕車從乙個位置到另乙個位置必須通過的距離,而是在地圖上這兩個位置之間畫一條直線時需要計算的距離。st_distance 函式用於報告分隔兩個不相交幾何的最小距離。如果兩個幾何相交(也就是說它們重合),此函式將報告最小距離為零。

聚合操作返回單個幾何,該幾何是對多個幾何分析的結果。st_aggr_convexhull 函式用於返回由每個輸入幾何的凸包組成的多面。任何包含少於三個折點的輸入幾何將不具有凸包。如果所有輸入幾何包含的折點都少於三個,st_aggr_convexhull 將返回空值。

st_aggr_intersection 函式用於返回單個幾何,該幾何是所有輸入幾何交集的聚合。乙個查詢可能會發現大量要素相交。如果使用 st_intersection 運算子,將返回代表每組幾何的交集的多個要素。例如,如果將乙個線要素類和乙個點要素類相交,將為每個交集返回乙個 st_point 幾何。

如果改用 st_aggr_intersection,將僅返回乙個幾何集合。例如,如果要用乙個幾何代表上述的線要素類和點要素類的交集,st_aggr_intersection 將返回乙個包含交集所有點的 st_multipoint 幾何。但如果僅有乙個點和一條線相交,此函式將返回 st_point 幾何。

st_aggr_intersection 可查詢多個幾何的交集;而 st_intersection 僅查詢兩個幾何之間的交集。例如,如果需要查詢各種特定的服務(例如,特定校區、**服務、高速 internet 提供商)覆蓋並且由特定議員代表的地產,將需要查詢所有這些區域的交集。僅查詢這些區域中兩個區域的交集將不會返回您需要的所有資訊,因此使用 sde.st_aggr_intersection 函式以便能夠在同一查詢中計算所有區域。

st_aggr_union 函式返回乙個幾何,該幾何是所有提供的幾何的並集。這些輸入幾何必須具有相同的型別;例如,可以將 st_linestring 與 st_linestring 合併,也可以將 st_polygon 與 st_polygon 合併,但不能將 st_linestring 要素類與 st_polygon 要素類合併。通過聚合並集生成的幾何通常是乙個集合。例如,如果需要所有小於半英畝的閒置宗地的聚合並集,返回的幾何將是乙個多面;除非所有滿足條件的宗地都是毗連的,此時將返回乙個面。

Python的時間運算

如何計算兩個時間的差,python就有很好的模組datetime供我們使用 import datetime d1 datetime.datetime 2009,3,23 d2 datetime.datetime 2009,10,7 daycount d1 d2 days 輸出 198 這就可以計算兩...

Oracle 時間運算

with temp as select to date 2019 5 3 yyyy mm dd hh24 mi ss as gmt time from dual select to char gmt time,yyyy mm dd as 測試時間,to char gmt time 5,yyyy mm...

PHP時間運算

在很多場合為了顯示出資訊的及時性,一般會將時間顯示成 剛剛 5分鐘前 3小時前 等,而不是直接將時間列印出來。比如微博,sns類應用就最長用到這個功能。而一般儲存在資料庫中的時間格式為 unix時間戳,所以這裡記錄乙個將 unix時間戳 轉化為時間軸顯示的php函式。date default tim...