本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 Amazon Redshift 中查詢空間資料
空間資料描述了已定義空間 (空間參考系統) 中幾何的位置和形狀。Amazon Redshift 支持空間資料GEOMETRY
和GEOGRAPHY
資料類型,其中包含空間資料,還有資料的空間參考系統識別符 (SRID) 可選。
空間資料包含可用來表示地理特徵的幾何資料。這類資料的例子包括天氣報告、地圖方向、含地理位置的推文、商店位置,以及飛機航線。空間資料在商業分析、報告和預測方面扮演重要角色。
您可以使用 Amazon Redshift SQL 函數查詢空間資料。空間資料包含物件的幾何值。
所以此GEOMETRY
數據類型操作在笛卡爾平面上工作。儘管空間參照系標識符 (SRID) 存儲在對象內,但此 SRID 僅僅是座標系的標識符,在用於處理GEOMETRY
物件。相反,在GEOGRAPHY
數據類型將對象內的座標視為橢球體上的球座標。此旋轉橢球體由 SRID 定義,該 SRID 引用了一個地理空間參考系。根據預設,GEOGRAPHY
數據類型使用空間參考 (SRID) 4326 創建,並參照世界大地測量系統 (WGS) 84。
可以使用 ST_Transform 函數轉換來自各種空間參照系的座標。在座標變換完成後,您也可以在兩者之間使用簡單的轉換,只要輸入GEOMETRY
使用地理 SRID 編碼。這個轉換只是複製座標,而無需進一步轉換。例如:
SELECT ST_AsEWKT(ST_GeomFromEWKT('SRID=4326;POINT(10 20)')::geography);
st_asewkt
------------------------
SRID=4326;POINT(10 20)
為了更好地理解GEOMETRY
和GEOGRAPHY
數據類型,請考慮使用世界大地測量系統 (WGS) 84 計算柏林機場 (BER) 與舊金山機場 (SFO) 之間的距離。使用GEOGRAPHY
數據類型,結果以米為單位。當您使用GEOMETRY
數據類型,則結果以度為單位,不能轉換為米,因為一度的距離取決於地球幾何的位置。
上的計算GEOGRAPHY
數據類型主要用於實際的圓地計算, 例如一個國家的精確區域, 無扭曲. 但它們的計算成本要高得多。因此,ST_Transland 可以將座標轉換為適當的局部投影座標系,並在GEOMETRY
數據類型更快。
使用空間資料,您可以執行查詢來執行以下作業:
尋找兩點之間的距離。
檢查是否一個區域 (多邊形) 包含其他區域。
檢查一個 linestring 是否與另一個 linestring 或多邊形交集。
您可以使用 GEOMETRY
資料類型來保存空間資料的值。一個GEOMETRY
Amazon Redshift 可以定義二維 (2D)、三維 (3DZ)、帶度量的二維 (3DM) 和四維 (4D) 幾何原始數據類型:
二維 (2D) 幾何由平面中的兩個笛卡爾座標 (x, y) 指定。
三維 (3DZ) 幾何由空間中的三個笛卡爾座標 (x, y, z) 指定。
帶測量 (3DM) 幾何的二維由三個座標 (x, y, m) 指定,其中前兩個座標是平面中的笛卡爾座標,第三個座標是測量值。
四維 (4D) 幾何由四個座標 (x, y, z, m) 指定,其中前三個座標是空間中的笛卡爾座標,第四個座標是測量值。
如需幾何基本體資料類型的詳細資訊,請參幾何體的眾所周知文字表示
您可以使用 GEOGRAPHY
資料類型來保存空間資料的值。一個GEOGRAPHY
Amazon Redshift 可以定義二維 (2D)、三維 (3DZ)、帶度量的二維 (3DM) 和四維 (4D) 幾何原始數據類型:
二維 (2D) 幾何由旋轉球體上的經度和緯度座標指定。
三維 (3DZ) 幾何由旋轉橢球體上的經度、緯度和高度座標指定。
帶測量 (3DM) 幾何的二維由三個座標(經度、緯度、測量)指定,其中前兩個座標是球體上的角座標,第三個座標是測量值。
四維 (4D) 幾何由四個座標(經度、緯度、高度、測量)指定,其中前三個座標是經度、緯度和高度,第四個座標是測量值。
如需地理座標系的詳細資訊,請參地理座標系
所以此GEOMETRY
和GEOGRAPHY
資料類型具有下列子類型:
POINT
LINESTRING
POLYGON
MULTIPOINT
MULTILINESTRING
MULTIPOLYGON
GEOMETRYCOLLECTION
Amazon Redshift SQL 函數可支援下列幾何資料表示法的 Amazon Redshift SQL 函數:
GeoJSON
已知文字 (WKT)
擴充的已知文字 (EWKT)
已知二進位 (WKB) 表示法
擴充的已知二進位 (EWKB)
您可以在GEOMETRY
和GEOGRAPHY
資料類型。
下列 SQL 會從GEOMETRY
設置為GEOGRAPHY
。
SELECT ST_AsEWKT(ST_GeomFromText('LINESTRING(110 40, 2 3, -10 80, -7 9)')::geography);
st_asewkt
----------------------------------------------
SRID=4326;LINESTRING(110 40,2 3,-10 80,-7 9)
下列 SQL 會從GEOGRAPHY
設置為GEOMETRY
。
SELECT ST_AsEWKT(ST_GeogFromText('LINESTRING(110 40, 2 3, -10 80, -7 9)')::geometry);
st_asewkt
----------------------------------------------
SRID=4326;LINESTRING(110 40,2 3,-10 80,-7 9)
Amazon Redshift 提供許多 SQL 函數來查詢空間資料。除了ST_IsValid
函數,空間函數接受GEOMETRY
對象作為參數期望這GEOMETRY
對象設置為有效幾何體。如果GEOMETRY
或者GEOGRAPHY
對象無效,則空間函數的行為未定義。如需有關有效性的詳細資訊,請參幾何有效性。
如需查詢空間資料 SQL 函數的詳細資訊,請參閱 空間函數。
如需載入空間資料的詳細資訊,請參載入 GEOMETRY 或地理資料類型的資料行。
主題