Geoserver中CQL_FILTER的使用

news2024/11/27 18:41:51

概述

在Geoserver中可通过CQL_FILTER对要素进行过滤,CQL_FILTER即支持属性过滤也支持空间过滤,本文通过实际的例子演示如何使用CQL_FILTER

简介

CQL(Common Query Language)是为OGC目录规范创建的纯文本语言。GeoServer对其进行了调整,使其更易于使用。GeoServer实际上实现了一个更强大的扩展,称为ECQL(Extended CQL)。在GeoServer中,过滤器可以在多种场景中使用:

  • WMS请求中通过filter参数选择在地图上展示的要素
  • WFS请求中通过filter参数过滤返回特定条件的要素
  • SLD样式文件中通过Filter元素根据不同的条件设置不同的样式

条件可以是一个条件,也可以是多个条件。

规则说明
Predicate单个条件
ANDOR多个组合条件
NOT取反条件
(|[ 条件 ]|)通过([控制条件顺序

测试数据

本文中的测试数据是用天地图公共资源中的幼儿园数据,并添加了测试字段,数据和字段情况如下图:
image.png

示例

示例通过Geoserver中图层预览进行演示,如下图,是更进去后的状态。
image.png

1. 属性过滤

1.1 比较运算

比较运算符有等于=、不等于<>、小于 <、小于等于<=、大于> 、大于等于>=。其中=<>支持多种数据类型,如varchar、number、boolean、time等,<<=>>=支持number和time类型。

1)等于=和不等于<>

通过=可过滤值等于某个值的要素,其写法跟sql的语法类似。如下示例中演示了num = 110的结果。
image.png

如下示例中演示了name = '阳光民族幼儿园'的结果。
image.png

通过<>可过滤值不等于某个值的要素,如下示例中演示了num <> 110的结果。
image.png

如下示例中演示了name <> '阳光民族幼儿园'的结果。
image.png

2)<<=>>=

如下示例演示了number和time类型的比较。如条件为num > 290的结果如下图所示。
image.png

1.2 BETWEEN AND值域区间

通过BETWEEN AND可过滤number和time类型的字段的值在某个区间,如下示例,通过num BETWEEN 100 AND 110条件过滤了num值在100-150之间的要素
image.png

1.3 LIKE值匹配

通过LIKE可对varchar和num等类型的字段进行过滤,其写法与SQL类似,如下示例,通过name LIKE '%艺术%'过滤了名称中包含“艺术”儿子的要素。其中:

  • 艺术%,表示以“艺术”开头
  • %艺术,表示以“艺术”结尾
  • %艺术%,表示包含“艺术”二字
    image.png

1.4 IN条件

通过IN设置条件在某一组值中,可对varchar和num等类型的字段进行过滤。如下示例通过num in (110, 120)演示了num为110和120的要素。
image.png

如下示例通过name in ('阳光民族幼儿园', '起点幼儿园')演示了name为阳光民族幼儿园和起点幼儿园的要素。
image.png

1.5 IS NULL

通过IS NULL设置条件判断值为空的要素。如下通过name IS NULL演示了name为空的要素,因为数据中没有name为空的,所以结果为一片空白。
image.png

1.6 NOT 取反

通过NOT 可进行取反操作,如:

  • name NOT in ('阳光民族幼儿园', '起点幼儿园')
    image.png

  • name NOT LIKE '%艺术%'
    image.png

  • num NOT BETWEEN 100 AND 110
    image.png

  • NOT (num <> 110),跟num = 110结果一样
    image.png

  • name IS NOT NULL
    image.png

1.7 时间过滤

时间过滤的条件有:

  • BEFORE ,如time BEFORE '2024-03-31'表示过滤时间在2024-03-31之前的要素
  • DURING,过滤时间在一个时间段内的要素
  • AFTER,如time AFTER '2024-03-31'表示过滤时间在2024-03-31之后的要素

1.8 ANDOR

通过ANDOR可进行多条件组合进行过滤,AND表示多个条件同时满足,OR表示多个条件有一个满足。如name like '%阳光%' and num > 100表示名称包含“阳光”且num大于100的要素。
image.png

2.空间过滤

在Geoserver中支持的空间过滤有:

  • INTERSECTS(Expression , Expression),相交判断,如intersects(the_geom, POLYGON ((106.550313472803 33.6939631715481,111.906007263598 33.5633364937238,111.710067246862 28.8607760920502,106.550313472803 29.3832828033473,106.550313472803 33.6939631715481)))
    image.png

  • DISJOINT(Expression , Expression),相离判断,其结果与INTERSECTS相反,如DISJOINT(the_geom, POLYGON ((106.550313472803 33.6939631715481,111.906007263598 33.5633364937238,111.710067246862 28.8607760920502,106.550313472803 29.3832828033473,106.550313472803 33.6939631715481)))
    image.png

  • CONTAINS(Expression , Expression),CONTAINS(a, b)表示a包含b,使用使需要注意参数的顺序

  • WITHIN(Expression , Expression)WITHIN(a, b)表示a在b里面,使用使需要注意参数的顺序,如WITHIN(the_geom, POLYGON ((106.550313472803 33.6939631715481,111.906007263598 33.5633364937238,111.710067246862 28.8607760920502,106.550313472803 29.3832828033473,106.550313472803 33.6939631715481)))
    image.png

  • TOUCHES(Expression , Expression),边界相交,在边界处至少有一个点相交,但是在内部不相交

  • CROSSES(Expression , Expression),交叉判断,多为线要素和其他要素的判断

  • OVERLAPS(Expression , Expression) ,判断同一类型的要素是否有重叠

  • RELATE(Expression , Expression , pattern),相关联

  • DWITHIN(Expression , Expression , distance , units)DWITHIN(the_geom, POLYGON ((106.550313472803 33.6939631715481,111.906007263598 33.5633364937238,111.710067246862 28.8607760920502,106.550313472803 29.3832828033473,106.550313472803 33.6939631715481)), 3, meters)表示先将b向外扩3m在做逻辑判断,单位可为feet, meters, statute miles, nautical miles, kilometers
    image.png

  • BEYOND(Expression , Expression , distance , units),语法上跟DWITHIN一样,结果上刚好相反,如BEYOND(the_geom, POLYGON ((106.550313472803 33.6939631715481,111.906007263598 33.5633364937238,111.710067246862 28.8607760920502,106.550313472803 29.3832828033473,106.550313472803 33.6939631715481)), 3, meters)
    image.png

  • BBOX(Expression , Number , Number , Number , Number [ , CRS ] ),通过四至进行过滤,其中CRS为非必填参数,如bbox(the_geom, 106.55,28.86, 111.90,33.69)表示过滤四至在106.55,28.86, 111.90,33.69之内的要素。
    image.png

注意:在使用空间过滤时,第一个参数Expression 必须是the_geom,第二个参数是WKT

3.表达式

可用表达式作为过滤条件,如(num / 300) > 0.99表示num / 300运算的结果大于0.99的要素。
image.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1558348.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

批量爬取招聘网站【Boss直聘】上工作岗位的招聘信息

不管是学生还是工作的小伙伴&#xff0c;估计都对不同岗位工作几年的薪酬水平比较感兴趣。本文提供爬取招聘网站&#xff0c;获取某类工作招聘信息的实现逻辑和代码。具体的实施步骤是&#xff1a;明确爬取的招聘网站—确定爬取的工作城市—确定爬取的岗位—获取岗位的招聘子链…

前端学习<二>CSS基础——13-CSS3属性:Flex布局图文详解

前言 CSS3中的 flex 属性&#xff0c;在布局方面做了非常大的改进&#xff0c;使得我们对多个元素之间的布局排列变得十分灵活&#xff0c;适应性非常强。其强大的伸缩性和自适应性&#xff0c;在网页开中可以发挥极大的作用。 flex 初体验 我们先来看看下面这个最简单的布局…

【蓝桥杯嵌入式】六、真题演练(一)-1演练篇:第 届真题

温馨提示&#xff1a; 真题演练分为模拟篇和研究篇。本专栏的主要作用是记录我的备赛过程&#xff0c;我打算先自己做一遍&#xff0c;把遇到的问题和不同之处记录到演练篇&#xff0c;然后再返回来仔细研究一下&#xff0c;找到最佳的解题方法记录到研究篇。 解题记录&#x…

了解 LoadRunner 性能测试软件及其基础使用

目录 一、了解LoadRunner 1、什么是Loadrunner&#xff1f; 2、Loadrunner包括什么组件&#xff1f; &#xff08;1&#xff09;前台组件 &#xff08;2&#xff09;后台组件 二、LoadRunner三大组件 1、VuGen&#xff08;虚拟用户脚本生成器&#xff09; &#xff08;…

2024全开源小狐狸ai付费创作系统V2.8.0

源码介绍 小狐狸GPT付费体验系统的开发基于国外很火的ChatGPT&#xff0c;这是一种基于人工智能技术的问答系统&#xff0c;可以实现智能回答用户提出的问题。相比传统的问答系统&#xff0c;ChatGPT可以更加准确地理解用户的意图&#xff0c;提供更加精准的答案。同时&#x…

算法---动态规划练习-10(删除并获得点数)

题目 1. 题目解析2. 讲解算法原理3. 编写代码 1. 题目解析 题目地址&#xff1a;点这里 2. 讲解算法原理 rob_s函数&#xff1a;这个函数实现了经典的"打家劫舍"问题的算法。使用动态规划的思想&#xff0c;通过填表的方式计算在给定范围内能够获取的最大点数。 f和…

Windows入侵排查

目录 0x00 前言 0x01 入侵排查思路 1.1 检查系统账号安全 1.2 检查异常端口、进程 1.3 检查启动项、计划任务、服务 0x00 前言 当企业发生黑客入侵、系统崩溃或其它影响业务正常运行的安全事件时&#xff0c;急需第一时间进行处理&#xff0c;使企业的网络信息系统在最短时…

PAT(多路复用)配置

PAT&#xff08;多路复用&#xff09; 核心&#xff1a;多个内网IP对应一个公共IP 如下图&#xff1a; 配置命令&#xff1a; 第一步&#xff08;定义访问控制列表&#xff09; access-list 编号 permit 网络地址 反掩码 第二步&#xff08;定义合法的外部IP&#xff09; ip …

杰发科技——Jlink插件使用

0. 简介 杰发自带的烧录工具是ATCLink&#xff0c;基于DapLink适配。个人不太喜欢ATCLink&#xff0c;推荐使用Jlink&#xff0c;毕竟自己买&#xff0c;不用问原厂要&#xff0c;而且带Jlink&#xff0c;至少5Mhz以上。 V9烧录器使用7.50以下版本驱动。 V11烧录器可以使用7…

JavaSE:继承和多态(下篇)

目录 一、前言 二、多态 &#xff08;一&#xff09;多态的概念 &#xff08;二&#xff09;多态实现条件 &#xff08;三&#xff09;多态的优缺点 三、重写 &#xff08;一&#xff09;重写的概念 &#xff08;二&#xff09;重写的规则 &#xff08;三&#xff09;重…

AtCoder+ABC129_Typical Stairs

题目描述 有一个有 N 级台阶的楼梯。高桥现在站在楼梯的脚下&#xff0c;也就是第0个台阶上。他可以一次爬上一个或两个台阶。 但是&#xff0c;编号为a[1] ~ a[m]台阶的踏板都坏了&#xff0c;所以踏上这些台阶很危险。 在不踏上坏掉的台阶的情况下&#xff0c;有多少中方案…

《书生·浦语大模型全链路开源开放体系》学习笔记

书生浦语大模型全链路开源开放体系-学习笔记 大模型成为发展通用人工智能的重要途径专用模型通用大模型 书生大模型开源历程InternLM2回归语言建模的本质主要亮点性能全方位提升强大的内生计算能力 从模型到应用典型流程全链条开源开放体系数据数据集获取预训练微调XTuner 评测…

unipush 2.0流程及踩坑记录(后端调用接口,前端推送)

unipush 在线离线示例 在DCLOUD开发者中心里面创建unipush的应用 如果遇到选择Android 包名后没有自动生成Android 应用签名的话&#xff0c;就是下图这样的。 这个情况多半就是通过直接创建云端证书造成的&#xff0c;没有编辑应用信息 没有云端证书的看这里 在我的应用&…

62岁「御用变态佬」近况曝光。

现年62岁的吴毅将于90年代活跃于香港影坛&#xff0c;因经常扮演黑社会大佬、变态色魔等角色&#xff0c;而被封为影坛御用恶人&#xff0c;其反派形象亦深入民心。北上发展多年的吴毅将&#xff0c;近年不时在内地登台&#xff0c;不过日前却有一段他在台上发恶闹观众的片段被…

作业 二维数组-定位问题

图形相似度 描述 给出两幅相同大小的黑白图像&#xff08;用0-1矩阵&#xff09;表示&#xff0c;求它们的相似度。 说明&#xff1a;若两幅图像在相同位置上的像素点颜色相同&#xff0c;则称它们在该位置具有相同的像素点。 两幅图像的相似度定义为相同像素点数占总像素点数…

Linux下开发调试C++代码的三种方法

目录 准备程序配置vscode的json文件调试使用GDB命令行调试使用core文件调试 一般来说&#xff0c;Linux下做C开发都是用vscode远程连接的方式&#xff0c;这时候调试有三种方式&#xff1a;配置vscode的json文件调试、GDB命令行调试、通过core文件调试。 关于这三种调试方法的…

ssm停车场管理系统

点赞收藏关注 → 私信领取本源代码、数据库 摘 要 随着科学技术的飞速发展&#xff0c;各行各业都在努力与现代先进技术接轨&#xff0c;通过科技手段提高自身的优势&#xff1b;对于停车场管理系统当然也不能排除在外&#xff0c;随着网络技术的不断成熟&#xff0c;带动了停…

【PHP编程使用UI框架】——GET和POST的请求方法

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;开发者-曼亿点 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 曼亿点 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a…

VIVADO IBERT学习

V7的IBERT可以用来测试误码&#xff0c;但是使用中有诸多限制&#xff0c;例化工程测试下效果。 1.IP中例化一个IBERT 2.QUAD代表包含几个4lane的PLL&#xff0c;因为QPLL下面挂4个lane&#xff0c;一个bank包含4条&#xff0c;所以就是bank数量。如果协议层例化为2个&#x…

SQLite版本3中的文件锁定和并发(七)

返回&#xff1a;SQLite—系列文章目录 上一篇&#xff1a;自己编译SQLite或将SQLite移植到新的操作系统&#xff08;六&#xff09; 下一篇&#xff1a;SQLite—系列文章目录 正文&#xff1a; 1.0 SQLite 版本 3 中的文件锁定和并发 SQLite 版本 3.0.0 引入了新的锁…