在 Amazon Redshift 中查詢空間資料 - Amazon Redshift

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

在 Amazon Redshift 中查詢空間資料

空間資料描述已定義空間 (空間參考系統) 中幾何圖形的位置和形狀。Amazon Redshift 支援資料類型為 GEOMETRYGEOGRAPHY 的空間資料,其中包含空間資料及資料的空間參考系統識別碼 (SRID) (選擇性)。

空間資料包含能用來表示地理特徵的幾何資料。這類資料的例子包括天氣報告、地圖方向、含地理位置的推文、商店位置,以及飛機航線。空間資料在商業分析、報告和預測方面扮演重要角色。

您可以使用 Amazon Redshift SQL 函數查詢空間資料。空間資料包含物件的幾何值。

GEOMETRY 資料類型操作會在笛卡爾平面上運作。雖然空間參照系統識別碼 (SRID) 儲存在物件內,但此 SRID 只是座標系統的識別碼,在用來處理 GEOMETRY 物件的演算法中沒有任何作用。相反地,GEOGRAPHY 資料類型上的操作會將物件內部的座標視為球體上的球形座標。此球體由參考地理空間參考系統的 SRID 定義。依預設,GEOGRAPHY 資料類型是使用空間參考 (SRID) 4326 建立的,並且參考世界大地測量系統 (WGS) 84。如需 SRID 的相關資訊,請參閱 Wikipedia 中的空間參考系統

您可以使用 ST_Transform 函數來轉換來自各種空間參考系統的座標。坐標轉換完成後,只要輸入 GEOMETRY 使用地理 SRID 編碼,您也可以在兩者之間使用簡單的轉換。這種轉換只是複製坐標而無需進一步的轉換。例如:

SELECT ST_AsEWKT(ST_GeomFromEWKT('SRID=4326;POINT(10 20)')::geography);
st_asewkt ------------------------ SRID=4326;POINT(10 20)

為了更好地了解 GEOMETRYGEOGRAPHY 資料類型之間的差異,可考慮使用世界大地測量系統 (WGS) 84 來計算柏林機場 (BER) 和舊金山機場 (SFO) 之間的距離。使用 GEOGRAPHY 資料類型時,結果會以公尺為單位。將 GEOMETRY 資料類型與 SRID 4326 搭配使用時,結果會以度為單位,無法轉換為公尺,因為一度的距離取決於地球幾何圖形上的位置。

GEOGRAPHY 資料類型的計算主要用於現實的圓形地球計算,如一個國家/地區精確而不失真的面積。但是其計算成本要高得多。因此,ST_Transform 可以將您的座標轉換為適當的局部投影座標系統,並更快地對 GEOMETRY 資料類型進行計算。

使用空間資料,您可以執行查詢來執行以下作業:

  • 尋找兩點之間的距離。

  • 檢查是否一個區域 (多邊形) 包含其他區域。

  • 檢查一個線串 (linestring) 是否與另一個線串或多邊形交集。

您可以使用 GEOMETRY 資料類型來保存空間資料的值。Amazon Redshift 中的 GEOMETRY 值可以定義二維 (2D)、三維 (3DZ)、具量值二維 (3DM) 及四維 (4D) 幾何基本資料類型:

  • 二維 (2D) 幾何圖形由平面中的兩個直角座標 (x、y) 指定。

  • 三維 (3DZ) 幾何圖形由空間中的三個直角座標 (x、y、z) 指定。

  • 具量值二維 (3DM) 幾何圖形由三個坐標 (x、y、m) 指定,前兩個座標是平面中的直角坐標,第三個是測量值。

  • 四維 (4D) 幾何圖形由四個坐標 (x、y、z、m) 指定,前三個座標是空間中的直角坐標,第四個是測量值。

如需基本幾何資料類型的相關資訊,請參閱 Wikipedia 中的 Well-known text representation of geometry (幾何圖形的熟知文字表示法)

您可以使用 GEOGRAPHY 資料類型來保存空間資料的值。Amazon Redshift 中的 GEOGRAPHY 值可以定義二維 (2D)、三維 (3DZ)、具量值二維 (3DM) 及四維 (4D) 幾何基本資料類型:

  • 二維 (2D) 幾何圖形由球體上的經度和緯度座標指定。

  • 三維 (3DZ) 幾何圖形由球體上的經度、緯度和高度座標指定。

  • 具量值二維 (3DM) 幾何圖形由三個坐標 (經度、緯度和量值) 指定,前兩個座標是球體上的角度坐標,第三個是測量值。

  • 四維 (4D) 幾何圖形由四個座標 (經度、緯度、高度、量值) 指定,其中前三個是經度、緯度和高度,第四個是測量值。

如需地理坐標系統的相關資訊,請參閱 Wikipedia 中的地理坐標系統球形坐標系統

GEOMETRYGEOGRAPHY 資料類型具有下列子類型:

  • POINT

  • LINESTRING

  • POLYGON

  • MULTIPOINT

  • MULTILINESTRING

  • MULTIPOLYGON

  • GEOMETRYCOLLECTION

其中有支援下列幾何資料表示法的 Amazon Redshift SQL 函數:

  • GeoJSON

  • 已知文字 (WKT)

  • 擴充的已知文字 (EWKT)

  • 已知二進位 (WKB) 表示法

  • 擴充的已知二進位 (EWKB)

您可以在 GEOMETRYGEOGRAPHY 資料類型之間進行轉換。

下列 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 物件是有效的幾何圖形。如果 GEOMETRYGEOGRAPHY 物件無效,則不會定義空間函數的行為。如需有效性的相關資訊,請參閱 幾何有效性

如需查詢空間資料 SQL 函數的詳細資訊,請參閱 空間函數

如需載入空間資料的詳細資訊,請參閱 載入 GEOMETRY 或 GEOGRAPHY 資料類型的欄