概要
多次元幾何オブジェクト geometric型の仕様
行列オブジェクト matrix型の仕様
多次元幾何オブジェクト geometric型の仕様
| geometric型がサポートしている幾何データの種類 |
長方形あるいは直方体のような、座標軸に平行なボックス領域を扱います。ボックス領域の対角2座標を指定することにより表現します。sqlでの表現は以下の通りです(3次元の場合)。
'(x,y,z)[](x,y,z)'
(次元数+1)点以下の座標の集まりにより表現できる形状のうち、もっとも単純で明快な形状を扱います。sqlでの表現は以下の通りです(3次元の場合)。
'(x,y,z)' --- 点 '(x,y,z)*(x,y,z)' --- 線分 '(x,y,z)*(x,y,z)*(x,y,z)' --- 三角形 '(x,y,z)*(x,y,z)*(x,y,z)*(x,y,z)' --- 四面体
| geometric型がサポートしている関数 |
オブジェクトの種類を取得します。取得できる値は以下のとおりです。
値 種類 box ボックス primitive プリミティブ
オブジェクトが何次元の要素で構成されているかを取得します。
オブジェクトがいくつの点を持っているかを取得します。
第2引数の座標が格納されたオブジェクトから第1引数で指定した構成要素を取り出します。指定できるものは以下のとおりです。
要素名 意味 dim<整数> <整数>で指定した次元要素の値(“dim1”で1次元目) x 1次元目の要素の値 y 2次元目の要素の値 z 3次元目の要素の値 point<整数> <整数>番目の点の座標値(“point1”で1点目) start 開始点 end 終了点 center 開始点と終了点の中点
2つのオブジェクトが等しいかテストします。2つが合同であっても座標の指定の方法などが厳密に一致しなければ、falseとなります。
下記のオペレータと等価です。
geometric = geometric
2つのオブジェクトが合同かテストします。
下記のオペレータと等価です。
geometric ~= geometric
第1引数のオブジェクトが、第2引数のオブジェクト全体を含んでいるかテストします。
下記のオペレータと等価です。
geometric ~ geometric
第1引数のオブジェクトが、第2引数のオブジェクトに完全に含まれているかテストします。
下記のオペレータと等価です。
geometric @ geometric
2つのオブジェクトが一部でも重複しているかテストします。
下記のオペレータと等価です。
geometric && geometric
2つのオブジェクトを完全に含むオブジェクトを生成します。出力結果は常にボックスです。
すでに仕様変更の予感あり。
2つのオブジェクトの重複している部分のみを表すオブジェクトを生成します。この関数では、最初に2つのオブジェクトを境界矩形(BOUND BOX)に変換してから演算します。出力結果は常にボックスです。重複している部分がない場合にはNULLを返します。
すでに仕様変更の予感あり。
オブジェクトの容量(面積や体積)を計算します。オブジェクトがプリミティブの場合は、その境界矩形(BOUND BOX)の容量を出力します。この仕様は単に手抜きですが、いずれきちんと実装する予定です。
オブジェクトを座標変換します。第1引数をA、第2引数をM、返り値をBとすると、次の計算式と概念が似ています。
B = A M
この関数では平行移動をサポートするために、変換する幾何オブジェクトの次元数より1行以上大きな変換行列を与える必要があります。
3次元の場合の考え方は以下のとおりです。
[X, Y, Z, 1] = [X0, Y0, Z0, 1] * [M11, M12, M13, 0] [M21, M22, M23, 0] [M31, M32, M33, 0] [M41, M42, M43, 1](X0, Y0, Z0) は変換前の座標値、(X, Y, Z) は変換後の座標値です。M??を含む行列は変換行列です。なお、(M11〜M33) までの各数値は回転やスケーリングを、(M41, M42, M43) の各数値は平行移動を制御します。
下記のオペレータと等価です。
geometric ** matrix
オブジェクトを平行移動します。指定する行列は行ベクトル扱いです。つまり1行×N桁の行列とします。
下記のオペレータと等価です。
geometric + matrix
オブジェクトを逆方向に平行移動します。指定する行列は行ベクトル扱いです。つまり1行×N桁の行列とします。
下記のオペレータと等価です。
geometric - matrix
多次元幾何オブジェクトを浮動小数点に変換します。多次元幾何オブジェクトは1点1次元でなければなりません。この機能は、暗黙の型変換としても行われます。
浮動小数点を多次元幾何オブジェクトに変換します。変換された多次元幾何オブジェクトは1点1次元になります。この機能は、暗黙の型変換としても行われます。
| geometric型がサポートしているオペレータ |
2つのオブジェクトが等しいかテストします。2つが合同であっても座標の指定の方法などが厳密に一致しなければ、falseとなります。rtreeアクセスメソッドによるインデックス検索には利用できません(このオペレータではシーケンシャルスキャンになります)。
下記の関数と等価です。
geometric_equal(geometric, geometric) returns bool
2つのオブジェクトが合同かテストします。rtreeアクセスメソッドによるインデックス検索に利用できます。
下記の関数と等価です。
geometric_same(geometric, geometric) returns bool
第1引数のオブジェクトが、第2引数のオブジェクト全体を含んでいるかテストします。
rtreeアクセスメソッドによるインデックス検索に利用できます。下記の関数と等価です。
geometric_contains(geometric, geometric) returns bool
第1引数のオブジェクトが、第2引数のオブジェクトに完全に含まれているかテストします。
rtreeアクセスメソッドによるインデックス検索に利用できます。下記の関数と等価です。
geometric_contained(geometric, geometric) returns bool
2つのオブジェクトが一部でも重複しているかテストします。rtreeアクセスメソッドによるインデックス検索に利用できます。
下記の関数と等価です。
geometric_overlaps(geometric, geometric) returns bool
オブジェクトを座標変換します。
下記の関数と等価です。
geometric_transform(geometric, matrix) returns geometric
オブジェクトを平行移動します。
下記の関数と等価です。
geometric_shift(geometric, matrix) returns geometric
オブジェクトを逆方向に平行移動します。
下記の関数と等価です。
geometric_nshift(geometric, matrix) returns geometric
Copyright (c) 1999 InterWIZ <staff@interwiz.koganei.tokyo.jp>,
All rights reserved.
Supported by MINISTRY OF POSTS AND TELECOMMUNICATIONS (MPT) of japan
Supported by NTT Communications Corporation
Supported by KOKUSAI KOGYO CO., LTD.
インターウィズはこのプロジェクトにおいて、
郵政省のGIS技術開発プログラムの一環として活動しています。