Image Extender 提供了四个检索得分的 UDF,可在 SQL 语句中用来检索
表列中已编目图象的得分。得分是双精度浮点值,从 0.0 到接近无穷大的非常大的值。得分越小,图象的特性值与查询中指定的特性值越匹配。得分 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 都返回一个有两列的表,这两列分别用于图象句柄和图象得分;表中的行是按得分升序排列的。结果表中句柄列的名称是 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));