[postgis-users] relationship functions not working well
Paragon Corporation
lr at pcorp.us
Fri Dec 5 13:34:39 PST 2008
Slight correction - I mean that it could be better to do ST_Intersects
rather than &&. No need to do both.
-----Original Message-----
From: Paragon Corporation [mailto:lr at pcorp.us]
Sent: Friday, December 05, 2008 4:33 PM
To: 'PostGIS Users Discussion'
Subject: RE: [postgis-users] relationship functions not working well
William,
Skip the intersects and use && instead (or just use ST_Intersects which has
&& embedded in it). In theory you are doing an intersects check twice (once
in relate and once in ST_Intersects) so should be worse.
It is possible though that it could be better to do both since ST_Intersects
has short-cut logic that I think ST_Relate lacks and if you put the
intersects call in and it fails, it wouldn't need to do the relate.
I would be interested in the timing differences if you did them.
Hope that helps,
Regina
-----Original Message-----
From: postgis-users-bounces at postgis.refractions.net
[mailto:postgis-users-bounces at postgis.refractions.net] On Behalf Of William
Kyngesburye
Sent: Friday, December 05, 2008 2:31 PM
To: PostGIS Users Discussion
Subject: Re: [postgis-users] relationship functions not working well
On Dec 5, 2008, at 1:02 PM, Paul Ramsey wrote:
> add
>
> wkb_geometry && SetSRID('BOX3D(-162 55,-161 56)'::box3d,4326)
>
> to your where clause to engage the index.
>
> P
>
Do you mean just that, without the st_relate? That gives exactly the same
results as st_intersects, though may be a little faster since it skips the
full intersection test.
Or replace the st_intersects half? Again, probably slightly faster.
Doesn't help the st_relate half in a large box selection.
>> Well, that works:
>>
>> ST_relate(wkb_geometry, SetSRID('BOX3D(-162 55,-161 56)'::box3d,
>> 4326),
>> 'T********')
>>
>> But it's painfully slow - looks like relate doesn't do an index
>> bounding box test.
>>
>> ... added a normal intersect (it's a superset of what I want) and let
>> short-circuit logic take care of the initial selection:
>>
>> ST_Intersects(wkb_geometry, SetSRID('BOX3D(-162 55,-161 56)'::box3d,
>> 4326))
>> AND ST_relate(wkb_geometry, SetSRID('BOX3D(-162 55,-161 56)'::box3d,
>> 4326),
>> 'T********')
>>
>> That's reasonably fast, for a small box at least. It will likely
>> slow down on a larger box.
>>
>> -----
>> William Kyngesburye <kyngchaos*at*kyngchaos*dot*com>
>> http://www.kyngchaos.com/
>>
>> "Those people who most want to rule people are, ipso-facto, those
>> least suited to do it."
>>
>> - A rule of the universe, from the HitchHiker's Guide to the Galaxy
>>
>>
>> _______________________________________________
>> postgis-users mailing list
>> postgis-users at postgis.refractions.net
>> http://postgis.refractions.net/mailman/listinfo/postgis-users
>>
> _______________________________________________
> postgis-users mailing list
> postgis-users at postgis.refractions.net
> http://postgis.refractions.net/mailman/listinfo/postgis-users
-----
William Kyngesburye <kyngchaos*at*kyngchaos*dot*com>
http://www.kyngchaos.com/
"Those people who most want to rule people are, ipso-facto, those least
suited to do it."
- A rule of the universe, from the HitchHiker's Guide to the Galaxy
_______________________________________________
postgis-users mailing list
postgis-users at postgis.refractions.net
http://postgis.refractions.net/mailman/listinfo/postgis-users
More information about the postgis-users
mailing list