Babelfish は地理空間データ型をサポート
バージョン 3.5.0 および 4.1.0 以降、Babelfish では次の 2 つの空間データ型がサポートされています。
-
ジオメトリデータ型 – このデータ型は、平面データまたはユークリッド (フラットアース) データを保存することを目的としています。
-
地理データ型 – このデータ型は、GPS の緯度や経度の座標など、楕円データまたはラウンドアースデータを保存することを目的としています。
これらのデータ型により、空間データの保存と操作が可能になりますが、いくつかの制限があります。
Babelfish の地理空間データ型について
地理空間データ型は、ビュー、プロシージャ、テーブルなどのさまざまなデータベースオブジェクトでサポートされています。
-
2-D ポイントデータ型をサポートし、位置データを緯度、経度、有効な空間リファレンスシステム識別子 (SRID) で定義されたポイントとして保存します。
-
JDBC、ODBC、DOTNET、PYTHON などのドライバーを介して Babelfish に接続するアプリケーションは、この地理空間機能を利用できます。
Babelfish でサポートされているジオメトリデータ型関数
STGeomFromText (
geometry_tagged_text
, SRID) – Well-Known Text (WKT) 表現を使用してジオメトリインスタンスを作成します。STPointFromText (
point_tagged_text
, SRID) – WKT 表現を使用してポイントインスタンスを作成します。-
Point ( X、Y、SRID) – x および y 座標の浮動小数点値を使用してポイントインスタンスを作成します。
-
<geometry_instance>.STAsText ( ) – ジオメトリインスタンスから WKT 表現を抽出します。
-
<geometry_instance>.STDistance (other_geometry) – 2 つのジオメトリインスタンス間の距離を計算します。
-
<geometry_instance>.STX – ジオメトリインスタンスの X 座標 (経度) を抽出します。
-
<geometry_instance>.STY – ジオメトリインスタンスの Y 座標 (緯度) を抽出します。
Babelfish でサポートされている地理データ型関数
-
STGeomFromText (
geography_tagged_text
, SRID) – WKT 表現を使用して地理インスタンスを作成します。 -
STPointFromText (
point_tagged_text
, SRID) – WKT 表現を使用してポイントインスタンスを作成します。 -
Point (Lat, Long, SRID) – 緯度と経度の浮動小数点値を使用してポイントインスタンスを作成します。
-
<geography_instance>.STAsText ( ) – 地理インスタンスから WKT 表現を抽出します。
-
<geography_instance>.STDistance (other_geography) – 2 つの地理インスタンス間の距離を計算します。
-
<geography_instance>.Lat – 地理インスタンスの緯度値を抽出します。
-
<geography_instance>.Long – 地理インスタンスの経度値を抽出します。
Babelfish での地理空間データ型の制限
-
現在、Babelfish は地理空間データ型のポイントインスタンスの Z-M フラグなどのより高度な機能をサポートしていません。
-
ポイントインスタンス以外のジオメトリ型は現在サポートされていません。
LineString
CircularString
CompoundCurve
Polygon
CurvePolygon
MultiPoint
MultiLineString
MultiPolygon
GeometryCollection
現在、空間インデックス作成は地理空間データ型ではサポートされていません。
現在、これらのデータ型では、記載されている関数のみがサポートされています。詳細については、Babelfish でサポートされているジオメトリデータ型関数およびBabelfish でサポートされている地理データ型関数を参照してください。
地理データの STDistance 関数の出力は、T-SQL と比較して精度に若干のばらつきが含まれる場合があります。これは、基盤となる PostGIS 実装に起因するものです。詳細については、「ST_Distance
」を参照してください。 最適なパフォーマンスを得るには、Babelfish で追加の抽象化レイヤーを作成せずに、組み込みの地理空間データ型を使用します。
ヒント
カスタムデータ型を作成することはできますが、地理空間データの上に作成することはお勧めしません。これは複雑性が増し、サポートの制限により予期しない動作が発生する可能性があるためです。
Babelfish では、地理空間関数名がキーワードとして使用され、意図した方法で使用された場合にのみ空間オペレーションを実行します。
ヒント
Babelfish でユーザー定義の関数とプロシージャを作成する際は、組み込みの地理空間関数と同じ名前を使用しないでください。同じ名前の既存のデータベースオブジェクトがある場合は、
sp_rename
を使用して名前を変更します。