[postgis-devel] xmin(geometry) behaviour

strk at refractions.net strk at refractions.net
Mon Mar 28 03:42:42 PST 2005


Ok. I did it.
xmin,xmax,ymin,ymax have been dropped from lwpostgis.sql in current CVS.
SCRIPT_VERSION has been incremented to 0.2.2.
A dump/reload is required for upgrading.

This is for the braves upgrading from RC5:

DROP FUNCTION xmin(box2d);
DROP FUNCTION xmax(box2d);
DROP FUNCTION ymin(box2d);
DROP FUNCTION ymax(box2d);
CREATE OR REPLACE FUNCTION postgis_scripts_installed() RETURNS text
        AS 'SELECT \'0.2.2\'::text AS version'
        LANGUAGE 'sql' IMMUTABLE;

Here are changes since RC5:

        - BUGFIX dumper 64bit
        - BUGFIX in multi()
        - early return [when noop] from multi()
        - dropped {x,y}{min,max}(box2d) functions

Ready for RC6 ?

--strk;


On Mon, Mar 28, 2005 at 12:23:16PM +0200, strk at refractions.net wrote:
> Just another thought...
> I think this issue requires far more time then expected 1.0.0 release
> time. I was thinking about this: why don't we drop box3d completely
> and have a box4d (4 doubles) instead ?
> 
> A box4d should be able to express non-existent 4th and 3rd ranges
> to be used as a box2d and box3d as well.
> 
> The box2d itself should also be dropped (both box3d and box2d would
> continue to exist but not from a user point of view).
> 
> In this way we can have a single box type for user view, which will
> be able to contain the cached BOX2DFLOAT4, and the computed BOX4D.
> 
> The BOX4D type would be the unique key type for use in queries
> (2d/3d/4d containment, overlap ops).
> 
> One problem I see with this is that users actually storing BOX3D in
> their column will see their table size grow... also I don't really
> like to have 3 types to maintain (and 2 are already too much).
> 
> The box2d type was intended to be used for smaller indexes, and maybe
> storing float values in the geometries was not a good idea also
> (comparing with double precision cache).
> 
> Well.. enough storming for today.
> 
> --strk;
> 
> 
> 
> On Mon, Mar 28, 2005 at 11:56:41AM +0200, strk at refractions.net wrote:
> > On Sun, Mar 27, 2005 at 11:16:27PM -0500, Carl Anderson wrote:
> > [ ... full quoting at end of mail ...]
> > > I believe the default should be to have more precision and reduced 
> > > precision should be explicit
> > > requests.  
> > 
> > What others think about this ?
> > 
> > SELECT min(xmin(geometry)) <-- should this do full geometries scan
> > 			       yelding double precision result or
> > 			       use cached bbox yelding single precision
> > 			       result ?
> > 
> > In any case I'd avoid adding another function like xmin2d(), but
> > rather add {x,y,z}{min,max}(geometry).
> > 
> > Note that a dump/reload will be needed to upgrade from RC5 to next
> > release if we make this change.
> > 
> > --strk;
> > 
> > On Sun, Mar 27, 2005 at 11:16:27PM -0500, Carl Anderson wrote:
> > > strk at refractions.net wrote:
> > > 
> > > >On Sat, Mar 26, 2005 at 05:34:46PM -0500, Carl Anderson wrote:
> > > > 
> > > >
> > > >>possibly too late in the development cycle for this discussion.
> > > >>   
> > > >>
> > > >
> > > >Indeed.
> > > >
> > > >I was not trying to convince you.
> > > >I do see the problem, but I was giving you more information.
> > > >The solution you suggest is a non-solution as a box2d::box3d
> > > >cast doesn't give you more precision. The precision issue
> > > >is not related to output but internal representation:
> > > >
> > > >=# select xmin('POINT(1.0000000001 0)'::geometry::box3d);
> > > >1.0000000001
> > > >=# select xmin('POINT(1.0000000001 0)'::geometry::box3d::box2d);
> > > >   1
> > > >=# select xmin('POINT(1.0000000001 0)'::geometry::box3d::box2d::box3d);
> > > >   1
> > > >
> > > >The first call is the only one giving you full precision.
> > > >
> > > >The question here is if we really want to keep support for BOX3D
> > > >for other then just an input type support (implicitly casting
> > > >to box2d for any operation, for example).
> > > >
> > > >--strk;
> > > > 
> > > >
> > > 
> > > but the behavior demonstrated is the same in the present and my pondered 
> > > states
> > > (I pondered renaming xmin(box2d) to xmin2d(box2d), and leaving xmin(box3d) )
> > > passing through box2d will reduce precision, as a feature of the box2d 
> > > type no
> > > matter what the precision of the desination type will be.
> > > 
> > > xmin(box3d) uses   BOX3D_xmin
> > > xmin(box2d)  casts box2d into box3d and flows into BOX3D_xmin
> > > xmin(box3d::box2d::box3d) casts box3d into box2d casted into box3d and 
> > > flows into BOX3D_xmin
> > > 
> > > I believe the default should be to have more precision and reduced 
> > > precision should be explicit
> > > requests.  As you demonstrated you can't add precision after removing it.
> > > 
> > > I yield to your judgement, and thank you for your consideration.
> > > 
> > > C.
> > > 
> > > _______________________________________________
> > > postgis-devel mailing list
> > > postgis-devel at postgis.refractions.net
> > > http://postgis.refractions.net/mailman/listinfo/postgis-devel
> > _______________________________________________
> > postgis-devel mailing list
> > postgis-devel at postgis.refractions.net
> > http://postgis.refractions.net/mailman/listinfo/postgis-devel
> _______________________________________________
> postgis-devel mailing list
> postgis-devel at postgis.refractions.net
> http://postgis.refractions.net/mailman/listinfo/postgis-devel



More information about the postgis-devel mailing list