2015-11-17 25 views
0

我有在它跨層過濾器基於CQL,看起來像這樣一個利用Geoserver WFS請求:利用Geoserver WFS跨層過濾和字符串ID

...&CQL_FILTER=INTERSECTS(the_geom, querySingle('myLayerName','the_geom','the_id = F338')) 

這是行不通的。利用Geoserver是給我這個錯誤消息:

顯示java.lang.NullPointerException:PropertyDescriptor的是空 - 你 請求的屬性不存在?

,如果我的過濾器改成這樣:

&CQL_FILTER=INTERSECTS(the_geom, querySingle('myLayerName','the_geom','INCLUDE')) 

這是工作。

在第一個例子中會出現什麼問題?實際上存在值爲F338的ID。

難道Geoserver需要一個整數作爲id嗎?在CQL中,過濾器可以是字符串,但必須引用它們。在我的例子中,我顯然不能真正引用該值,因爲querySingle函數的整個參數本身就是一個引號。

+0

如果你用「‘the_id’=‘F338’」作爲過濾器會發生什麼?也是the_id fid?如果是這樣的話,你可能想用'IN(F338)' –

+0

它在'the_id'是'number'類型時有效。你的第一個猜測也不起作用。我如何設置圖層上的'fid'來嘗試你的第二個猜測? Thx – Hinrich

回答

3

對於字符串比較,您需要輸入兩個單引號,即 'the_id =''F338'''。 (一個雙引號不工作)

這愚蠢的無證小東西花了我5小時嘗試和錯誤的...

+0

看起來有點奇怪。我會試試這個。 – Hinrich