

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

# Babelfish 支援地理空間資料類型
<a name="babelfish-geospatial"></a>

從 3.5.0 和 4.1.0 版開始，Babelfish 包含下列兩種空間資料類型的支援：
+ **幾何資料類型**：此資料類型適用於存放平面或歐幾里德 (平地球) 資料。
+ **地理資料類型**：此資料類型適用於存放橢圓或圓地球資料，例如 GPS 緯度和經度座標。

這些資料類型允許空間資料的儲存和處理，但有限制。

## 了解 Babelfish 中的地理空間資料類型
<a name="babelfish-geospatial-overview"></a>
+ 檢視、程序和資料表等各種資料庫物件都支援地理空間資料類型。
+ 支援點資料類型，將位置資料存放為經緯度和有效的空間參考系統識別符 (SRID) 定義的點。點可能包含 Z （上升）、M （測量） 值，而且可以是空的。
+ 支援由一系列點和連接它們的線段以及有效的空間參考系統識別符 (SRID) 定義的 linestring 資料類型 （從 5.4.0 版開始）。linestring 可能包含具有 Z （上升）、M （測量） 值的點，並且可以是空的。
+ 支援多邊形資料類型 （從 5.5.0 和 6.0.0 版開始）。多邊形是一種二維表面，存放為定義外部邊界環和零個或多個內部環的一系列點。
+ 透過 JDBC、ODBC、DOTNET 和 PYTHON 等驅動程式連線至 Babelfish 的應用程式可以利用此地理空間功能。

### Babelfish 中支援的幾何資料類型函數
<a name="babelfish-geospatial-overview-geometry"></a>
+ **STGeomFromText ({{geometry\_tagged\_text}}、SRID)**：使用已知文字 (WKT) 表示法建立幾何執行個體。
+ **STPointFromText ({{point\_tagged\_text}}、SRID )**：使用 WKT 表示法建立點執行個體。
+ **點 (X、Y、SRID)**：使用 x 和 y 座標的浮點數值建立點執行個體。
+ **<geometry\_instance>.STAsText ( )**：從幾何執行個體擷取 WKT 表示法。
+ **<geometry\_instance>。STAsBinary ()** – 從幾何執行個體擷取 WKB 表示法。
+ **<geometry\_instance>。STArea ( )** – 計算幾何執行個體的總表面積。
+ **<geometry\_instance>。STSrid ()** – 擷取幾何執行個體的空間參考識別碼 (SRID)。
+ **<geometry\_instance>。STDimension ()** – 擷取幾何執行個體的空間維度。
+ **<geometry\_instance>。STIsEmpty ()** – 檢查幾何執行個體是否為空。
+ **<geometry\_instance>。STIsClosed ()** – 檢查幾何執行個體是否關閉。
+ **<geometry\_instance>。STIsValid ()** – 檢查幾何執行個體是否有效。
+ **<geometry\_instance>.STDistance (other\_geometry)**：計算兩個幾何執行個體之間的距離。
+ **<geometry\_instance>。STEquals (other\_geometry)** – 檢查幾何執行個體是否代表與另一個幾何執行個體相同的設定點。
+ **<geometry\_instance>。STContains (other\_geometry)** – 檢查幾何執行個體是否包含其他\_geometry 執行個體。
+ **<geometry\_instance>。STDisjoint (other\_geometry)** – 檢查兩個幾何執行個體是否沒有共同點。
+ **<geometry\_instance>。STIntersects (other\_geometry)** – 檢查兩個幾何執行個體是否空間相交。
+ **<geometry\_instance>.STX**：擷取幾何執行個體的 X 座標 (經度)。
+ **<geometry\_instance>.STY**：擷取幾何執行個體的 Y 座標 (緯度)。

從 4.7.0 和 5.3.0 版開始，Babelfish 包含對下列空間資料函數的支援：
+ **<geometry\_instance>。M** – 擷取幾何執行個體的 M 座標。
+ **<geometry\_instance>。Z** – 擷取幾何執行個體的 Z 座標。
+ **<geometry\_instance>。HasM** – 檢查幾何執行個體是否具有至少一個 M 值。
+ **<geometry\_instance>。HasZ** – 檢查幾何執行個體是否具有至少一個 Z 值。

從 5.4.0 版開始，Babelfish 包含對下列空間資料函數的支援：
+ **STLineFromText ({{linestring\_tagged\_text}}、SRID )** – 使用 WKT 表示法建立 linestring 執行個體。

從 5.5.0 和 6.0.0 版開始，Babelfish 包含對下列空間資料函數的支援：
+ **STPolyFromText ({{polygon\_tagged\_text}}、SRID )** – 使用 WKT 表示法建立多邊形執行個體。

### Babelfish 中支援的地理資料類型函數
<a name="babelfish-geospatial-overview-geography"></a>
+ **STGeomFromText ({{geography\_tagged\_text}}、SRID )**：使用 WKT 表示法建立地理執行個體。
+ **STPointFromText ({{point\_tagged\_text}}、SRID )**：使用 WKT 表示法建立點執行個體。
+ **點 (緯度、經度、SRID)**：使用緯度和經度的浮點數值建立點執行個體。
+ **<geography\_instance>.STAsText ( )**：從地理執行個體擷取 WKT 表示法。
+ **<geography\_instance>。STAsBinary ()** – 從地理位置執行個體擷取 WKB 表示法。
+ **<geography\_instance>。STArea ( )** – 計算地理執行個體的總表面積。
+ **<geography\_instance>。STSrid ()** – 擷取地理執行個體的空間參考識別碼 (SRID)。
+ **<geography\_instance>。STDimension ()** – 擷取地理執行個體的空間維度。
+ **<geography\_instance>。STIsEmpty ()** – 檢查地理位置執行個體是否為空。
+ **<geography\_instance>。STIsClosed ()** – 檢查地理位置執行個體是否關閉。
+ **<geography\_instance>。STIsValid( )** – 檢查地理位置執行個體是否有效。
+ **<geography\_instance>.STDistance (other\_geography)**：計算兩個地理執行個體之間的距離。
+ **<geography\_instance>。STEquals (other\_geography)** – 檢查地理位置執行個體是否代表與另一個地理位置執行個體相同的設定點。
+ **<geography\_instance>。STContains (other\_geography)** – 檢查地理執行個體是否包含其他\_geography 執行個體。
+ **<geography\_instance>。STDisjoint (other\_geography)** – 檢查兩個地理執行個體是否沒有共同點。
+ **<geography\_instance>。STIntersects (other\_geography)** – 檢查兩個地理執行個體是否空間相交。
+ **<geography\_instance>.Lat**：擷取地理執行個體的緯度值。
+ **<geography\_instance>.Long**：擷取地理執行個體的經度值。

從 4.7.0 和 5.3.0 版開始，Babelfish 包含對下列空間資料函數的支援：
+ **<geography\_instance>。M** – 擷取地理執行個體的 M 座標。
+ **<geography\_instance>。Z** – 擷取地理執行個體的 Z 座標。
+ **<geography\_instance>。HasM** – 檢查地理位置執行個體是否具有至少一個 M 值。
+ **<geography\_instance>。HasZ** – 檢查地理位置執行個體是否具有至少一個 Z 值。

從 5.4.0 版開始，Babelfish 包含對下列空間資料函數的支援：
+ **STLineFromText ({{linestring\_tagged\_text}}、SRID )** – 使用 WKT 表示法建立 linestring 執行個體。

從 5.5.0 和 6.0.0 版開始，Babelfish 包含對下列空間資料函數的支援：
+ **STPolyFromText ({{polygon\_tagged\_text}}、SRID )** – 使用 WKT 表示法建立多邊形執行個體。

## Babelfish 中地理空間資料類型的限制
<a name="babelfish-geospatial-limitations"></a>
+ 目前不支援點、 linestring 和多邊形執行個體以外的幾何和地理類型：
  + CircularString
  + CompoundCurve
  + CurvePolygon
  + MultiPoint
  + MultiLineString
  + MultiPolygon
  + GeometryCollection
+ 目前，針對地理空間資料類型，不支援空間索引。
+ 目前針對這些資料類型僅支援列出的函數。如需詳細資訊，請參閱[Babelfish 中支援的幾何資料類型函數](#babelfish-geospatial-overview-geometry)及[Babelfish 中支援的地理資料類型函數](#babelfish-geospatial-overview-geography)。
+ 與 T-SQL 相比，地理資料的 STDistance 函數輸出可能會有細微的精確度變化。這是因為基礎 PostGIS 實作所致。如需詳細資訊，請參閱 [ST\_Distance](https://postgis.net/docs/ST_Distance.html)
+ 與 T-SQL 相比，幾何和地理資料的 STIsValid 函數輸出可能會有一些偏差。因此，在某些情況下，函數 - STDistance、STContains、STInstersects、STDisjoint、STDimension、STArea、STEquals 也可能偏離 T-SQL ( 傳回輸出，而不是擲出錯誤 )。這是因為基礎 PostGIS 實作所致。如需詳細資訊，請參閱 [ST\_IsValid](https://postgis.net/docs/ST_IsValid.html)。
+ 為獲得最佳效能，請使用內建的地理空間資料類型，而無需在 Babelfish 中建立額外的抽象層。
+ 在 Babelfish 中，地理空間函數名稱會用作為關鍵字，只有在以預期方式使用時，才會執行空間操作。