GeoServer中使用WFS进行条件查询

介绍

OGCWebFeatureService(WFS)接口标准定义了一组接口,用于在Internet上访问要素和要素属性级别的地理信息。特征是对现实世界现象的抽象,也就是说,它代表了世界上可以找到的任何事物。地理要素的属性或特征称为要素特性。WFS提供了检索或查询地理要素的方法,这种方法独立于它们发布的底层数据存储。如果WFS被授权这样做,该服务还可以更新或删除地理特征。WFS的实例还能够存储查询,以便使客户机应用程序能够在稍后的时间点检索或执行查询。

使用

WFS标准通过高度可配置的界面提供地理要素数据。默认情况下,WFS返回的数据使用地理标记语言(GML),GML是作为可扩展标记语言(XML)编写的。不过,该标准的新版本也将支持JavaScript对象表示法(JSON)。政府机构、私人组织和学术机构使用本标准发布矢量地理空间数据集,以便于接收机构编制新地图或对所提供数据进行分析。

WFS提供了一个标准接口,用于请求由地理要素及其特性组成的矢量地理空间数据。这样做的好处是,WFS客户端可以从多个WFS服务器请求源数据,然后呈现数据以便在客户端上显示,或者作为工作流的一部分进一步处理数据。该标准保证可以与其他数据一致地访问数据。还可以一致地访问使用常见数据类型(如文本字符串、日期和时间)编码的特征属性。

借鉴官方文档

支持的数据格式

支持CSV、GML2、GML3.1、GML3.2、GeoJSON、KML、Shapefile、text/csv等格式的数据

JSON查询

这里我使用一个矢量数据来演示效果,GeoServer发布矢量数据的过程这里就不演示了

如图所示可以看到GeoServer对于矢量数据WFS的支持很好,格式如下:

GSV、GML2、GML3.1、GML3.2、GeoJSON、KML、Shapefile、text/csv

点击GeoJSON会返回所有的数据(JSON格式),如图所示:

直接查询

WFS是支持条件查询的,在查询条件不是很复杂的时候,可以使用WFS来进行简单的查询。

WFS支持CQL查询语句,类似于关系型数据的SQL语句。

简单的查询示例:

http://localhost:8080/geoserver/tiger/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=tiger%3Apoly_landmarks&maxFeatures=50&outputFormat=application%2Fjson

放到postman中可以看到查询条件如下:

  • service=WFS(指定服务的类型)
  • version=1.00(指定服务版本)
  • typeName=图层名(GeoServer中工作区+名称)
  • request=GetFeature(指定为获取数据方式)
  • maxFeatures=50(指定最大返回数量)
  • outputFormat(返回数据类型)

返回数据格式如下:

条件查询

等值查询

根据单个属性来查询数据,查询出符合改字段值的所有对象

http://localhost:8080/geoserver/wuxi/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=wuxi%3A%E6%97%A0%E9%94%A1%E5%B8%82%E9%94%A1%E5%B1%B1%E5%8C%BA%E8%A7%A3%E8%AF%91%E7%9F%A2%E9%87%8F_%E6%89%A7%E6%B3%95%E5%9B%BE%E6%96%91_5%E6%9C%88-6%E6%9C%88&maxFeatures=50&outputFormat=application%2Fjson&cql_filter="TBLX"=11
  • cql_filter(查询条件)

这里是查询TBLX为11的数据,可以看到返回的数据格式下:

模糊查询

有时候我们需要对熟悉模糊查询,这里我举个例子:我在地图上要加载南京市下所有的区县边界数据,但我的图层是全江苏省的区县,我需要只取出南京所属的数据即可,这里就可以使用模糊查询。我们以南京的行政区划代码进行模糊查询(3201),6位的区县代码前4位都是市级代码。

http://localhost:8080/geoserver/division/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=division%3Acounty_line&maxFeatures=50&outputFormat=application%2Fjson&cql_filter=%22pac%22+like+%27%253201%25%27

添加条件:&cql_filter=%22pac%22+like+%27%253201%25%27

我们就拿到了南京下所属的区县边界数据了

指定坐标系查询

我们在发布矢量数据的时候,坐标系可能各种各样,但我们地图中需要的是指定坐标系比如WGS84经纬度坐标(4326),这个时候就需要指定坐标系来返回数据。

我们看一下默认坐标系数据请求结构

http://localhost:8080/geoserver/changshu/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=changshu%3A2021_2_JC_FLHJCSJ&maxFeatures=50&outputFormat=application%2Fjson

返回数据结构如下图:

我们最终需要的是4326坐标系的数据,我们修改一下wfs请求如下:

http://localhost:8080/geoserver/changshu/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=changshu%3A2021_2_JC_FLHJCSJ&maxFeatures=50&outputFormat=application%2Fjson&srsname=EPSG:4326

添加:&srsname=EPSG:4326,指定坐标系

指定范围查询

我们也可以指定范围返回数据

原始数据请求,有4441行数据

http://localhost:8080/geoserver/changshu/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=changshu%3A2021_2_JC_FNHJCSJ&maxFeatures=50&outputFormat=application%2Fjson

添加范围条件后,查询出2683行数据

http://localhost:8080/geoserver/changshu/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=changshu%3A2021_2_JC_FNHJCSJ&maxFeatures=50&outputFormat=application%2Fjson&BBOX=40590235.65602544%2C3505954.1021578796%2C40592068.091087505%2C3507395.235982733

添加条件:&BBOX=40590235.65602544%2C3505954.1021578796%2C40592068.091087505%2C3507395.235982733

其他参考

GeoServer中使用WFS进行条件查询相关推荐

  1. jpa中使用Query判断条件查询

    jpa中使用Query判断条件查询 @Query(value = " select m.* from mining_area as m " +" where 1 = 1& ...

  2. MySQL中SQL命令语句条件查询

    一.聚合函数 聚合函数:又叫组函数,用来对表中的数据进行统计和计算,结合group by分组使用,用于统计和计算分组数据 常用聚合函数 count(col):求指定列的总行数 max(col):求指定 ...

  3. linq to sql 中,如何解决多条件查询问题,答案,用表达式树! (下)

    ,我们做了基于linq to sql 的多条件组合查询,但通过监视数据库发现,这样做的成本比较高,每次都要取出全部的数据到内存进行筛选.如何从真正意义上做到延迟加载,即一次只从数据库中取我们需要的用到 ...

  4. mysql分组和where条件查询,mysql中where和having条件查询的区别

    having一般跟在group by后面,先对查询结果分组,再根据having条件,筛选满足条件的组,限制字段最好选择分组的字段,可以操纵使用聚合函数(sum().count().avg()等)的列, ...

  5. java中pageInfo分页带条件查询+查询条件的回显

    代码如下:解析在下边 <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %&g ...

  6. SqlServer中的SmallDatetime作为条件查询的截至日期问题!

    在数据表中字段A的类型为SmallDatetime,如果要查询词表数据并以A字段为查询条件 例:select * from Table_A where A between '2017-04-01 00 ...

  7. mysql list集合查询_MyBatis 传入List集合作为条件查询数据

    使用的是SSM框架,数据库是MySQL,做查询的时候传入List集合,使用SQL语句的in方式查询数据 主要有两点问题:我的List集合是利用的另外一个语句查询出来的,传入参数是int类型,返回值是i ...

  8. geoserver wfs 多条件属性查询

    1.使用实例:http://localhost:8080/geoserver/图层名称/wfs?service=wfs&request=GetFeature&version=1.1.0 ...

  9. vue项目中使用cesium且使用geoserver服务,实现条件查询及拿到过滤之后的json数据

    如图所示,geoserver上有自带查询功能,我们使用cesium之后,搭配geoserver的瓦片服务,也需要这个条件查询怎么办? 解决办法:使用cql_filter 其中searchName为查询 ...

最新文章

  1. golang channel 管道 有无缓存的区别
  2. Python中读取文件中的json串,并将其写入到Excel表格中
  3. 自研开源框架 Midway Serverless ,让前端提效 50% 背后的故事
  4. 600W个微信红包封面,人人都能领取到!!!
  5. 使用south实现Django的数据库升级迁移
  6. 查看tensorflow是否支持GPU,以及测试程序
  7. Leetcode每日一题:191.number-of-1-bits(位1的个数)
  8. 使用电脑时,眼睛离电脑多远才合适
  9. Dynamic web project下SSM整合
  10. c语言编译音乐简谱,单片机音乐曲谱_单片机c语言音乐简谱代码
  11. 携号转网查询接口API,手机号码归属地及运营商查询接口
  12. 微机计算机原理及应用马义德,微型计算机原理及应用答案讲述.doc
  13. python 绘制频数与正太分布图
  14. WineBottler for Mac (Mac运行exe程序) 使用教程
  15. springboot整合dubbo时连接zookeeper——天坑
  16. 怎样删掉应用宝统一连接服务器,电脑应用宝连不上手机 电脑应用宝连不上手机处理方法...
  17. 新一代视频压缩技术 H.265 解析
  18. 如何破解Word“取消文档保护”密码
  19. java tm已被阻止_win7系统不能运行java提示“应用程序已被安全设置被阻止”的解决方法...
  20. 融创向新乐视提供17.9亿 孙宏斌解局对乐视动作频频

热门文章

  1. java dropdownlist_保持dropdownlist选中值
  2. 一台计算机地址线32根,32根地址线内存多少
  3. Linux02—文本编辑命令、用户管理、组管理、权限管理
  4. 中富金石首席分析师 马力老师27年股市人生
  5. 远程租用的服务器被拒绝,租用服务器远程不上怎么处理?
  6. 正交解调 matlab,MATLAB正交振幅调制解调仿真分析(一)_通信工程毕业论文范文
  7. python alpha策略_从零开始学量化:04阿尔法策略
  8. FISCO BCOS 查看当前区块链节点的ID
  9. Oracle 常见错误总结(如:ORA-XXXXX)及问题解决方法
  10. 蓝懿ios 技术内容和心得交流分享 11.2 打飞机主要步骤