[postgis-users] change to box3d()?

Sean Gillies sgillies at frii.com
Fri Sep 17 10:54:40 PDT 2004


On Sep 17, 2004, at 10:42 AM, strk at refractions.net wrote:

> On Fri, Sep 17, 2004 at 10:11:32AM -0600, sgillies at frii.com wrote:
>> Hi,
>>
>> An application of mine has failed after an upgrade from postgis 0.8 to
>> 0.8.2.  I've traced the problem to an apparent change in box3d.
>>
>> The failed query was something like this (actual numerical values
>> are ommitted to save space), two clauses are marked *a and *b
>>
>>   SELECT listing_id, the_geom
>>   FROM listing
>> *a  WHERE the_geom && box3d(transform('SRID=4269;POLYGON((...))', 
>> 26913))
>>   AND 1=1
>> *b  AND within(listing.the_geom, transform('SRID=4269;POLYGON((...))',
>> 26913))
>>
>> result:
>>   ERROR:  Operation on two GEOMETRIES with different SRIDs
>>
>> It's the same polygon within the transforms.  Including a 'where 
>> bounding
>> box overlap' clause, as i understand it, is the way to a faster query.
>> This query worked well with postgis 0.8.
>>
>> With 0.8.2, omitting clause *a yields the proper results, but slowly.
>> I discovered that dropping the box3d() call in clause *a and simply
>> comparing geometry bounds gave the quick result i wanted.
>>
>> Was this call to box3d() superfluous?  Is my new query without box3d()
>> just as optimal as it was with box3d() under postgis 0.8?
>
> yes and yes.
> box3d looses SRID info and 0.8 did not check that when using
> the index ...
> --strk;
>

Great.  Thanks, strk!

Sean




More information about the postgis-users mailing list