[postgis-devel] automatic BVOL on spatial columns

strk at refractions.net strk at refractions.net
Fri Dec 31 04:01:13 PST 2004


I've added in the repository a report of all functions returning
a geometry. For each function the bbox cache strategy is documented
and also the output construction mean. We have different means of 
output construction:

	Custom (the functions internally create the output geom)
	Serialized (the function use PG_LWGEOM_construct)
		- this is always applicable to Custom as it   -
	        - takes an already serialized object in input -
	LWGEOM (the cleanest and easier way)

I've enforced a single entry point for LWGEOM construction, so
every function using the LWGEOM way will have a single entry
point for output creation. This won't help for strategies NOT
based on output geometry.

Please take a look at the document (BBOXCACHE_BEHAVIOURS).
More later (or next year).

--strk;

On Fri, Dec 31, 2004 at 09:41:11AM +0100, strk at refractions.net wrote:
> On Thu, Dec 30, 2004 at 01:28:03PM -0800, Paul Ramsey wrote:
> > 
> > What won't be quick? The code or the implementation of the code?
> > P
> 
> I was referring to the implementation (serializers are
> recursive function, so *every* function needs to take
> the caching strategy into consideration somehow (or
> all serializers will need another argument stating wheter
> or not it is a top-level geometry or not).
> 
> The code will be slower whenever the box is computed for
> intermediate geometries even if not needed.
> 
> For example:
> 
> 	SELECT summary(buffer(convexhull(
> 		simplify(<polygon>, 1)), 1));
> 
> That query would compute bbox for the <polygon>, for the
> simplified polygon, for the convexhull, and for the buffered
> geom (4 times), when at the end the cache won't be used
> at all.
> 
> --strk;
> 
> > 
> > strk at refractions.net wrote:
> > 
> > >On Thu, Dec 30, 2004 at 10:00:21AM -0800, Paul Ramsey wrote:
> > >
> > >>Sounds good and simple to me, good stuff!
> > >>
> > >>P
> > >
> > >
> > >Good. I'll take that path then.
> > >Note that it won't be a quick operation (see report on the
> > >various functions and their bbox cache behaviour.
> > >
> > >--strk;
> > >
> > >
> > >>strk at refractions.net wrote:
> > >>
> > >>
> > >>>I've made canonical, (E)WKT and (E)WKB and GEOS input methods
> > >>>call a function returning wheter it's worth to cache bbox, and
> > >>>add it accordingly. None of this methods will face the problem
> > >>>of wheter to drop an existing cache, as transport formats do
> > >>>not contain that information. GEOS Geometry could potentially
> > >>>store an Envelope, but that's not automatically converted by
> > >>>the existing converters.
> > >>>
> > >>>Note that many geometry editors decide wheter or not to
> > >>>add a bbox cache to their return based on other heuristics.
> > >>>Some of them add a bbox if its input geom does have a cache
> > >>>already ( transform, translate, reverse, simplify, segmentize ),
> > >>>some always avoid a bbox computation ( collect, addpoint ).
> > >>>
> > >>>To make this behaviour consistent every function returning
> > >>>a geometry should call the heuristic functions and explicitly
> > >>>cache a bbox when the conditions match. 
> > >>>
> > >>>Still I'm convinced that the user should have more control
> > >>>over this aspect, more specifically she should decide when
> > >>>exactly to compute it in a chain of calls, to improve performace.
> > >>>Users willing to have this finer control can set AUTOCACHE_BBOX
> > >>>to 0 in Makefile.config. In this case internal functions should
> > >>>compute a bbox only if that is a simple operation (ie: does not
> > >>>require a scan of the geometry points). The implemented trigger
> > >>>would be then useful to ensure that tables used for frequent
> > >>>selects always have a bbox cached.
> > >>>
> > >>
> > >>
> > >>_______________________________________________
> > >>postgis-devel mailing list
> > >>postgis-devel at postgis.refractions.net
> > >>http://postgis.refractions.net/mailman/listinfo/postgis-devel
> > >
> > >
> 
> -- 
> 
> For standing up against patentability of software,
> 
>   Thank You, Poland!
> 
> Read the intervention:    http://kwiki.ffii.org/ConsPolon041221En
> Send your thanks:         thankyoupoland.info
> Read/do more:		  http://www.noepatents.org/
> _______________________________________________
> postgis-devel mailing list
> postgis-devel at postgis.refractions.net
> http://postgis.refractions.net/mailman/listinfo/postgis-devel

-- 

For standing up against patentability of software,

  Thank You, Poland!

Read the intervention:    http://kwiki.ffii.org/ConsPolon041221En
Send your thanks:         thankyoupoland.info
Read/do more:		  http://www.noepatents.org/



More information about the postgis-devel mailing list