У меня есть запрос Geoserver WFS с CQL на основе фильтра поперечного слоя в нем, который выглядит следующим образом:Geoserver WFS Cross Layer Идентификаторы Фильтрация и строковые
...&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 фактически существует.
Возможно ли, что Geoserver ожидает целое число как id? В CQL-фильтрах могут быть строки, но они должны быть указаны. В моем примере я, очевидно, не могу действительно указать значение, потому что весь параметр функции querySingle
является самой цитатой.
Что произойдет, если вы используете «„the_ID“=„F338“» в качестве фильтра? Кроме того, это the_id fid? если это так, вы можете использовать 'IN (F338)' –
Он работает, когда 'the_id' имеет тип' number'. Ваша первая догадка тоже не работает. Как я могу установить 'fid' на слой, чтобы опробовать ваше второе предположение? Thx – Hinrich