2017-02-27 67 views
3

请帮我解决以下问题。我想在小册子中创建一个CQL过滤器,过滤来自GeoServer的数据,并将数据托管在PostGIS数据库中。在小册子中创建一个cql过滤器

例如,从数据库的NAME字段中选择一个油藏名称。过滤器将是可变的,因为用户可以通过输入对话框字段输入不同的名称。

我将图层显示为WMS,尽管我能够在openlayers 3中获得交互式过滤器,但我仍然不喜欢使用传单。

我对GIS的web开发方面很陌生,任何帮助或指针都会朝着正确的方向发展,我们将不胜感激。

亲切的问候, 卡梅伦

+0

Hello Cameron,请尝试发布您正在使用的代码(例如,在jsfiddle中)。这使人们更容易帮助你。此外,尝试具体描述您尝试过的内容(理想地引用您的代码)以及哪些内容无效。 –

回答

0

在单张使用TileLayer.WMS对地图绘制WMS层。像这样:

var nexrad = L.tileLayer.wms("http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r.cgi", { 
    layers: 'nexrad-n0r-900913', 
    format: 'image/png', 
    transparent: true, 
    attribution: "Weather data © 2012 IEM Nexrad" 
}); 

你看到一些标准单张WMS选项有喜欢的格式,版本..crs等

但小叶把所有额外的参数/选项中的URL来支持non-standard WMS parameter。 CQL_FILTER就是其中之一,所以你需要做的是供应cql_filter选项(列名称是区分大小写):

var nexrad = L.tileLayer.wms("http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r.cgi", { 
    layers: 'nexrad-n0r-900913', 
    format: 'image/png', 
    transparent: true, 
    cql_filter: 'NAME=filterhere' 
    attribution: "Weather data © 2012 IEM Nexrad" 
}); 
0

这是我第一次发布到论坛,我已经收到了很大的帮助!

我设法得到cql_filter我的代码如下建议的范围内:

var contours = L.tileLayer.wms('http://gis01-dbn:8080/geoserver/Inyaninga_243-198/wms', { 
     layers: 'Inyaninga_243-198:contours_3857', 
     format: 'image/png', 
     transparent: true, 
     cql_filter: 'elevation= 126', 
     }); 

有任何不过的方式,使这个标高参数,接收用户输入和更新?

我创建的HTML表单这样:

<form> 
    Elevation(m):<br> 
    <input type="text" id="myInput"> 
    <input type="button" value="Elevation"> 
</form> 

不过,我越来越坚持通过“myInput”到cql_filter接受,用户可以输入一个值。

我已经尝试创建一个函数住房的cql_filter,但再次加载WMS时不能再调用这个到cql_filter选项。