[postgis-users] Problem with Contains/Within using shapes created by GeomUnion
Mike Leahy
mgleahy at alumni.uwaterloo.ca
Mon Mar 20 12:08:33 PST 2006
strk:
I'm not fully sure what should put in a self-contained test case - but
if you use load sample shapes table I sent in my previous message
(gutest.sql.zip - attached again to this message), then you can run all
of the queries I mentioned earlier. I also tried the dropbbox function
(see below), which produces the same result. Let me know if there's
anything more I can do here.
Mike
On my winxp machine:
createdb -U postgres test
psql -U postgres -f ../share/contrib/lwpostgis.sql test
psql -U postgres -f ../share/contrib/spatial_ref_sys.sql test
psql -U postgres -f <path_to>/gutest.sql test
psql -U postgres test
test=# select gid, contains(dropbbox(gu),dropbbox(the_geom)) from gutest
cross join (select geomunion(dropbbox(the_geom)) as
gu from gutest) as u;
gid | contains
-----+----------
508 | t
17 | t
741 | t
195 | t
725 | f
18 | t
(6 rows)
test=# select version();
version
------------------------------------------------------------------------------------------
PostgreSQL 8.1.1 on i686-pc-mingw32, compiled by GCC gcc.exe (GCC)
3.4.2 (mingw-special)
(1 row)
test=# select postgis_full_version();
postgis_full_version
----------------------------------------------------------------------------------
POSTGIS="1.1.1" GEOS="2.2.1-CAPI-1.0.1" PROJ="Rel. 4.4.9, 29 Oct 2004"
USE_STATS
(1 row)
strk at refractions.net wrote:
> There might be a bug in the computed bounding box of your geometries,
> Try to run the within and contains against a dropbbox() version
> of the input. If the problem persist, please provide a small
> self-contained testacase so we can check against different
> versions and architectures.
>
> TIA
>
> --strk;
>
> On Fri, Mar 17, 2006 at 01:47:58PM -0500, Mike Leahy wrote:
>> Hello list,
>>
>> I'm wondering if I've run into a bug with PostGIS (or maybe the GEOS
>> module). I've been building a set of management areas that are created
>> from a series of smaller districts merged together. I would normally
>> expect the resulting merged polygon to topologically contain all of its
>> constituent polygons. This has proved to be true in all cases for my
>> data except one (so far). You can see the results of a test query below
>> that compares a handful of shapes to their geomunion'd shape. In all
>> cases except the shape with ID# 725, it looks fine. For some reason, a
>> geomunion of that shape with the other contiguous shapes will no longer
>> contain the original shape itself according to the contains() or
>> within() functions. I've looked at this shape using Qgis and compared
>> it to the corresponding geomunion shape, and it looks fine as far as I
>> can tell visually.
>>
>> I've included a dump of a test table containing the six shapes in this
>> management area used in the queries shown below. Let me know if there's
>> anything I can do to work around this problem, or if there's any
>> additional information I should provide.
>>
>> Mike
>>
>> ===========================================================
>>
>> testdb=# select gid, contains(u,the_geom), within(the_geom,u),
>> isvalid(the_geom) as the_geom_isvalid, isvalid(u) as u_isvalid,
>> contains(the_geom,the_geom) as the_geom_contains_itself from gutest
>> cross join (select geomunion(the_geom) as u from gutest) as foo;
>> gid | contains | within | the_geom_isvalid | u_isvalid |
>> the_geom_contains_itself
>> -----+----------+--------+------------------+-----------+--------------------------
>> 508 | t | t | t | t | t
>> 17 | t | t | t | t | t
>> 741 | t | t | t | t | t
>> 195 | t | t | t | t | t
>> 725 | f | f | t | t | t
>> 18 | t | t | t | t | t
>> (6 rows)
>>
>>
>> testdb=# select version();
>> version
>> ----------------------------------------------------------------------------------------------------------------------------
>> PostgreSQL 8.1.3 on i386-redhat-linux-gnu, compiled by GCC
>> i386-redhat-linux-gcc (GCC) 4.1.0 20060210 (Red Hat 4.1.0-0.24)
>> (1 row)
>>
>> testdb=# select postgis_full_version();
>> postgis_full_version
>> ----------------------------------------------------------------------------------
>> POSTGIS="1.1.1" GEOS="2.2.1-CAPI-1.0.1" PROJ="Rel. 4.4.9, 29 Oct 2004"
>> USE_STATS
>> (1 row)
>
>
>> _______________________________________________
>> postgis-users mailing list
>> postgis-users at postgis.refractions.net
>> http://postgis.refractions.net/mailman/listinfo/postgis-users
>
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: gutest.sql.zip
Type: application/octet-stream
Size: 19002 bytes
Desc: not available
URL: <http://lists.osgeo.org/pipermail/postgis-users/attachments/20060320/f05d4628/attachment.obj>
More information about the postgis-users
mailing list