目的
MBR (最小外接矩形)タイプを定義するxmin、ymin、xmax、およびymax座標を表わす4つの倍精度値を含むバッファを返します。
構文
void FNC_MBRGetValue(GEO_HANDLE mbrHandle, double * mbrBuffer, int * mbrSize )
- GEO_HANDLE mbrHandle
- 外部ルーチンへの入力パラメータとして定義されたMBR型へのハンドル。
- double* mbrBuffer
- MBRを定義する4つの倍精度値を保持するバッファへのポインタ。
- int* mbrSize
- mbrBufferバッファで返される値のバイト単位のサイズ。
使用上の注意
FNC_MBRGetValueは、MBR型のxmin、ymin、xmax、およびymaxの値を取得します。値は4つの倍精度値としてmbrBufferに返されます。関数の呼び出し側は、4つの倍精度値を保持するために十分なmbrBufferバッファのメモリを割り当てる必要があります。
例: FNC呼び出しを使用してMBR型の値を取得する
次の関数はMBR型パラメータを取得し、MBRを定義するxmin、ymin、xmax、およびymaxの値を表わす4つの倍精度値の配列を返します。
CREATE TYPE MBR_ARRAY AS DOUBLE PRECISION ARRAY[4];
CREATE FUNCTION mbrUDF1(P1 MBR)
RETURNS MBR_ARRAY
NO SQL
PARAMETER STYLE SQL
DETERMINISTIC
LANGUAGE C
EXTERNAL NAME 'CS!mbrUDF1!mbrUDF1.c';
void mbrUDF1 (GEO_HANDLE* mbr_handle,
ARRAY_HANDLE* resultArray,
int* indicator_thismbr,
int* indicator_Result,
char sqlstate[6],
SQL_TEXT extname[129],
SQL_TEXT specific_name[129],
SQL_TEXT error_message[257] )
{
double* mbrBuffer;
int returnSize;
int mbrBufferSize;
array_info_t arrayInfo;
bounds_t arrayScope[FNC_MAXARRAYDIMENSIONS];
NullBitVecType *NullBitVector;
mbrBufferSize = 4 * SIZEOF_DOUBLE_PRECISION;
mbrBuffer = (double*)FNC_Malloc(mbrBufferSize);
/* Get the MBR value */
FNC_MBRGetValue(*mbr_handle,mbrBuffer,&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*)mbrBuffer,
mbrBufferSize, NullBitVector,1);
*indicator_Result = 0;
FNC_free(NullBitVector);
FNC_free(mbrBuffer);
}