[postgis-users] Query crashed
Paul Ramsey
pramsey at refractions.net
Sat Nov 19 15:03:01 PST 2005
Just realized, there is a max_distance() function in PostGIS, so you
can make replace the within(buffer()) call with something much faster
that is almost semantically equivalent:
select count(*)
from
roadseg r, streets s
where
expand(r.the_geom, 0.00007) && s.the_geom and
max_distance(s.the_geom, r.the_geom) < 0.00007;
The semantics of max_distance are here:
<http://postgis.refractions.net/pipermail/postgis-users/2002-January/
000554.html>
P.
On 19-Nov-05, at 2:29 PM, Paul Ramsey wrote:
> Well, you crashed the backend... probably with the buffer(), though
> the gist_joinsel error is oddball. Oh, your GEOS is quite over a
> year old and a lot of bugs have been scrubbed since then, so an
> upgrade there would help in general.
>
> Finally, your query syntax is hell, here is why:
>
> buffer(foo) && somethingelse
> you are doing an incredibly expensive geometry operation (buffer
> ()) and then only comparing the bounding box! use expand() instead
>
> within(something,buffer(foo))
> well, I see what you are doing here, and there is currently no
> other way. you are looking for items which are "mostly equal" to
> other items. that is, they may have had some coordinate drift do
> to rounding errors, or been noded in places, or had some vertices
> added or removed, but they basically describe the same line on the
> ground. what is really needed is a kindaequals
> (geom_a,geom_b,tolerance) function that returns a number of values,
> depending on the equality case: 1 = completely equal, 2 = describe
> the same line within tolerance, 3 = geom_a is same as geom_b but
> shorter, 4 = geom_b is same as geom_a but shorter.
>
> P.
>
> On 19-Nov-05, at 1:56 PM, Stephen Woodbridge wrote:
>
>> Hi all,
>>
>> I was running the following query:
>>
>> select count(*)
>> from
>> roadseg r, streets s
>> where
>> buffer(r.the_geom, 0.00007) && s.the_geom and
>> within(s.the_geom, buffer(r.the_geom, 0.00007));
>>
>> And it crashed with the following error message after running for
>> 1,959,844 ms in pgadmin3:
>>
>> NOTICE: LWGEOM_gist_joinsel called with arguments that are not
>> column references
>> server closed the connection unexpectedly
>> This probably means the server terminated abnormally
>> before or while processing the request.
>>
>> The "roadseg" table is the geobase roadseg data for all provinces
>> loaded into a table and the "streets" is the same for the Census
>> streets data for all provinces.
>>
>> postgis_full_version() reports:
>> POSTGIS="1.0.4"
>> GEOS="2.0.1"
>> PROJ="Rel. 4.4.9, 29 Oct 2004"
>> USE_STATS DBPROC="0.3.0"
>> RELPROC="0.3.0"
>>
>> and version() reports:
>>
>> "PostgreSQL 8.0.4 on i386-portbld-freebsd5.3, compiled by GCC cc
>> (GCC) 3.4.2 [FreeBSD] 20040728"
>>
>> Any ideas on what this is about. All the data was loaded via
>> shp2pgsql.
>>
>> Thanks,
>> -Steve
>> _______________________________________________
>> 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
More information about the postgis-users
mailing list