空間演算関数は、空間幾何オブジェクトに対して、形状の変更、幾何学的関係の計算、空間クエリ、その他の種類の空間分析など、さまざまな操作や変換を行うために使用されます。
OceanBaseデータベースが現在サポートしている幾何処理関数には、_ST_MakeValid() が含まれます。
_ST_MakeValid
地理情報システム(GIS)では、空間データは一定の有効性基準を満たす必要があります。有効な多角形とは、単純で(自己交差しない)かつ正しく囲まれている(外側の輪郭は時計回り、内側の輪郭は反時計回り)ものであり、無効な多角形には自己交差、輪郭の重複、穴の露出などの幾何学的誤りが含まれる可能性があります。
_ST_MakeValid 関数は、無効な幾何図形(例えば多角形)を修正し、有効な幾何図形にするために使用されます。また、この関数は投影座標系のみをサポートし、地理座標系はサポートしていません。
投影座標系のサポート:この関数の入力として期待される幾何オブジェクトは、地理座標系ではなく投影座標系を使用します。投影座標系とは、地上の位置を2つの座標で表す平面座標系です。
地理座標系のサポートなし:地理座標系は地球の経緯度に基づくシステムであり、地球の曲率を考慮しています。
_ST_MakeValid関数は地理座標系をサポートしておらず、入力される幾何オブジェクトは経緯度に基づく座標であってはなりません。
構文は以下のとおりです:
_ST_MakeValid(geometry input)
パラメータの説明:
geometry input:これは関数の入力パラメータであり、修正が必要な幾何オブジェクトを表します。これは点(Point)、線(LineString)、多角形(Polygon)など、任意のタイプの幾何図形にすることができます。
例:
obclient> select st_astext(_st_makevalid(st_geomfromtext('POLYGON((0 0,1 1,2 2,0 2,1 1,2 0,0 0))')));
この例では、最初に st_geomfromtext('POLYGON((0 0,1 1,2 2,0 2,1 1,2 0,0 0))') がテキスト形式の多角形を幾何オブジェクトに変換します。テキスト文字列 'POLYGON((0 0,1 1,2 2,0 2,1 1,2 0,0 0))' は、多角形の頂点座標のシーケンスを表しますが、この多角形は頂点が自己交差しているため無効です。
次に、_st_makevalid(...) 関数が、渡された無効な多角形の幾何オブジェクトを修正し、有効な多角形にします。
最後に、st_astext(...) が修正後の幾何オブジェクトを再びWell-Known Text(WKT)形式に変換します。
実行結果は次のとおりです:
+-------------------------------------------------------------------------------------+
| st_astext(_st_makevalid(st_geomfromtext('POLYGON((0 0,1 1,2 2,0 2,1 1,2 0,0 0))'))) |
+-------------------------------------------------------------------------------------+
| MULTIPOLYGON(((1 1,2 2,0 2,1 1)),((1 1,0 0,2 0,1 1))) |
+-------------------------------------------------------------------------------------+
1 row in set