[postgis-users] determining intersection count
Bart van den Eijnden (OSGIS)
bartvde at xs4all.nl
Fri Jul 28 07:05:54 PDT 2006
Hi Mark,
thanks. That solved it indeed.
Best regards,
Bart
Mark Cave-Ayland wrote:
>On Fri, 2006-07-28 at 15:29 +0200, Bart van den Eijnden (OSGIS) wrote:
>
>
>>Hi list,
>>
>>I want to determine with how many geometries in a table a certain
>>geometry (X) intersects. It works fine when I use:
>>
>>SELECT count(*) FROM bestemmingsplannen.bouwvlakken AS b,
>>bestemmingsplannen.axel_v AS bp WHERE b.geometrie && bp.geometrie AND
>>intersects(b.geometrie, bp.geometrie) AND b.bouwvlak_id = 10 AND NOT
>>bp.naam = 'Axel';
>>
>>so I select geometry X using bouwvlak_id=10.
>>
>>Now I want to use GeometryFromText, but the count I get back is totally
>>different (12 versus 2). What am I doing wrong?
>>
>>SELECT count(*) FROM bestemmingsplannen.bouwvlakken AS b,
>>bestemmingsplannen.axel_v AS bp WHERE
>>GeometryFromText('MULTIPOLYGON(((51603.74237044
>>365820.98748955555,51607.223759734 365821.15731342667,51606.459552328
>>365818.18539568223,51603.402722704 365818.8646911667,51603.74237044
>>365820.98748955555)))', 28992) && bp.geometrie AND
>>intersects(GeometryFromText('MULTIPOLYGON(((51603.74237044
>>365820.98748955555,51607.223759734 365821.15731342667,51606.459552328
>>365818.18539568223,51603.402722704 365818.8646911667,51603.74237044
>>365820.98748955555)))', 28992), bp.geometrie) AND NOT bp.naam = 'Axel';
>>
>>I verified I am using the right geometry by using the following query:
>>
>>select AsText(geometrie) from bestemmingsplannen.bouwvlakken b where
>>b.bouwvlak_id = 10;
>>
>>the result is:
>>astext
>>"MULTIPOLYGON(((51603.74237044 365820.987489556,51607.223759734
>>365821.157313427,51606.459552328 365818.185395682,51603.402722704
>>365818.864691167,51603.74237044 365820.987489556)))"
>>
>>Thanks in advance.
>>
>>Best regards,
>>Bart
>>
>>
>
>
>Hi Bart,
>
>My guess is that PostgreSQL is calculating a cross product result since
>you still mention the bestemmingsplannen.bouwvlakken table in your
>second query, yet there is no longer any constraint binding it to the
>bestemmingsplannen.axel_v in your second query. This is a "feature" of
>SQL which causes the planner to executed a nested loop between the two
>mentioned tables if the constraint is omitted. The solution should be to
>remove the reference to bestemmingsplannen.bouwvlakken from the query,
>e.g.
>
>
>SELECT count(*) FROM
>bestemmingsplannen.axel_v AS bp WHERE
>GeometryFromText('MULTIPOLYGON(((51603.74237044
>365820.98748955555,51607.223759734 365821.15731342667,51606.459552328
>365818.18539568223,51603.402722704 365818.8646911667,51603.74237044
>365820.98748955555)))', 28992) && bp.geometrie AND
>intersects(GeometryFromText('MULTIPOLYGON(((51603.74237044
>365820.98748955555,51607.223759734 365821.15731342667,51606.459552328
>365818.18539568223,51603.402722704 365818.8646911667,51603.74237044
>365820.98748955555)))', 28992), bp.geometrie) AND NOT bp.naam = 'Axel';
>
>
>
>Kind regards,
>
>Mark.
>
>
>
>
>_______________________________________________
>postgis-users mailing list
>postgis-users at postgis.refractions.net
>http://postgis.refractions.net/mailman/listinfo/postgis-users
>
>
>
>
--
Bart van den Eijnden
OSGIS, Open Source GIS
http://www.osgis.nl
More information about the postgis-users
mailing list