One of the first things we learned when hookup up generic datastore access was that some of these things are really slow at generating their bounds.
And udig needs there bounds in two places:
- when searching we want to know the bounds so we can exclude data that is not on the screen
- when rendering we want to exclude data that is not on the screen (and this annoys WFS service providers!)
- when zooming to extent or zooming to a layer we want to know where the data is.
So here is the plan:
- allow an empty ReferencedEnvelope to represent "unknown"; if the bounds are unknown we will simply include them in our search and not consider them for any zoom operations
- provide a ReferencedEnvelope cache of "good" bounds for each coordinate reference system; we can use this to guess a bounds where needed
- while making use of the guess we should be able to start a thread in the background to calculate the bounds and ...
- store the bounds on the service persisted properties so we don't have to generate all the time (ie same solution we use for title)
- RefernecedEnvelopeCache from CRS
- Service and GeoResource interceptors (so when know when to start calculating bounds ... when added not created)
- Updated renderer to clip against ReferencedEnvelopeCache from CRS (rather then data extents making WFS services no longer clipped when they stray outside of their allotted zone