基于geoserver的WFS空间查询
1 GIS空间要素对象
GIS的要素对象一般由属性数据和几何数据;“id、name、address”字段这些通常被称为属性数据,坐标那些被称为几何数据。OGC根据几何数据将空间要素对象分为Point,MultiPoint,...,MultiPolygon,MultiPolygon等[1],二维空间中,我们简单的分为点(Point)、线(LineString)、面(Polygon)。
2 属性查询与空间查询
属性查询是指属性数据的过滤查询,空间查询是指空间关系的的过滤查询,空间关系分为方位关系、距离关系、拓扑关系。
3 Geoserver对空间查询的支持
点击查询管网(线)的geoserver请求示例:
http://example.com/geoserver/ows?
service=wfs&
version=2.0.0&
request=GetFeature&
typeNames=namespace:featuretype&
outputFormat=application/json&
cql_filter=BBOX(the_geom, xMin,yMin,xMax,yMax)
服务类型(service,必填):空间查询通常选择的是网络要素服务(WFS),支持WMS,WFS,WCS,WPS,WMTS,CSW[2]等服务,如下图:
请求类型(request,必填):通常选择获取要素(GetFeature),支持以下几种类型[3]:
图层(typeNames,必填):geoserver图层名称由工作空间名称:数据存储名称组成,如下图:
输出格式(outputFormat):通常选择json格式,会返回Geojson文档,前端可以直接渲染。支持GML2,GML3,Shapefile,JSON,JSONP,CSV[4].
通用查询语言过滤器(cql_filter):通用查询语言(Command Query Language)既可以实现属性查询,也可以实现空间查询,因CQL存在一些局限性,geoserver对它做了拓展(extend),被称为ECQL[5][6],ECQL支持的空间拓扑关系如下[7]:
关系 | 解释 |
---|---|
INTERSECTS 相交 |
只要符合包含、被包含、接触、交叉、压盖、相等关系,就是相交,与分离互斥 |
DISJOINT (黑色)与(橙色)分离 |
|
CONTAINS (黑色)包含(橙色) |
|
WITHIN (黑色)被包含(橙色) |
|
TOUCHES (黑色)与(橙色)接触 |
|
CROSSES (黑色)与(橙色)交叉 |
|
OVERLAPS (黑色)压盖(橙色) |
|
EQUALS (黑色)与(橙色)相等 |
|
RELATE 九交模型(DE-9IM)参数 |
九交模型(DE-9IM):通过描述A与B的内部(Interior , I),边界(Boundary , B),外部(Exterior , E)之间的关系来表达A与B的拓扑关系,例如分离表达为:FF*FF**** 点:没有边界(Boundary, B) 线:两个端点为边界(Boundary , B),端点之间为内部(Interior , I) 面: |
DWITHIN (黑色)与(橙色)的距离小于阈值 |
距离单位:feet, meters, statute miles, nautical miles, kilometers |
BEYOND (黑色)与(橙色)的距离大于阈值 |
距离单位:feet, meters, statute miles, nautical miles, kilometers |
BBOX (黑色)框选(橙色) |
用左下-右上对角线坐标表示矩形框,xMin,yMin,xMax,yMax |
假设查询与用户绘制的面相离的要素对象,那么过滤器可以写为:DISJOINT(the_geom, POLYGON((-90 40, -90 45, -60 45, -60 40, -90 40)))
。,因此,前端人员需要了解如何构造几何体,可以参考PostGIS的几何体构造函数[8]:
- 创建时间: 20211119-5_16.21
- 更新时间: 2021.12.20.1_10.44.18
- 版权作者: 贝可考拉
- 当前版本: v1.0
- 标签分类: #编程开发 #gis #geoserver
- 索引编号: 324
[9]: Leaflet结合wms和wfs实现点击选中要素_u011505575的博客-CSDN博客_leaflet wms 过滤