[postgis-devel] automatic BVOL on spatial columns

strk at refractions.net strk at refractions.net
Fri Dec 31 05:09:06 PST 2004


Last mail for this year..
I've started cleaning up the code so to improve the use of a
single (or a couple) of entry points for serializzation.
InteriorRingN, GeometryN and ExteriorRing have been migrated
to LWG serializzation method, as a side-effect InteriorRingN
and ExteriorRing have been made OGC-strict (require POLYGON
input).

I plan to continue with the cleanup and later introduce
bbox caching strategies in the serializer function(s).

Happy new year.
--strk;

On Fri, Dec 31, 2004 at 01:01:13PM +0100, strk at refractions.net wrote:
> 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/
> _______________________________________________
> 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