[udig-devel] selection problems
Vince Darley
vince.darley at eurobios.com
Mon Oct 29 10:05:01 PDT 2007
The renderer seems to become very unhappy when the selection contains
large numbers of items on the map. We typically have one layer of
locations containing 50000+ points. If (either through our own code
or through the TableView) the majority of these become selected, uDig locks up.
The symptoms seem to be:
1) Error log like this (notice how I have trimmed some v.v.v. long
lines with IDs on them):
!ENTRY net.refractions.udig.project 2 0 2007-10-29 14:18:56.812
!MESSAGE Problem rendering: Exception rendering layer
DefaultMapLayer[ Test, VISIBLE, style=StyleImpl<NO_PARENT>[
name=Default Styler],
data=net.refractions.udig.project.internal.impl.UDIGFeatureStore at 12fbd5b,
query=Query:
feature type: accesspoint_layer_3
filter: [ 90638, 75594, 75595, 90639, 75592, 75593, 75598, 90634,
75599, 90635, 90636, 75596, 75597, 90637, 86716, 86717, 86714, 86715.....
[properties: ALL ]]
!STACK 0
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 12fbd5b,
query=Query:
feature type: accesspoint_layer_3
filter: [ 90638, 75594, 75595, 90639, 75592, 75593, 75598, 90634,
75599, 90635, 90636, 75596,.....
[properties: ALL ]]
at
net.refractions.udig.render.internal.feature.basic.BasicFeatureRenderer.render(BasicFeatureRenderer.java:334)
at
net.refractions.udig.render.internal.feature.basic.BasicFeatureRenderer.render(BasicFeatureRenderer.java:193)
at
net.refractions.udig.project.internal.render.impl.RenderJob.startRendering(RenderJob.java:101)
at
net.refractions.udig.project.internal.render.impl.RenderJob.run(RenderJob.java:188)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
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 12fbd5b,
query=Query:
feature type: accesspoint_layer_3
filter: [ 90638, 75594, 75595, 90639, 75592, 75593, 75598, 90634,
75599, 90635, 90636, 75596, 75597, 90637,
[properties: ALL ]]
at
org.geotools.renderer.lite.StreamingRenderer.paint(StreamingRenderer.java:467)
at
org.geotools.renderer.lite.StreamingRenderer.paint(StreamingRenderer.java:374)
at
net.refractions.udig.render.internal.feature.basic.BasicFeatureRenderer.render(BasicFeatureRenderer.java:309)
... 4 more
Caused by: org.geotools.data.DataSourceException: Error Performing
SQL query: SELECT "oid", AsText(force_2d("the_geom")) FROM
"public"."accesspoint_layer_3" WHERE (("oid" = '90638') OR ("oid" =
'75594') OR ("oid" = '75595') OR ("oid" = '90639') OR ("oid" =
'75592') OR ("oid" = '75593') OR ("oid" = '75598') OR ("oid" =
'90634') OR ("oid" = ......
at
org.geotools.data.jdbc.JDBC1DataStore.executeQuery(JDBC1DataStore.java:933)
at
org.geotools.data.jdbc.JDBC1DataStore.getFeatureReader(JDBC1DataStore.java:672)
at
org.geotools.data.jdbc.JDBCFeatureCollection.reader(JDBCFeatureCollection.java:78)
at
org.geotools.renderer.lite.StreamingRenderer.getReader(StreamingRenderer.java:1173)
at
org.geotools.renderer.lite.StreamingRenderer.processStylers(StreamingRenderer.java:1272)
at
org.geotools.renderer.lite.StreamingRenderer.paint(StreamingRenderer.java:464)
... 6 more
Caused by: org.postgresql.util.PSQLException: ERROR: stack depth limit exceeded
at
org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:1525)
at
org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1309)
at
org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:188)
at
org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:452)
at
org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:340)
at
org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:239)
at sun.reflect.GeneratedMethodAccessor8.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at
org.postgresql.ds.common.PooledConnectionImpl$StatementHandler.invoke(PooledConnectionImpl.java:474)
at $Proxy5.executeQuery(Unknown Source)
at
org.geotools.data.jdbc.JDBC1DataStore.executeQuery(JDBC1DataStore.java:922)
... 11 more
2) The above messages take a long time to appear, and are then
repeated every 30-60 seconds while uDig is locked up.
Is there anything we can do about this? (This is with rc12)
----
On an entirely unrelated note, we've now coded up a first version of
a BIRT plugin which allow a uDig map to be a BIRT report item -- in
the report designer you can drag and drop the map to a report, size
it as desired, and control certain aspects of the rendering (through
an extension mechanism). There are still a few bugs and problems
(BIRT's extension API is sadly poorly documented and requires
hundreds of lines of code for some seemingly routine things). When
this finally works well we'll release it as a community plugin.
regards,
Vince.
Vince Darley
CEO, Eurobios UK Ltd
Tel: +44 207 921 0445
Mobile: +44 794 154 8527
www.eurobios.com
More information about the udig-devel
mailing list