目的
MBB(最小外接ボックス)型を定義するxmin、ymin、zmin、xmax、ymax、およびzmax座標を表わす6つの倍精度値を含むバッファを返します。
構文規則
void FNC_MBBGetValue(GEO_HANDLE mbbHandle, double * mbbBuffer, int * mbbSize )
- GEO_HANDLE mbbHandle
- 外部ルーチンへの入力パラメータとして定義されたMBB型へのハンドル。
- double* mbbBuffer
- MBBを定義する6つの倍精度値を保持するバッファへのポインタ。
- int* mbbSize
- mbbBufferバッファで返される値のバイト単位のサイズ。
使用上の注意
FNC_MBRGetValueは、MBB型のxmin、ymin、zmin、xmax、ymax、およびzmaxの値を取得します。値は6つの倍精度値としてmbbBufferに返されます。関数の呼び出し側は、6つの倍精度値を保持するために十分なmbbBufferバッファのメモリを割り当てる必要があります。
例: FNC呼び出しを使用してMBB型の値を取得する
次の関数はMBB型パラメータを取得し、MBBを定義するxmin、ymin、zmin、xmax、ymax、およびzmaxの値を表わす6つの倍精度値の配列を返します。
CREATE TYPE MBB_ARRAY AS DOUBLE PRECISION ARRAY[6];
CREATE FUNCTION mbbUDF1(P1 MBB)
RETURNS MBB_ARRAY
NO SQL
PARAMETER STYLE SQL
DETERMINISTIC
LANGUAGE C
EXTERNAL NAME 'CS!mbbUDF1!mbbUDF1.c';
void mbbUDF1 (GEO_HANDLE* mbb_handle,
ARRAY_HANDLE* resultArray,
int* indicator_thismbb,
int* indicator_Result,
char sqlstate[6],
SQL_TEXT extname[129],
SQL_TEXT specific_name[129],
SQL_TEXT error_message[257] )
{
double* mbbBuffer;
int returnSize;
int mbbBufferSize;
array_info_t arrayInfo;
bounds_t arrayScope[FNC_MAXARRAYDIMENSIONS];
NullBitVecType *NullBitVector;
mbbBufferSize = 6 * SIZEOF_DOUBLE_PRECISION;
mbbBuffer = (double*)FNC_Malloc(mbbBufferSize);
/* Get the MBB value */
FNC_MBBGetValue(*mbb_handle,mbbBuffer,&returnSize);
/* get element type information for the ARRAY */
FNC_GetArrayTypeInfo(*((ARRAY_HANDLE*)resultArray),
&arrayInfo,
arrayScope);
/* Allocate a new NullBitVector */
NullBitVector = (NullBitVecType*)FNC_malloc(1);
/* Set array elements within the range. */
FNC_SetArrayElementsWithMultiValues(
*((ARRAY_HANDLE*)resultArray),
arrayScope,
(void*)mbbBuffer,
mbbBufferSize, NullBitVector,1);
*indicator_Result = 0;
FNC_free(NullBitVector);
FNC_free(mbbBuffer);
}