我正在尝试使用PHP的CURL函数从GeoServer实例中获取geoJSON信息。我正在使用url变量执行此操作,而不是尝试构建完整的xml GetFeature请求。

但是,我希望能够基于某些属性字段获取结果的子集内容。

所以,尽管我可以使用以下url获得所有结果: WFS&version = 1.0.0&request = GetFeature&typeName = layername&outputFormat = json&BBOX = 1,2,3,4

我还可以将结果限制为“ Where field LIKE value”或“ field = value”吗?

我花了一个小时浏览Geoserver / ECQL文档,但没有一个明确说明“将功能以这种格式附加到您的URL”。结果,我不清楚是否可以使用url变量来执行这些任务,但是有些人似乎建议这样做。使用带有URL参数的GeoServer的WFS?

#1 楼

我想您已经在阅读此http://docs.geoserver.org/latest/zh-CN/user/tutorials/cql/cql_tutorial.html

这里有一些示例请求正在为演示发送查询Boundless服务器,但如果安装了演示层topp:states,则应与您自己的服务器类似。

选择STATE_NAME在伊利诺伊州的位置

http://demo.opengeo.org/geoserver/wfs?service=wfs&version=1.0.0&request=getfeature&typename=topp:states&PROPERTYNAME=STATE_NAME&CQL_FILTER=STATE_NAME='Illinois'


请注意,使用标准WFS参数PROPERTYNAME可以缩短输出。如果想要所有属性,或写出一个列表以选择某些属性,则请假。

然后选择名称以“ I”开头的状态

http://demo.opengeo.org/geoserver/wfs?service=wfs&version=1.0.0&request=getfeature&typename=topp:states&PROPERTYNAME=STATE_NAME&CQL_FILTER=STATE_NAME LIKE 'I%25'


请注意,比较字符串为'I%',但至少在我的浏览器(Firefox 31.0)中,它必须经过URL编码,并且带有'I%25'。 CQL教程中未提及。如果您自己的过滤器失败,则可能意味着您还必须对过滤器中的其他一些字符进行URL编码。

评论


对于其他为此苦苦挣扎的人,您也可以使用&CQL_FILTER = field = value AND field = value AND field = value格式向URL添加多个CQL过滤器-但您需要对URL AND编码“ AND” 。希望这有助于节省其他人的时间。

– Ambulare
2014年8月14日9:23



非常有用的答案,geoserver教程仅省去了很多事情。您将如何扩展查询以返回具有XY坐标的特征?还是边界框内的所有要素?

–路飞杜德
17 Mar 20 '17在12:11



@Luffydude如果需要全部功能,只需跳过查询中的“&PROPERTYNAME = STATE_NAME”。然后,您将获得包括几何在内的整个特征

– Santosh Karanam
20/07/24在10:04