[udig-devel] Default style for generic geometry fails to render from SQL datastore

Aleksander Bandelj aleksander.bandelj at academa.si
Wed Jul 12 05:55:25 PDT 2006


This bug involves default style for generic geometry in UDIG, but is 
actually caused by geotools issues. I opened

http://jira.codehaus.org/browse/GEOT-890

on Geotools JIRA, but I thought I would also post here for possible UDIG 
test cases or workarounds.

I have a postgis table with generic geometry type. Udig (correctly) sets 
up style in SLDContent#createGeometrySLD by creating several rules with 
different symbolizers, one for each geometry type case. But condition 
parts of these rules somehow leak through StreamingRenderer, resulting 
in this bounding box filtering condition on datastore:

[[ geometry bbox POLYGON ((5285442.209046828 4969855.4245647825, 
5285442.209046828 5343298.0754352175, 5722524.790953172 
5343298.0754352175, 5722524.790953172 4969855.4245647825, 
5285442.209046828 4969855.4245647825)) ] AND [[[[[[[ 
geometryType(geometry,) = Point ] OR [ geometryType(geometry,) = 
MultiPoint ]] OR [ geometryType(geometry,) = LineString ]] OR [ 
geometryType(geometry,) = LinearRing ]] OR [ geometryType(geometry,) = 
MultiLineString ]] OR [ geometryType(geometry,) = Polygon ]] OR [ 
geometryType(geometry,) = MultiPolygon ]]]

Since neither SQLEncoder nor SQLEncoderPostgisGeos knows how to deal 
with FunctionExpressions, layer rendering is aborted with following 
stack trace:

net.refractions.udig.project.render.RenderException: Problem rendering: 
Exception rendering layer DefaultMapLayer[ Test, VISIBLE, 
style=StyleImpl<NO_PARENT>[ name=Default Styler], 
data=net.refractions.udig.project.internal.impl.UDIGFeatureStore at 9830bc, 
query=Query: [Request All Features]
  feature type: null
  filter: Filter.NONE
  [properties:  ALL ]]
       at 
net.refractions.udig.render.internal.feature.basic.BasicFeatureRenderer.render(BasicFeatureRenderer.java:304) 

       at 
net.refractions.udig.render.internal.feature.basic.BasicFeatureRenderer.render(BasicFeatureRenderer.java:221) 

       at 
net.refractions.udig.project.internal.render.impl.TilingRenderer.render(TilingRenderer.java:79) 

       at 
net.refractions.udig.project.internal.render.impl.RenderExecutorImpl$RenderJob.startRendering(RenderExecutorImpl.java:285) 

       at 
net.refractions.udig.project.internal.render.impl.RenderExecutorImpl$RenderJob.run(RenderExecutorImpl.java:348) 

       at org.eclipse.core.internal.jobs.Worker.run(Worker.java:58)
Caused by: java.lang.Exception: Exception rendering layer 
DefaultMapLayer[ Test, VISIBLE, style=StyleImpl<NO_PARENT>[ name=Default 
Styler], 
data=net.refractions.udig.project.internal.impl.UDIGFeatureStore at 9830bc, 
query=Query: [Request All Features]
  feature type: null
  filter: Filter.NONE
  [properties:  ALL ]]
       at 
org.geotools.renderer.lite.StreamingRenderer.paint(StreamingRenderer.java:508) 

       at 
org.geotools.renderer.lite.StreamingRenderer.paint(StreamingRenderer.java:412) 

       at 
net.refractions.udig.render.internal.feature.basic.BasicFeatureRenderer.render(BasicFeatureRenderer.java:293) 

       ... 5 more
Caused by: java.lang.UnsupportedOperationException: Function expression 
support not yet added.
       at org.geotools.filter.SQLEncoder.visit(SQLEncoder.java:620)
       at 
org.geotools.filter.FunctionExpressionImpl.accept(FunctionExpressionImpl.java:79) 

       at 
org.geotools.filter.SQLEncoderPostgis.visit(SQLEncoderPostgis.java:282)
       at 
org.geotools.filter.CompareFilterImpl.accept(CompareFilterImpl.java:378)
       at org.geotools.filter.SQLEncoder.visit(SQLEncoder.java:377)
       at 
org.geotools.filter.LogicFilterImpl.accept(LogicFilterImpl.java:336)
       at org.geotools.filter.SQLEncoder.visit(SQLEncoder.java:377)
       at 
org.geotools.filter.LogicFilterImpl.accept(LogicFilterImpl.java:336)
       at org.geotools.filter.SQLEncoder.visit(SQLEncoder.java:377)
       at 
org.geotools.filter.LogicFilterImpl.accept(LogicFilterImpl.java:336)
       at org.geotools.filter.SQLEncoder.visit(SQLEncoder.java:377)
       at 
org.geotools.filter.LogicFilterImpl.accept(LogicFilterImpl.java:336)
       at org.geotools.filter.SQLEncoder.visit(SQLEncoder.java:377)
       at 
org.geotools.filter.LogicFilterImpl.accept(LogicFilterImpl.java:336)
       at org.geotools.filter.SQLEncoder.visit(SQLEncoder.java:377)
       at 
org.geotools.filter.LogicFilterImpl.accept(LogicFilterImpl.java:336)
       at org.geotools.filter.SQLEncoder.visit(SQLEncoder.java:377)
       at 
org.geotools.filter.LogicFilterImpl.accept(LogicFilterImpl.java:336)
       at org.geotools.filter.SQLEncoder.encode(SQLEncoder.java:212)
       at org.geotools.filter.SQLEncoder.encode(SQLEncoder.java:236)
       at 
org.geotools.data.postgis.PostgisSQLBuilder.sqlWhere(PostgisSQLBuilder.java:147) 

       at 
org.geotools.data.jdbc.DefaultSQLBuilder.buildSQLQuery(DefaultSQLBuilder.java:175) 

       at 
org.geotools.data.jdbc.JDBC1DataStore.constructQuery(JDBC1DataStore.java:727) 

       at 
org.geotools.data.jdbc.JDBC1DataStore.getFeatureReader(JDBC1DataStore.java:654) 

       at 
org.geotools.data.jdbc.JDBCFeatureCollection.reader(JDBCFeatureCollection.java:78) 

       at 
org.geotools.renderer.lite.StreamingRenderer.getReader(StreamingRenderer.java:1090) 

       at 
org.geotools.renderer.lite.StreamingRenderer.processStylers(StreamingRenderer.java:1188) 

       at 
org.geotools.renderer.lite.StreamingRenderer.paint(StreamingRenderer.java:506) 

       ... 7 more




More information about the udig-devel mailing list