Image Extender 提供四個可用於 SQL 陳述式的 UDF, 來擷取表格直欄中已編目影像的分數。
score 指範圍從 0.0 到無限大的加倍精準度浮點值。score 越低表示與符合查詢中所指定特性值的影像特性值越接近。score 值 0.0 表示影像完全相符。
UDF 如下:
建議︰ 使用 QbScoreFromStr UDF,取得單一已編目影像的分數。使用 QbScoreTBFromStr UDF,以取得表格直欄中多個已編目影像的分數。
使用 QbScoreFromStr UDF, 取得表格直欄中單一已編目影像的分數。將作為輸入的查詢字串指定給 QbScoreFromStr UDF。 如果您使用 QbScoreFromName UDF, 可以指定作為輸入的查詢物件名稱給 QbScoreFromName UDF。使用其中一個 UDF, 您也可以指定含有目標影像的表格直欄名稱。
在下列查詢中,可使用 QbScoreFromStr UDF, 尋找表格直欄中平均色分數最接近紅色的已編目影像。
SELECT name, description decimal (QbScoreFromStr(swatch_img, 'QbColorFeatureClass color=<255, 0, 0>'), /* query string * 10, 5) AS score FROM fabric /* table column */ ORDER BY score
使用 QbScoreTBFromStr UDF,以取得表格直欄中多個已編目影像的分數。如果您有指名的查詢,可以使用 QbScoreTBFromName UDF。這兩個 UDF 會傳回影像 handle 和分數的兩個直欄表格;而表格中橫列是以分數的遞增次序排列。 結果 表格中的 handle 直欄名稱是 IMAGE_ID,分數直欄名稱是 SCORE。
將作為輸入的查詢字串指定給 QBScoreTBFromStr UDF。 指定作為輸入的查詢物件名稱給 QbScoreTBFromName UDF。 使用其中一個 UDF, 您也可以指定含有目標影像的直欄和表格名稱。 您也可以指定傳回結果表格中的最大橫列數目。 如果您沒有指定最大結果數目,則 UDF 會為目標表格直欄中每一個已編目影像傳回一橫列。
在下列查詢中,可使用 QbScoreTBFromStr UDF, 尋找表格直欄中紋理最接近伺服器檔中影像的 10 個已編目影像。
SELECT name, description FROM fabric WHERE CAST (swatch_img as varchar(250)) IN SELECT CAST (image_id as varchar(25)) FROM TABLE (QbScoreTBFromStr (QbTextureFeatureClass file=<server,"patterns/ptrn07.gif">' /*query string */ 'fabric', /* table */ 'swatch_img', /* table column */ 10)) /* maximum number of results */ AS T1));