Filter

过滤函数参考

https://docs.geoserver.org/stable/en/user/filter/function_reference.html#filter-function-reference

CQL_Filter

https://docs.geoserver.org/stable/en/user/tutorials/cql/cql_tutorial.html

filterToString()

/**
 * 将 Filter 对象编码为 xml 字符串,可在 WMS 的 GET 请求中作为 "FILTER" 查询参数使用
 * @param {import('ol/format/filter/Filter').default} filter 
 * @returns 
 */
function filterToString(filter) {
    var featureRequest = new WFS().writeGetFeature({
        featureTypes: ['required'],
        filter,
    });
    var fr = new XMLSerializer().serializeToString(featureRequest);
    // console.log('WFS查询请求');
    // console.log(fr);
    var xml = new DOMParser().parseFromString(fr, 'text/xml');
    var filter = xml.getElementsByTagName('Filter')[0];
    var str_filter = filter?.outerHTML;
    return str_filter;
}

var query_string_of_filter = filterToString(Filter.like('name', 'test'));

由于 writeGetFeature() 返回的是 XML 节点 Node,所以可以简化为:

/**
 * 将 Filter 对象编码为 xml 字符串,可在 WMS 的 GET 请求中作为 "FILTER" 查询参数使用
 * @param {import('ol/format/filter/Filter').default} filter 
 * @returns 
 */
function filterToString(filter) {
    return new WFS().writeGetFeature({
        featureTypes: ['required'],
        filter,
    }).getElementsByTagName('Filter')[0]?.outerHTML;
}

END

posted @ 2021-08-27 09:50  develon  阅读(80)  评论(0编辑  收藏  举报