在传单中创建一个 cql 过滤器
creating a cql filter in leaflet
请问我能否就以下问题获得一些帮助。我想在 leaflet 中创建一个 CQL 过滤器,用于过滤来自 GeoServer 的数据,并将数据托管在 PostGIS 数据库中。
例如,从 database.The 过滤器的名称字段中选择水库名称将是可变的,因为用户可以通过输入对话框字段输入不同的名称。
我将图层显示为 WMS,尽管我能够在 openlayers 3 中使用交互式过滤器,但我仍然不喜欢 leaflet。
我是 GIS 网络开发方面的新手,非常感谢任何正确方向的帮助或指示。
亲切的问候,
卡梅伦
在传单中,您使用 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 等。
但是 leaflet 在 url 中发送了所有额外的 parameters/options 来支持 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"
});
第一次在论坛发帖,得到了很大的帮助!
我已经按照我的代码中的建议获得了 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 选项中。
请问我能否就以下问题获得一些帮助。我想在 leaflet 中创建一个 CQL 过滤器,用于过滤来自 GeoServer 的数据,并将数据托管在 PostGIS 数据库中。
例如,从 database.The 过滤器的名称字段中选择水库名称将是可变的,因为用户可以通过输入对话框字段输入不同的名称。
我将图层显示为 WMS,尽管我能够在 openlayers 3 中使用交互式过滤器,但我仍然不喜欢 leaflet。
我是 GIS 网络开发方面的新手,非常感谢任何正确方向的帮助或指示。
亲切的问候, 卡梅伦
在传单中,您使用 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 等。
但是 leaflet 在 url 中发送了所有额外的 parameters/options 来支持 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"
});
第一次在论坛发帖,得到了很大的帮助!
我已经按照我的代码中的建议获得了 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 选项中。