空間演算関数は、空間幾何オブジェクトに対して様々な操作や変換を行うために使用されます。これには、形状の変更、幾何的関係の計算、空間クエリ、その他の種類の空間分析が含まれます。
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