Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Geoserver-使用DWITHIN筛选点_Javascript_Openlayers_Geoserver_Openlayers 3 - Fatal编程技术网

Javascript Geoserver-使用DWITHIN筛选点

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)”。它限制了返回的点数,但我不确定它是否过滤正确 我的问题如下:

首先,我不熟悉Geoserver和Openlayers。我一直在尝试使用图层预览页面在Geoserver端使用Openlayer viewer查看我的图层。最后,我将把它实现为一个Openlayers WFS GET请求

我试图实现的是返回距离不同点一定距离内的特征。(即距离学校5公里以内)

我正在使用Geoserver上的图层预览页面。我添加了CQL过滤器“DWITHIN(GEOM,POINT(-60.246.1),0.05km)”。它限制了返回的点数,但我不确定它是否过滤正确

我的问题如下:

  • 根据我的理解,由于这个错误,我必须为我的单位使用学位。如何在客户端使用javascript/openlayers 3将5km转换为度值
  • 我是否可以添加多个DWITHIN过滤器,以确定一个点与一个点的距离是否在5公里以内,与另一个点的距离是否在10公里以内
  • 我可以根据要素类型进行筛选吗?ie返回点距离学校5公里,距离医院10公里

  • 在花了一些时间研究这个问题之后,我能够回答我自己的问题

    首先进行一些搜索,我确定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公里。有时(通常)地图绘制者错误地将纬度和经度投影为相同的距离,因此现实世界中的矩形在地图上不是矩形等。例如,在