本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon Redshift 空間資料的術語
下列術語用來描述 Amazon Redshift 的一些空間函數。
邊界框
幾何或地理的週框方塊會定義為幾何或地理中所有點座標範圍的交叉乘積 (跨維度)。對於二維幾何圖形,週框方塊是完全包含幾何中所有點的矩形。例如,多邊形 POLYGON((0 0,1 0,0 2,0 0))
的週框方塊是由點 (0, 0) 和 (1, 2) 定義為其左下角和右上角的矩形。Amazon Redshift 會在幾何圖形中預先計算並儲存週框方塊,以加速形成幾何述詞和空間聯結。例如,如果兩個幾何圖形的週框方塊不相交,則這兩個幾何圖形就不會相交,而且不能存在於使用 st_Intersect 述詞的空間聯結結果集中。
您可以使用空間函數來加入 (AddBBox)、捨棄 (DropBBox) 及決定週框方塊的支援 (SupportsBBox)。Amazon Redshift 支援對所有幾何子類型預先計算週框方塊。
下列範例顯示如何更新資料表中的現有幾何圖形,以將其與週框方塊一起儲存。如果您叢集的叢集版本為 1.0.26809 或更新版本,則依預設會使用預先計算的週框方塊建立所有新的幾何圖形。
UPDATE my_table SET geom = AddBBox(geom) WHERE SupportsBBox(geom) = false;
更新現有幾何圖形之後,我們建議您在更新的資料表格執行 VACUUM 指令。如需詳細資訊,請參閱VACUUM。
若要設定工作階段期間是否使用週框方塊對幾何圖形進行編碼,請參閱 default_geometry_encoding。
幾何有效性
Amazon Redshift 使用的幾何演算法會假設輸入幾何圖形是有效的幾何圖形。如果演算法的輸入無效,則結果處於未定義狀態。下節說明 Amazon Redshift 針對每個幾何子類型使用的幾何有效性定義。
- 點 (Point)
-
若以下其中一個條件成立,則點將視為有效:
點是空點。
所有點座標均為有限浮點數。
點可以是空點。
- 線串 (Linestring)
-
若以下任何一個條件成立,則線串將視為有效:
線串是空的,也就是不包含任何點。
非空線串中的所有點都具有使用有限浮點數的座標。
如果線串不是空的,則必須是一維線條;也就是不能退化為一個點。
線串不能包含空點。
線串可以具有重複的連續點。
線串可以具有自我相交。
- 多邊形 (Polygon)
-
若以下任何一個條件成立,則多邊形將視為有效:
多邊形是空的,也就是不包含任何環。
如果不是空的,則當下列所有條件皆成立時,多邊形為有效:
多邊形的所有環都是有效的。若以下任何所有條件皆成立,則環將視為有效:
環的所有點都具有使用有限浮點數的座標。
環是封閉的;也就是環的第一個點和最後一個點重合。
環沒有任何自我交集。
環是二維的。
多邊形的環必須具有一致的方向。也就是說,如果您遍歷任何環,多邊形的內部還會在您的右側或左側。
所有內環必須位 於多邊形的外環內。
所有內部環的方向必須相同,而且必須是外部環的相反方向。
內環不能是巢狀結構,也就是說,內環不能在另一個內環內。
內環和外環只能在有限數量的點上相交。
多邊形的內部必須單連通。
多邊形不能包含空點。
- 多點 (Multipoint)
-
若以下任何一個條件成立,則多點將視為有效:
多點是空的,也就是不包含任何點。
多點不是空的,且根據點有效性定義,所有點都是有效的。
多點可以包含一個或多個空點。
多點可以有重複的點。
- 多重線串 (Multilinestring)
-
若以下任何一個條件成立,則多重線串將視為有效:
多重線串是空的,也就是不包含任何線串。
根據線串有效性定義,非空多重線串中的所有線串都是有效的。
僅由空線串組成的非空多重線串會視為有效。
多重線串中的空線串不會影響其有效性。
多重線串可以具有包含重複連續點的線串。
多重線串可以具有自我相交。
多重線串不能包含空點。
- 多重多邊形 (Multipolygon)
-
若以下任何一個條件成立,則多重多邊形將視為有效:
多重多邊形不包含任何多邊形 (也就是空的)。
多重多邊形不是空的,且下列所有條件皆成立:
多重多邊形中的所有多邊形都是有效的。
多重多邊形中沒有兩個多邊形可以在無限數量的點上相交。特別是,這意味著任何兩個多邊形的內部不能相交,並且只能在有限數量的點上碰到。
多重多邊形中的空多邊形不會使多重多邊形無效。
多重多邊形不能包含空點。
- 幾何集合
-
若以下任何一個條件成立,則幾何集合將視為有效:
幾何集合是空的,也就是不包含任何幾何圖形。
非空幾何集合中的所有幾何圖形都是有效的。
此定義仍然適用於巢狀幾何圖形集合,但是以遞迴方式套用。
幾何集合可以包含空點和具有空點的多點。
幾何簡單性
Amazon Redshift 使用的幾何演算法會假設輸入幾何圖形是有效的幾何圖形。如果演算法的輸入無效,則簡單性檢查會處於未定義狀態。下節說明 Amazon Redshift 針對每個幾何子類型使用的幾何簡單性定義。
- 點 (Point)
-
若以下任何一個條件成立,則有效點將視為簡單:
有效點一律視為簡單。
空點視為簡單。
- 線串 (Linestring)
-
若以下任何一個條件成立,則有效線串將視為簡單:
線串是空的。
線串不是空的,且下列所有條件皆成立:
線串沒有重複的連續點。
線串沒有自我相交,除了可能是會重合的第一個點和最後一個點。換句話說,除了在邊界點之外,線串不能具有自我相交。
- 多邊形
-
如果有效多邊形不包含任何重複的連續點,則視為簡單多邊形。
- 多點 (Multipoint)
-
若以下任何一個條件成立,則有效多點將視為簡單:
多點是空的,也就是不包含任何點。
多點的兩個非空點不重合。
- 多重線串 (Multilinestring)
-
若以下任何一個條件成立,則有效多重線串將視為簡單:
多重線串是空的。
多重線串不是空的,且下列所有條件皆成立:
多重線串的所有線串都是簡單線串。
多重線串的任何兩條線串都不相交,除了作為兩個線串邊界點的點。
僅由空線串組成的非空多重線串會視為空多重線串。
多重線串中的空線串不會影響其簡單性。
多重線串中的封閉線串不能與多重線串中的任何其他線串相交。
多重線串不可具有包含重複連續點的線串。
- 多重多邊形 (Multipolygon)
-
如果有效多重多邊形不包含任何重複的連續點,則視為簡單多邊形。
- 幾何集合
-
若以下任何一個條件成立,則有效幾何集合將視為簡單:
幾何集合是空的,也就是不包含任何幾何圖形。
非空幾何集合中的所有幾何圖形都是簡單的。
此定義仍然適用於巢狀幾何圖形集合,但是以遞迴方式套用。
H3
H3 是一種分層式地理空間索引網格系統,此系統會提供了一種將空間座標索引到平方公尺解析度的方法。索引的資料可以跨不同的資料集聯結,並以不同的精確程度彙總。H3 根據格點啟用一系列演算法和最佳化,包括最近鄰點、最短路徑、漸層平滑化等。H3 索引指的是可以是六邊形或五邊形的儲存格。該空間依照解析度被分層細分。H3 支援 0-15 的 16 個解析度,內含。0
是最普遍的,15
是最好。
Amazon Redshift 提供以下 H3 空間函數: