Geoserver 2.11.2 CQL_FILTER getFeature请求

问题描述 投票:1回答:2

我正在尝试使用CQL_FILTER进行getFeature请求。该过滤器具有两个组件,一个空间过滤器定义为内部(geometry,POLYGON((144.9085 -37.8540,144.9085 -37.7756,145.0129 -37.7756,145.0129 -37.8540,144.9085 -37.8540))))加上一个属性过滤器组件people_usually_resident>400。这应该返回100多个面要素。我得到零回报。这里显然有什么问题吗?

[http://13.55.5.169:8008/geoserver/abs/wfs?REQUEST=GetFeature&SERVICE=WFS&VERSION=1.1.0&TYPENAME=2016MBmeshblocks&srsName=EPSG:4326&OUTPUTFORMAT=application/json&DRAPEID=5445&CQL_FILTER=Within(geometry,POLYGON((144.9085 -37.8540,144.9085 -37.7756,145.0129 -37.7756,145.0129 -37.8540,144.9085 -37.8540))))and person_usually_resident> 400

geoserver
2个回答
0
投票
您需要对CQL_FILTER参数进行urlencode,例如,这对我有用:

curl -v -G --data-urlencode "CQL_FILTER=Within(geometry,POLYGON((144.9085 -37.8540,144.9085 -37.7756,145.0129 -37.7756,145.0129 -37.8540,144.9085 -37.8540))) AND persons_usually_resident > 400" \ "http://13.55.5.169:8008/geoserver/abs/wfs?REQUEST=GetFeature&SERVICE=WFS&VERSION=1.1.0&TYPENAME=2016MBmeshblocks&srsName=EPSG:4326&OUTPUTFORMAT=application/json&DRAPEID=5445"


0
投票
谢谢伊恩,但恐怕我已经对此进行了测试。

我知道空间数据是正确的,因为我使用了具有相同几何形状的BBOX CQL_FILTER,并且在返回正确数量的要素数据且没有urlencoding的情况下可以正常工作。这也验证了我们在寻找正确的图层和几何形状。这也返回了与应返回的空间滤镜相同数量的要素-由于“内部”与BBOX略有不同,因此会有一些细微的差异。

http://13.55.5.169:8008/geoserver/abs/wfs?REQUEST=GetFeature&SERVICE=WFS&VERSION=1.0.0&TYPENAME=2016MBmeshblocks&OUTPUTFORMAT=application/json&CQL_FILTER=BBOX(geometry,144.7434,-37.9707,145.1608,-37.6572)%20AND%20persons_usually_resident%20%3E%20400

我还通过https://arthur-e.github.io/Wicket/sandbox-gmaps3.html检查了WKT POLYGON((144.7434 -37.9707,144.7434 -37.6572,145.1608 -37.6572,145.1608 -37.9707,144.7434 -37.9707))的语法,因此我确信这是正确的。

此外,我尝试了没有运气的OGC过滤器。

http://13.55.5.169:8008/geoserver/abs/wfs?REQUEST=GetFeature&SERVICE=WFS&VERSION=1.1.0&TYPENAME=2016MBmeshblocks&OUTPUTFORMAT=application/json&FILTER=<Filter><And><PropertyIsGreaterThan><PropertyName>persons_usually_resident</PropertyName><Literal>400</Literal></PropertyIsGreaterThan><Within><PropertyName>geometry</PropertyName><Polygon><outerBoundaryIs><LinearRing><coordinates decimal='.' cs=':' ts=' '>144.7434:-37.9707 144.7434:-37.6572 145.1608:-37.6572 145.1608:-37.9707 144.7434:-37.9707</coordinates></LinearRing></outerBoundaryIs></Polygon></Within></And></Filter>

我需要能够支持具有可变大小的搜索多边形的OGC或CQL空间滤波器,该多边形可以是圆形,也可以是用户数字化区域。我可以在Cubewerx WFS服务上执行此操作,但是我确实在Geoserver 2.11.2方面苦苦挣扎。

我唯一想到的是,我们的地理服务器上的访问控制设置可能设置不正确。你可以在那里建议吗?

http://13.55.5.169:8008/geoserver/abs/wfs?request=getcapabilities&service=WFS

特别是...

<fes:Constraint name="ImplementsSpatialFilter"> <ows:NoValues/> <ows:DefaultValue>FALSE</ows:DefaultValue> </fes:Constraint>

如果这是一个问题,如何更改此默认约束?

我们也在考虑升级到地理服务器的较新版本。

再次感谢您的帮助。布拉德。...

© www.soinside.com 2019 - 2024. All rights reserved.