[postgis-devel] BBOX cache current behaviours

strk at refractions.net strk at refractions.net
Thu Dec 30 08:17:28 PST 2004


I've gone throuh all functions returning a geometry, and
written down a list of behaviours. I think this is useful
to continue the discussion. Every comment about how to
change them are appreciated.

AUTOCACHE heuristic refers to the centralized functions 
deciding wheter or not to compute bbox based on some parameters
(currently as simple as: points don't need BBOX, others do).

[ explicit control ]
	addBBOX(geometry) 
	dropBBOX(geometry) 

[ uses AUTOCACHE heuristic (or never compute bbox if AUTOCACHE_BBOX==0) ]
	geometry_in(cstring)
	geometry_recv(internal)
	geometry(text)
	geometry(bytea)
	GeometryFromText(geometry, SRID)
	GeomFromWKB(bytea, SRID)
	GeomFromEWKB(bytea)
	GeomFromEWKT(text)
	noop(geometry)
	polygonize_garray (geometry[])
	-- GEOS
	intersection(geometry,geometry)
	buffer(geometry,float8,[integer])
	convexhull(geometry)
	difference(geometry,geometry)
	boundary(geometry)
	symdifference(geometry,geometry)
	symmetricdifference(geometry,geometry)
	GeomUnion(geometry,geometry)
	unite_garray (geometry[])
	GEOSnoop(geometry)
	Centroid(geometry)
	PointOnSurface(geometry)

[ computes bbox if input has one ]
	GeometryN(geometry,integer)
	translate(geometry,float8,float8,float8) 
	translate(geometry,float8,float8) 
	InteriorRingN(geometry,integer) 
	transform_geometry(geometry,text,text,int)
	transform(geometry,integer)
	simplify(geometry, float8)

[ uses input bbox ]
	ExteriorRing(geometry)
	SetSRID(geometry,int4) 
	force_2d(geometry) 
	force_3dz(geometry) 
	force_3d(geometry) 
	force_3dm(geometry) 
	force_4d(geometry) 
	force_collection(geometry) 
	multi(geometry) 
	envelope(geometry)
	reverse(geometry)
	ForceRHR(geometry)
	segmentize(geometry, float8)

[ never compute bbox ]
	PointN(geometry,integer)
	StartPoint(geometry) 
	EndPoint(geometry) 
	collector(geometry, geometry) 
	collect(geometry, geometry) 
	collect_garray (geometry[])
	makePoint(float8, float8, [float8], [float8])
	makePointM(float8, float8, float8)
	makeline_garray (geometry[])
	LineFromMultiPoint(geometry)
	MakeLine(geometry, geometry)
	AddPoint(geometry, geometry, [integer])
	geometry(box2d)
	geometry(box3d)
	geometry(chip)
	line_interpolate_point(geometry, float8)
	Centroid(geometry) [the version w/out GEOS]

[ always compute bbox ]
	expand(geometry,float8)


--strk; 

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