首先,我是Geoserver和Openlayers的新手。我一直在尝试使用图层预览页面在Geoserver端使用Openlayer查看器查看我的图层。我最终将它作为Openlayers WFS GET请求实现。
我想要完成的是返回不同点的特定距离内的要素。 (即在学校5公里范围内)
我在Geoserver上使用图层预览页面。我添加了“DWITHIN(GEOM,POINT(-60.2 46.1),0.05,km)的CQL过滤器”。它限制了返回的点数,但我不确定它是否正确过滤。
我的问题如下:
答案 0 :(得分:2)
花了一些时间后,我能够回答我自己的问题。
首先做一些搜索我确定1度=约111.325公里。 https://answers.yahoo.com/question/index?qid=20060905051639AAWGjH9
要添加多个DWITHIN过滤器,您只需在每个过滤器之间添加AND。如果它是WFS格式,您可能必须添加%20AND%20,以便包含空格。
要对某个位置执行DWITHIN,您可以将以下内容附加到您的wfs。点是long / lat,0.05是点的度数,km是传入的单位。使用geoserver时,它将默认为度,因为原始问题中的链接表示。
&CQL_FILTER=DWITHIN(GEOM,Point(-60.2 46.1),0.05,kilometers)
这将返回WFS图层中指定点的度数范围内的任何特征。
要过滤掉其他图层,我使用了以下网址http://docs.geoserver.org/2.6.x/en/user/extensions/querylayer/index.html
中的信息首先,您必须将正确的查询图层模块安装到您的Geoserer版本作为链接状态。
要根据功能名称进行过滤,我使用了以下CQL_filter:
&CQL_FILTER=DWITHIN(GEOM,collectGeometries(queryCollection('Workspace:AssetLayer','GEOM','AssetTypeID=1')),
.02,kilometers%29
这将返回您正在请求的WFS图层中的任何要素,这些要素位于图层'工作空间:AssetLayer'的资产ID为1的要素指定的度数范围内。
即如果学校的AssetTypeID为1,这将返回原始图层中所有功能,这些功能在学校的0.02度范围内,位于“工作空间:资产层”上。层
" GEOM" value应该是在SQL中保存几何数据的列的名称。
另外,我编写了CQL_Filter中的最后一个括号"%29"因为我在通过openlayers提出请求时发现它正在剥离它。
正如我所说,我是openlayers / geoserver的新手,所以这可能不适用于所有情况,但这就是我弄清楚的方法。我在考虑不同的预测,可能会有一些变化。希望这可以让你走上正轨。