2017-02-27 66 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選項。