Geoserver图层查询(WFS服务和CQL_FILTER)

背景

最近在搞Geoserver的相关功能适配工作,其中遇到图层查询的操作,故记录一下。

注意:拼接查询参数时需要关注使用的服务版本,即请求参数version的值,如果版本用错有可能会报错或者出现虽然不报错但查不出任何东西的bug,典型例子时cql_filter,之前我version参数给错,导致无论怎么查返回都是空。

WFS地图服务请求

基础请求(不带过滤参数)

http://192.168.50.24:6060/geoserver/myspace/ows?service=WFS&request=GetFeature&version=1.1.0&outputFormat=application/json&TYPENAME=myspace:shijie

service:服务类型,可以是WMS\WFS等;request:请求类型,一般查询时用GetFeature;version:服务版本,具体支持版本查看自己的geoserver;outputFormat:查询输出的格式,一般用application/json,即json格式;TYPENAME:查询的图层名称,一般格式是:命名空间:图层名称

控制图形返回数量

//服务版本为2.0.0时,参数为count;服务版本更早的,参数为maxFeatures。
http://192.168.50.24:6060/geoserver/myspace/ows?service=WFS&request=GetFeature&version=1.1.0&outputFormat=application/json&TYPENAME=myspace:shijie&maxFeatures=1

如下图,实际上也是返回1个图形:
在这里插入图片描述

控制排序

参数为:sortBy
正向排序:

//sortBy=属性名
http://192.168.50.24:6060/geoserver/myspace/ows?service=WFS&request=GetFeature&version=1.1.0&outputFormat=application/json&TYPENAME=myspace:shijie&sortBy=市

倒序排序:

// sortBy=属性名+D
http://192.168.50.24:6060/geoserver/myspace/ows?service=WFS&request=GetFeature&version=1.1.0&outputFormat=application/json&TYPENAME=myspace:shijie&sortBy=市+D

未排序时:
在这里插入图片描述
正向排序(以属性-“市”来排序):
在这里插入图片描述
倒序排序:
在这里插入图片描述

选择性返回图形属性

使用参数:propertyName

// &propertyName=属性1,属性2,属性3
http://192.168.50.24:6060/geoserver/myspace/ows?service=WFS&request=GetFeature&version=1.1.0&outputFormat=application/json&TYPENAME=myspace:shijie&propertyName=市,市代码,geom

在这里插入图片描述

空间查询

固定视野框查询

使用参数bbox:

http://192.168.50.24:6060/geoserver/myspace/ows?service=WFS&request=GetFeature&version=1.1.0&outputFormat=application/json&TYPENAME=myspace:shijie&bbox=111,22,113,24,EPSG:4490

bbox赋值格式:xmin,ymin,xmax,ymax,EPSG:4490(我是这种格式能请求成功,如果不行可以将后面的EPSG:4490拆出来,放到额外的坐标参数那里)。bbox固定视野查询效果如下:
未过滤前:
在这里插入图片描述
bbox过滤后:
在这里插入图片描述

谓词查询

以INTERSECTS(相交)为例:

http://192.168.50.24:6060/geoserver/myspace/ows?service=WFS&request=GetFeature&version=1.0.0&outputFormat=application/json&TYPENAME=myspace:shijie&CQL_FILTER=INTERSECTS(geom,LINESTRING(109 22,120 22))

下图是图层与线段相交的返回结果
在这里插入图片描述
在这里插入图片描述
支持的关系谓词有:( 可参考这个帖子
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
相交用的图形可以是点、线、面。格式是wkt字符串:
点:POINT(120 30)
线:LINESTRING(109 22,120 22)
面:POLYGON((120 30,120 31,121 31,121 30))(按逆时针或顺时针写坐标,且要首尾相接,即第一个点要跟最后一个点相同,示例里是三角形)

属性查询

精确查询

以“=”为例:

http://192.168.50.24:6060/geoserver/myspace/ows?service=WFS&request=GetFeature&version=1.0.0&outputFormat=application/json&TYPENAME=myspace:shijie&CQL_FILTER=shi='广州市'

返回结果:
在这里插入图片描述

模糊查询

情形一:in()

http://192.168.50.24:6060/geoserver/myspace/ows?service=WFS&request=GetFeature&version=1.0.0&outputFormat=application/json&TYPENAME=myspace:shijie&CQL_FILTER=shi in('广州市','梅州市')

返回结果:
在这里插入图片描述
情形二:like
需要注意的是,不能直接用%,否则会报错,需要改成%25才能正确查询

http://192.168.50.24:6060/geoserver/myspace/ows?service=WFS&request=GetFeature&version=1.0.0&outputFormat=application/json&TYPENAME=myspace:shijie&CQL_FILTER=shi like '%25州%25'

返回结果:
在这里插入图片描述

-------------------------------------------------------未完待续------------------------------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值