Javascript Geoserver-使用DWITHIN筛选点
首先,我不熟悉Geoserver和Openlayers。我一直在尝试使用图层预览页面在Geoserver端使用Openlayer viewer查看我的图层。最后,我将把它实现为一个Openlayers WFS GET请求 我试图实现的是返回距离不同点一定距离内的特征。(即距离学校5公里以内) 我正在使用Geoserver上的图层预览页面。我添加了CQL过滤器“DWITHIN(GEOM,POINT(-60.246.1),0.05km)”。它限制了返回的点数,但我不确定它是否过滤正确 我的问题如下:Javascript Geoserver-使用DWITHIN筛选点,javascript,openlayers,geoserver,openlayers-3,Javascript,Openlayers,Geoserver,Openlayers 3,首先,我不熟悉Geoserver和Openlayers。我一直在尝试使用图层预览页面在Geoserver端使用Openlayer viewer查看我的图层。最后,我将把它实现为一个Openlayers WFS GET请求 我试图实现的是返回距离不同点一定距离内的特征。(即距离学校5公里以内) 我正在使用Geoserver上的图层预览页面。我添加了CQL过滤器“DWITHIN(GEOM,POINT(-60.246.1),0.05km)”。它限制了返回的点数,但我不确定它是否过滤正确 我的问题如下:
在花了一些时间研究这个问题之后,我能够回答我自己的问题 首先进行一些搜索,我确定1度=111.325公里左右 要添加多个DWITHIN过滤器,只需在每个过滤器之间添加AND。如果是WFS格式,您可能需要添加%20和%20,以便包含空格 要对某个位置执行DWITIN,您需要将以下内容附加到wfs中。该点是long/lat,0.05是距离该点的度数,km是传入的单位。使用geoserver时,它将默认为度,作为原始问题状态中的链接
&CQL_FILTER=DWITHIN(GEOM,Point(-60.2 46.1),0.05,kilometers)
这将从WFS图层返回指定点度数范围内的任何特征
为了过滤掉另一层,我使用了以下URL中的信息
首先,您必须在链接状态下将适当的querylayer模块安装到您的Geoserer版本中
为了基于特征名称进行过滤,我使用了以下CQL_过滤器:
&CQL_FILTER=DWITHIN(GEOM,collectGeometries(queryCollection('Workspace:AssetLayer','GEOM','AssetTypeID=1')),
.02,kilometers%29
这将返回您正在请求的WFS图层中的所有要素,这些要素在图层“Workspace:AssetLayer”中AssetID为1的要素的指定度数范围内
也就是说,如果学校的AssetTypeID为1,这将返回“Workspace:AssetLayer”层上与学校0.02度范围内的原始层的所有特征
“GEOM”值应该是在SQL中保存几何图形数据的列的名称
另外,我对CQL_过滤器“%29”中的最后一个括号进行了编码,因为我发现通过openlayers发出请求时,它正在剥离它
正如我所说,我是openlayers/geoserver的新手,所以这可能不适用于所有情况,但这就是我如何解决的。我认为在不同的预测中可能会有一些变化。希望这能让你走上正轨。很好。请注意,1度纬度=111.325公里(即地球周长/360°)。另一方面,1°的经度正好在赤道上。当你到达北极或南极时,随着纬度线(你在改变经度时穿过的经度线)越来越近,1度经度=(地球周长/360°)*cos(你所在的纬度)。在纽约市(纬度约40.7°N),1度经度仅为84.38公里。有时(通常)地图绘制者错误地将纬度和经度投影为相同的距离,因此现实世界中的矩形在地图上不是矩形等。例如,在