前言:
OGC wfs 空间查询 几乎所有的GIS厂商都会支持OGC 标准。但有一点不好的就是OGC标准虽然通用可是用起来繁琐,需要构建XML请求参数比较难受;对应的各个GIS服务厂商出了对应的查询服务,比较熟悉的有超图的rest查询服务,而geoserver对应的cql空间查询。
OGC wfs空间查询
空间查询种类
<Intersects>- 测试两个几何是否相交
<Disjoint>- 测试两个几何是否不相交
<Contains>- 测试几何是否包含另一个几何
<Within>- 测试几何是否在另一个之内
<Touches>- 测试两个几何体是否接触
<Crosses>- 测试两个几何图形是否交叉
<Overlaps>- 测试两个几何图形是否重叠
<Equals>- 测试两个几何是否在拓扑上相等
点线面构造
参考文档:https://www.ogc.org/standards/wfs
--- 点构造方式
<gml:Point>
<gml:coordinates>106.00,36.00</gml:coordinates>
</gml:Point>
--- 线构造方式
<gml:LineString>
<gml:coordinates>146.62903,-41.85171 147.27448,-42.18130</gml:coordinates>
</gml:LineString>
--- 面构造方式
<gml:Polygon>
<gml:outerBoundaryIs>
<gml:LinearRing>
<gml:coordinates> 93.6474609375,37.10776507118514 93.01025390625,35.17380831799959 95.11962890625,33.54139466898275 97.53662109375,33.54139466898275 99.25048828124999,33.96158628979907 99.97558593749999,35.191766965947394 93.6474609375,37.10776507118514</gml:coordinates>
</gml:LinearRing>
</gml:outerBoundaryIs>
</gml:Polygon>
构造查询条件
--通过空间查询规则和点线面数据构造方式我们可以组装对应的查询条件
http://localhost:8010/geoserver/nxgc/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=nxgc%3Anx_city&maxFeatures=50&outputFormat=application%2Fjson&filter=<Filter xmlns="http://www.opengis.net/ogc" xmlns:gml="http://www.opengis.net/gml">
<Intersects>
<PropertyName>geom</PropertyName> //这里对应数据库中的矢量数据字段名称
<gml:Point>
<gml:coordinates>106.00,36.00</gml:coordinates> //这里是点数据坐标
</gml:Point>
</Intersects>
</Filter>
cql空间查询
空间查询类型和OGC同步换成大写就成
点线面构造
--点构造方式
POINT(106.00,36.00)
--线构造方式
LINESTRING((106.00 36.00,106.00 36.10))
--面构造方式
POLYGON((-90 40, -90 45, -60 45, -60 40, -90 40))
构造查询条件
http://localhost:8010/geoserver/nxgc/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=nxgc%3Anx_city&maxFeatures=50&outputFormat=application%2Fjson&
INTERSECTS(geom, POINT(106.00,36.00))