new OGCSqlToFilterBuilder(options)
service/igs/ogc/support/OGCSqlToFilterBuilder.js, line 2015
| Name | Type | Description |
|---|---|---|
options |
SqlToFilterOptions |
可选
配置选项 |
Example
import { OGCSqlToFilterBuilder } from './support/OGCSqlToFilterBuilder';
const builder = new OGCSqlToFilterBuilder({ version: '1.1.0' });
// 简单比较
const filter1 = builder.build("name = 'Beijing'");
// 复杂逻辑组合:多层嵌套 AND/OR + NOT + 括号优先级
const filter2 = builder.build(
"(status = 'active' AND type = 'residential') OR NOT (owner IS NULL)"
);
// BETWEEN 范围查询(价格区间)
const filter3 = builder.build("price BETWEEN 100000 AND 500000");
// IN 多值查询(多个城市)
const filter4 = builder.build(
"city IN ('北京', '上海', '深圳') AND status = 'active'"
);
// LIKE 模糊匹配(含转义字符的复杂模式)
const filter5 = builder.build(
"address LIKE '%路%号%' AND name LIKE '%小区%'"
);
// IS NULL / IS NOT NULL 组合
const filter6 = builder.build(
"owner IS NOT NULL AND description IS NULL"
);
// 函数比较:面积大于阈值
const filter7 = builder.build("area(shape) > 10000");
// 函数比较:名称转小写后匹配
const filter8 = builder.build(
"strToLowerCase(name) = strToLowerCase('BEIJING')"
);
// 混合查询:空间 + 属性 + 函数组合
const filter9 = builder.build(
"BBOX(shape, 114, 30, 115, 31) AND type = 'building' AND area(shape) > 5000"
);
// 复杂查询:多个 OR 分支 + AND 过滤 + 函数
const filter10 = builder.build(
"(name LIKE '%公园%' OR name LIKE '%广场%' OR name LIKE '%绿地%') " +
"AND area(shape) BETWEEN 1000 AND 50000 AND status = 'public'"
);
// 深层嵌套:NOT 包裹 OR,OR 内部为 AND 组合
const filter11 = builder.build(
"NOT (type = 'private' AND (price < 100 OR area(shape) < 500))"
);
// 空间查询(BBOX/INTERSECTS/WITHIN 等)
const filter12 = builder.build("BBOX(shape, 114, 30, 115, 31)");
// 复合空间查询:空间关系 + 属性过滤 + 面积函数
const filter13 = builder.build(
"INTERSECTS(boundary, $geometry) AND type = 'district' AND " +
"area(boundary) > 1000000 AND name IS NOT NULL"
);
Methods
-
build(sql){string}
service/igs/ogc/support/OGCSqlToFilterBuilder.js, line 2055 -
将 SQL WHERE 条件转换为 Filter XML
Name Type Description sqlstring SQL WHERE 条件
Returns:
Type Description string Filter XML 字符串 -
buildNode(sql){Element}
service/igs/ogc/support/OGCSqlToFilterBuilder.js, line 2088 -
将 SQL WHERE 条件转换为 Filter DOM 节点
Name Type Description sqlstring SQL WHERE 条件
Returns:
Type Description Element Filter 节点 -
escapeXmlAttr()
service/igs/ogc/support/OGCSqlToFilterBuilder.js, line 2246 -
XML 属性转义
-
escapeXmlText()
service/igs/ogc/support/OGCSqlToFilterBuilder.js, line 2236 -
XML 文本转义
-
getError(sql){string|null}
service/igs/ogc/support/OGCSqlToFilterBuilder.js, line 2128 -
获取 SQL 解析错误
Name Type Description sqlstring SQL WHERE 条件
Returns:
Type Description string | null 错误信息 -
getVersion(){string}
service/igs/ogc/support/OGCSqlToFilterBuilder.js, line 2028 -
获取版本
Returns:
Type Description string -
serializeNode(node){string}
service/igs/ogc/support/OGCSqlToFilterBuilder.js, line 2156 -
自定义 XML 序列化方法,保留命名空间前缀
Name Type Description nodeNode Returns:
Type Description string -
setGeometryResolver(resolver)
service/igs/ogc/support/OGCSqlToFilterBuilder.js, line 2044 -
设置几何解析器
Name Type Description resolverfunction 解析函数
-
setVersion(version)
service/igs/ogc/support/OGCSqlToFilterBuilder.js, line 2036 -
设置版本
Name Type Description versionstring -
validate(sql){boolean}
service/igs/ogc/support/OGCSqlToFilterBuilder.js, line 2109 -
验证 SQL 语法
Name Type Description sqlstring SQL WHERE 条件
Returns:
Type Description boolean 是否有效 -
OGCSqlToFilterBuilder.build(sql, version){string}
service/igs/ogc/support/OGCSqlToFilterBuilder.js, line 2267 -
将 SQL WHERE 条件转换为 Filter XML(静态方法)
Name Type Default Description sqlstring SQL WHERE 条件
versionstring '1.1.0' 可选 WFS 版本
Returns:
Type Description string Filter XML 字符串 -
OGCSqlToFilterBuilder.validate(sql){boolean}
service/igs/ogc/support/OGCSqlToFilterBuilder.js, line 2279 -
验证 SQL 语法(静态方法)
Name Type Description sqlstring SQL WHERE 条件
Returns:
Type Description boolean