UNOFFICIAL
Hi GeoServer users group,
I have an SLD filter issue when using the ogc:Or logical operator with a layer
created using app-schema - where no features are displayed when there should be.
The issue only presents if the comparison operators are both the same. If they
are not identical, ie <PropertyIsEqualTo> and <PropertyIsNotEqualTo>, or if the
or is wrapped in an <ogc:Not>, then it works.
Have any other app schema users have encountered the same issue in SLD filters
or are able to test their service?
This filter syntax should work according to the documentation, and it works
correctly on the demo topp:Tasmania_roads layer. It looks like a bug, but it
would be good to confirm this.
<ogc:Filter>
<ogc:Or>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>mt:tenementType</ogc:PropertyName>
<ogc:Literal>exploration
licence</ogc:Literal>
</ogc:PropertyIsEqualTo>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>mt:tenementType</ogc:PropertyName>
<ogc:Literal>exploration
licence application</ogc:Literal>
</ogc:PropertyIsEqualTo>
</ogc:Or>
</ogc:Filter>
The only obvious issue in the logs is that the renderer packages is not logging
any label or polygon hit counts, where the other filter variances mentioned
above do.
24 Nov. 17:05:05 DEBUG [geotools.jdbc] - CREATE CONNECTION
24 Nov. 17:05:05 TRACE [data.jdbc] - exporting LogicFilter
24 Nov. 17:05:05 TRACE [data.jdbc] - exporting PropertyName
24 Nov. 17:05:05 DEBUG [data.util] - CRSConverterFactory can be applied from
Strings to CRS only.
24 Nov. 17:05:05 DEBUG [data.util] - InterpolationConverterFactory can be
applied from Strings to Interpolation only.
24 Nov. 17:05:05 TRACE [data.jdbc] - exporting PropertyName
24 Nov. 17:05:05 DEBUG [appschema.jdbc] - SELECT
AUSCOPE.MT_MINERALTENEMENT.SHAPE as
SHAPE,AUSCOPE.MT_MINERALTENEMENT.NAME,AUSCOPE.MT_MINERALTENEMENT.GMLID,AUSCOPE.MT_MINERALTENEMENT."TYPE"
FROM AUSCOPE.MT_MINERALTENEMENT INNER JOIN ( SELECT DISTINCT
MT_MINERALTENEMENT.GMLID FROM AUSCOPE.MT_MINERALTENEMENT WHERE
(SDO_FILTER(SHAPE, ?, 'mask=anyinteract querytype=WINDOW') = 'TRUE' AND "TYPE"
IN (?, ?)) ) TEMP_ALIAS_USED_FOR_FILTER ON ( MT_MINERALTENEMENT.GMLID =
TEMP_ALIAS_USED_FOR_FILTER.GMLID ) ORDER BY AUSCOPE.MT_MINERALTENEMENT.GMLID
ASC
24 Nov. 17:05:05 DEBUG [oracle.sdo] - Using layer SRID: 7844
24 Nov. 17:05:05 DEBUG [geotools.jdbc] - Setting parameter 1 as
MDSYS.SDO_GEOMETRY(2003,7844,NULL,MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,3),MDSYS.SDO_ORDINATE_ARRAY(126.89208984375,-39.7265625,143.85498046875,-24.3017578125))
24 Nov. 17:05:05 DEBUG [geotools.jdbc] - 1 = POLYGON ((126.89208984375
-39.7265625, 143.85498046875 -39.7265625, 143.85498046875 -24.3017578125,
126.89208984375 -24.3017578125, 126.89208984375 -39.7265625))
24 Nov. 17:05:05 DEBUG [geotools.jdbc] - 2 = exploration licence
24 Nov. 17:05:05 DEBUG [geotools.jdbc] - 3 = exploration licence application
24 Nov. 17:05:05 TRACE [complex.filter] - ENTRY
FeatureImpl:MineralTenement<MineralTenementType id=mt.mineraltenement.1>=[]
mt:name 1997/00321 null null
24 Nov. 17:05:05 TRACE [complex.filter] - ENTRY
FeatureImpl:MineralTenement<MineralTenementType
id=mt.mineraltenement.1>=[AttributeImpl:name<string>=1997/00321]
mt:tenementType exploration licence application null null
24 Nov. 17:05:05 TRACE [complex.filter] - ENTRY
FeatureImpl:MineralTenement<MineralTenementType
id=mt.mineraltenement.1>=[AttributeImpl:name<string>=1997/00321,
AttributeImpl:tenementType<string>=exploration licence application] mt:shape
MULTIPOLYGON (((132.001338104 -27.415223005, 132.001336309 -27.26522233,
131.918003683 -27.265223117, 131.918005067 -27.381890311, 131.834672442
-27.381891101, 131.834670866 -27.248557163, 131.584672966 -27.248559529,
131.584674951 -27.415226966, 131.784673265 -27.415225063, 132.001338104
-27.415223005))) null null
...
24 Nov. 17:05:05 DEBUG [geotools.jdbc] - CLOSE CONNECTION
24 Nov. 17:05:05 DEBUG [renderer.label] - TOTAL LINE LABELS : 0
24 Nov. 17:05:05 DEBUG [renderer.label] - PAINTED LINE LABELS : 0
24 Nov. 17:05:05 DEBUG [renderer.label] - REMAINING LINE LABELS : 0
24 Nov. 17:05:05 DEBUG [renderer.lite] - Style cache hit ratio: NaN , hits 0,
requests 0
...
Wrapping the same Filter in a logical ogc:Not operator works correctly, and the
renderer packages is correctly logging label and feature counts.
<ogc:Filter>
<ogc:Not>
<ogc:Or>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>mt:tenementType</ogc:PropertyName>
<ogc:Literal>exploration licence</ogc:Literal>
</ogc:PropertyIsEqualTo>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>mt:tenementType</ogc:PropertyName>
<ogc:Literal>exploration licence application</ogc:Literal>
</ogc:PropertyIsEqualTo>
</ogc:Or>
</ogc:Not>
</ogc:Filter>
And in the logs the renderer package does register the label an polygon counts
...
24 Nov. 17:27:46 DEBUG [geotools.jdbc] - CLOSE CONNECTION
24 Nov. 17:27:47 DEBUG [renderer.label] - TOTAL LINE LABELS : 1,683
24 Nov. 17:27:47 DEBUG [renderer.label] - PAINTED LINE LABELS : 0
24 Nov. 17:27:47 DEBUG [renderer.label] - REMAINING LINE LABELS : 1,683
24 Nov. 17:27:47 DEBUG [renderer.lite] - Style cache hit ratio:
0.9994058229352347 , hits 1682, requests 1683
...
I'm testing on v2.24.0
Thanks in advance!
Ursula
_______________________________________________
Geoserver-users mailing list
Please make sure you read the following two resources before posting to this
list:
- Earning your support instead of buying it, but Ian Turton:
http://www.ianturton.com/talks/foss4g.html#/
- The GeoServer user list posting guidelines:
http://geoserver.org/comm/userlist-guidelines.html
If you want to request a feature or an improvement, also see this:
https://github.com/geoserver/geoserver/wiki/Successfully-requesting-and-integrating-new-features-and-improvements-in-GeoServer
[email protected]
https://lists.sourceforge.net/lists/listinfo/geoserver-users