目的
GeometryのWKB (Well-Known Binary)表現を使用してGeometry型の値を設定します。
構文
void FNC_GeomGetWKB(GEO_HANDLE geoHandle, byte* wkb, FNC_GeomSize_t wkbSize, int srid)
- GEO_HANDLE geoHandle
- UDF/UDMの戻り値であると定義されているか、または外部ストアド プロシージャに対するINOUT/OUTパラメータであると定義されている、ジオメトリ型へのハンドル。
- byte* wkb
- 設定するWKB値へのポインタ。
- FNC_GeomSize_t wkbSize
- WKB値のバイト単位のサイズ。
- int srid
- 設定するジオメトリの空間参照系の識別子。
使用上の注意
FNC_GeomSetWKBは、WKBバイト文字列を使用してジオメトリの値を設定します。ジオメトリに対して設定される、WKB文字列を含むwkbパラメータ、wkbSize、およびSRIDが入力として渡されます。
FNC_GeomSetWKBはインラインST_Geometry値に対してのみ呼び出す必要があります。LOBベースのST_Geometry値と使用されると、次の7579エラーが発生します: FNC_GeomSetWKBは、インラインのST_Geometry値に対してのみ有効です。
例: FNC_GeomGetWKBおよびFNC_GeomSetWKBを使用してジオメトリのWKBを取得および設定する
次のUDFはST_Geometryパラメータを入力として取り、WKB表現を取得し、それで戻りST_Geometry値を設定します。ジオメトリ サイズは小さく、読み取りには単一の読み取りで十分であると想定されます。
CREATE FUNCTION geomUDF3(P1 st_geometry) RETURNS ST_GEOMETRY NO SQL PARAMETER STYLE SQL DETERMINISTIC LANGUAGE C EXTERNAL NAME 'CS!geomUDF3!geomUDF3.c'; void geomUDF3(GEO_HANDLE* geom_handle, GEO_HANDLE* return_handle, int* indicator_thisGeom, int* indicator_returnValue, char sqlstate[6], SQL_TEXT extname[129], SQL_TEXT specific_name[129], SQL_TEXT error_message[257] ) { FNC_GeomSize_t geomsize; FNC_GeomSize_t bytesRead; FNC_GeomSize_t offset; FNC_GeomSize_t size; FNC_GeomSize_t wkbSize; byte* wkbBuffer; FNC_GeomSize_t wkbBufferSize; int srid; /* Get the Geometry WKT Size */ geomsize = FNC_GeomGetWKBSize(*geom_handle); /* Read the WKB value */ wkbBuffer = (byte*)FNC_Malloc(geomsize); wkbBufferSize = geomsize; size = geomsize; offset = 0; /* Get the WKB value */ FNC_GeomGetWKB(*geom_handle,wkbBuffer, wkbBufferSize, &wkbSize, &srid); /* Set the return value */ FNC_GeomSetWKB(*return_handle, wkbBuffer, wkbSize,0); *indicator_returnValue = 0; FNC_free(wkbBuffer); }