[postgis-devel] FW: [postgis-users] how to identify the_geomthatcause:RelateOperation called withLWGEOMCOLLECTION type
Martin Davis
mbdavis at refractions.net
Thu Dec 11 08:56:43 PST 2008
The centroid code and the area code both compute areas, but in different
ways. Thus one of them might compute a 0 area while the other computes
a very small area value, or vice-versa. When I test the text version,
centroid actually computes a non-zero area, and thus returns
successfully with a centroid value. For the WKB version the numbers are
just different enough that the area computation computes 0, and the code
fails.
Obe, Regina wrote:
>
> Weird. What is strange is the ST_AsGeometryFromText version gave me
> an area of 0 but did return a centroid that looked about right. While
> the binary one that did return an empty geometry collection - gave an
> area of 0.00005 e-8 or something like that. I would have thought
> the ST_AsGeometryFromText version would have had more issues in that
> case or at least the same issues.
>
>
>
>
> -----Original Message-----
> From: postgis-devel-bounces at postgis.refractions.net on behalf of
> Martin Davis
> Sent: Wed 12/10/2008 1:06 PM
> To: PostGIS Development Discussion
> Subject: Re: [postgis-devel] FW: [postgis-users] how to identify
> the_geomthatcause:RelateOperation called withLWGEOMCOLLECTION type
>
> Yup, it's a bug. See my post to the Users list. This is caused by an
> inability to handle zero-area polygons in the current code. It should
> be fixed in GEOS. I'm working on a JTS fix now.
>
> Obe, Regina wrote:
> > Do you guys consider this to be a bug? It is sort of, but not sure if
> > anything can be done about it. I presume it would go under GEOS not
> > PostGIS. Anyrate it seems to me that if a geometry is valid -
> > ST_Centroid should not be returning an empty geometry collection
> > except when given an Empty Geometry Collection. Am I wrong in that
> > assumption?
> >
> >
> >
> > ------------------------------------------------------------------------
> > *From:* Obe, Regina
> > *Sent:* Wednesday, December 10, 2008 7:42 AM
> > *To:* 'PostGIS Users Discussion'
> > *Subject:* RE: [postgis-users] how to identify the_geom
> > thatcause:RelateOperation called withLWGEOMCOLLECTION type
> >
> > Fred and Ghislain,
> >
> > Thanks - yes that's because of the rounding that happens in
> > ST_GeomFromText -- the ST_GeomFromText is rounding the last couple of
> > digits so the text rep isn't actually what the geometry is so its
> > probably something like
> >
> > 796579.5624334065668 or some such thing. Looking at this in
> > OpenJump, the polygon is practically a line so borders on being almost
> > invalid.
> >
> > So I guess its some sort of rounding issue that before it gets to
> > ST_Centroid its not invalid because the 2 mid points are technically
> > not the same, but once it gets into ST_Centroid some rounding happens
> > that makes it equivalent to an invalid geometry (basically a polygon
> > with 3 points).
> >
> > Well I'm able to recreate this result in "POSTGIS="1.3.5SVN"
> > GEOS="3.1.0-CAPI-1.5.0" PROJ="Rel. 4.6.0, 21 Dec 2007"
> >
> > I suppose the workaround for now would be to ignore anything where the
> > area is close to 0 or centroid is empty or use ST_SnapToGrid to get
> > rid of those extra digits in your geometry.
> >
> >
> http://postgis.refractions.net/documentation/manual-svn/ST_SnapToGrid.html
> >
> > None of which is terribly appealing.
> >
> >
> > Thanks,
> > Regina
> >
> >
> > ------------------------------------------------------------------------
> > *From:* postgis-users-bounces at postgis.refractions.net
> > [mailto:postgis-users-bounces at postgis.refractions.net] *On Behalf Of
> > *Fred Lehodey
> > *Sent:* Wednesday, December 10, 2008 5:28 AM
> > *To:* PostGIS Users Discussion
> > *Subject:* Re: [postgis-users] how to identify the_geom
> > thatcause:RelateOperation called withLWGEOMCOLLECTION type
> >
> > Hi,
> > just a note:
> >
> > inserting the same geometry :
> >
> > INSERT INTO bug (gid, the_geom) VALUES (
> > 1 ,
> >
> '0103000020BE6B0000010000000400000081F178483F4F2841D730212506D33C418045F71F474F2841D706623902D33C417E45F71F474F2841D806623902D33C4181F178483F4F2841D730212506D33C41'
> > );
> >
> > and
> >
> > INSERT INTO bug (gid, the_geom) VALUES (2,st_geomfromtext('POLYGON((
> > 796575.641547725 1889030.1450377,
> > 796579.562433407 1889026.22415202,
> > 796579.562433406 1889026.22415202,
> > 796575.641547725 1889030.1450377))',-1))
> >
> > then :
> > SELECT gid, st_area(the_geom), astext(centroid(the_geom)),
> > isvalid(the_geom)
> > FROM bug
> >
> > returns:
> >
> > 1; 0.0001220703125;"GEOMETRYCOLLECTION EMPTY";t
> > 2; 0.0001220703125;"POINT(796578.255471513 1889027.53111391)";t
> >
> > !!
> >
> > Fred.
> >
> >
> >
> >
> > On Wed, Dec 10, 2008 at 9:06 AM, Ghislain Geniaux
> > <geniaux at avignon.inra.fr <mailto:geniaux at avignon.inra.fr>> wrote:
> >
> > Exact,
> > that's the problem :
> >
> > scot3=# SELECT gid, the_geom
> > scot3-# FROM bd_dispo_final
> > scot3-# WHERE isempty(centroid(the_geom));
> > gid |
> > the_geom
> >
> -------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------
> > 16435 |
> >
> 0103000020BE6B0000010000000400000081F178483F4F2841D730212506D33C418045F71F474F2841D706623902D33C417E45F71F474F2841D806623902D33C4181F178483F4F2841D730212506D33C41
> > (1 row)
> >
> >
> > Here, you will find the ouput of pg_dump to study this
> > geometrry. Thanks again.
> >
> >
> >
> > --
> > -- PostgreSQL database dump
> > --
> >
> > SET client_encoding = 'SQL_ASCII';
> > SET standard_conforming_strings = off;
> > SET check_function_bodies = false;
> > SET client_min_messages = warning;
> > SET escape_string_warning = off;
> >
> > SET search_path = public, pg_catalog;
> >
> > SET default_tablespace = '';
> >
> > SET default_with_oids = false;
> >
> > --
> > -- Name: bug; Type: TABLE; Schema: public; Owner: postgres;
> > Tablespace:--
> >
> > CREATE TABLE bug (
> > gid integer,
> > the_geom geometry
> > );
> >
> >
> > ALTER TABLE public.bug OWNER TO postgres;
> >
> > --
> > -- Data for Name: bug; Type: TABLE DATA; Schema: public; Owner:
> > postgres
> > --
> >
> > COPY bug (gid, the_geom) FROM stdin;
> > 16435
> >
> 0103000020BE6B0000010000000400000081F178483F4F2841D730212506D33C418045F71F474F2841D706623902D33C417E45F71F474F2841D806623902D33C4181F178483F4F2841D730212506D33C41
> > \.
> >
> >
> > --
> > -- PostgreSQL database dump complete
> > --
> >
> >
> > Le 9 déc. 08 à 13:04, Obe, Regina a écrit :
> >
> >
> >
> > Ghislain,
> >
> > The only time I have seen this kind of behavior is when
> > centroid returns an empty geometry collection. In those cases
> > its because the geometry is invalid.
> >
> > Although none of your geometries are invalid, it could be a
> > bug in either the centroid code or isvalid check that may or
> > may not be fixed in 3.0.3+ of GEOS.
> >
> >
> > Can you do the following
> >
> > SELECT gid, the_geom
> > FROM ZS2C
> > WHERE isempty(centroid(the_geom))
> >
> >
> > and send us as an attatched file with one of those geometries.
> > We can cross check with GEOS 3.0.3 or 3.1 to see if the issue
> > still remains.
> >
> > Thanks,
> > Regina
> > -----Original Message-----
> > From: postgis-users-bounces at postgis.refractions.net
> > <mailto:postgis-users-bounces at postgis.refractions.net>
> > [mailto:postgis-
> > <mailto:postgis->users-bounces at postgis.refractions.net
> > <mailto:users-bounces at postgis.refractions.net>] On Behalf Of
> > Ghislain Geniaux
> > Sent: Monday, December 08, 2008 1:29 PM
> > To: PostGIS Users Discussion
> > Subject: Re: [postgis-users] how to identify the_geom that
> > cause:RelateOperation called withLWGEOMCOLLECTION type
> >
> > On Linux :
> >
> > POSTGIS="1.3.1" GEOS="3.0.0-CAPI-1.4.1" PROJ="Rel. 4.6.0, 21 Dec
> > 2007" USE_STATS
> > (1 row)
> >
> > On Macos
> >
> > POSTGIS="1.2.1" GEOS="3.0.0-CAPI-1.4.1" PROJ="Rel. 4.6.0,
> 21 Dec
> > 2007" USE_STATS
> > (1 row)
> >
> > same result with the two platform and postgis version.
> >
> > Thanks.
> >
> > Le 8 déc. 08 à 17:53, Paragon Corporation a écrit :
> >
> > What does
> >
> > SELECT postgis_full_version();
> >
> > Return
> >
> > Thanks,
> > Regina
> > -----Original Message-----
> > From: postgis-users-bounces at postgis.refractions.net
> > <mailto:postgis-users-bounces at postgis.refractions.net>
> > [mailto:postgis-users-bounces at postgis.refractions.net
> > <mailto:postgis-users-bounces at postgis.refractions.net>] On
> > Behalf Of
> > Ghislain
> > Geniaux
> > Sent: Monday, December 08, 2008 11:03 AM
> > To: PostGIS Users Discussion
> > Subject: Re: [postgis-users] how to identify the_geom that
> > cause
> > :RelateOperation called withLWGEOMCOLLECTION type
> >
> > I've no collection. It's looks like a bug.
> >
> > Moreover my table is very large wiht more than 500 000
> > geometry and i
> > found no solution to identy the wrong geom.
> >
> > Here you can see the query, with the same result on
> different
> > plateform (LINUX DEBIAN, MACOS, with GEOS 3)
> >
> > otm=# select distinct geometrytype(the_geom) from ZS2c;
> > geometrytype
> > --------------
> > MULTIPOLYGON
> > (1 row)
> >
> > otm=# select distinct geometrytype(the_geom) from
> > bd_dispo_finalc ;
> > geometrytype
> > --------------
> > MULTIPOLYGON
> > POLYGON
> > (2 rows)
> >
> > otm=# create table info_nonvoue1 as
> > otm-# select b.id_parc, z.niv from bd_dispo_finalc as b,
> > ZS2c as z
> > otm-# where z.niv=1 and
> > intersects(centroid(b.the_geom),z.the_geom)
> > and b.the_geom && z.the_geom and isvalid(b.the_geom) and
> > isvalid
> > (z.the_geom);
> > ERROR: Relate Operation called with a LWGEOMCOLLECTION
> > type. This
> > is unsupported
> > otm=#
> >
> >
> >
> > Le 8 déc. 08 à 13:32, Obe, Regina a écrit :
> >
> > Many of the GEOS relation functions do not work with
> > collections.
> >
> > You must have a geometry collection in there somewhere
> > or its a bug.
> > Also which relation function were you trying?
> >
> > To figure out the type of your geometries, run
> >
> > SELECT *
> > FROM sometable
> > WHERE GeometryType(the_geom) = 'GEOMETRYCOLLECTION'
> >
> >
> >
> >
> > -----Original Message-----
> > From: postgis-users-bounces at postgis.refractions.net
> > <mailto:postgis-users-bounces at postgis.refractions.net>
> > [mailto:postgis-users-bounces at postgis.refractions.net
> > <mailto:postgis-users-bounces at postgis.refractions.net>]
> > On Behalf Of
> > Nicolas Ribot
> > Sent: Monday, December 08, 2008 6:22 AM
> > To: PostGIS Users Discussion
> > Subject: Re: [postgis-users] how to identify the_geom
> > that cause :
> > RelateOperation called withLWGEOMCOLLECTION type
> >
> > I have an error with some geometry that cause :
> > "ERROR Relate
> >
> > Operation
> >
> > called withLWGEOMCOLLECTION type".
> > All the geometries seem clean (valid, non empty,
> > closed, only
> > POLYGON,
> >
> > ..)
> >
> > My question : how to get information of which
> > geometry cause the
> >
> > problem ?
> >
> > Is there a way to have information about the
> > geometry during
> > postgis
> >
> > is
> >
> > working on a SQL query ?
> > Thanks.
> >
> >
> > Hi Ghislain,
> >
> > What the query that failed looks like ?
> > The message is telling that one geometry has an
> > invalid type.
> > In your query, you could try to ask for
> > ST_GeometryType(geometry) and
> > a geometry identifier to see which geometry has the
> > wrong type.
> > If you perform a spatial operation, it is possible that
> > geometryCollection is produced.
> > You could maybe split your query into smaller block to
> > see where such
> > collections are generated.
> >
> > Nicolas
> > _______________________________________________
> > postgis-users mailing list
> > postgis-users at postgis.refractions.net
> > <mailto:postgis-users at postgis.refractions.net>
> >
> http://postgis.refractions.net/mailman/listinfo/postgis-users
> > -----------------------------------------
> > The substance of this message, including any
> > attachments, may be
> > confidential, legally privileged and/or exempt from
> > disclosure
> > pursuant to Massachusetts law. It is intended
> > solely for the addressee. If you received this in
> > error, please
> > contact the sender and delete the material from any
> > computer.
> > _______________________________________________
> > postgis-users mailing list
> > postgis-users at postgis.refractions.net
> > <mailto:postgis-users at postgis.refractions.net>
> >
> http://postgis.refractions.net/mailman/listinfo/postgis-users
> >
> >
> >
> >
> > ------------------------------------------
> > Geniaux Ghislain
> > INRA SAD Ecodéveloppement
> > Site Agroparc
> > Domaine St Paul
> > 84914 Avignon Cedex 9
> >
> > Tél : 04 32 72 25 64
> > Fax : 04 32 72 25 62
> >
> >
> > _______________________________________________
> > postgis-users mailing list
> > postgis-users at postgis.refractions.net
> > <mailto:postgis-users at postgis.refractions.net>
> >
> http://postgis.refractions.net/mailman/listinfo/postgis-users
> >
> >
> >
> > _______________________________________________
> > postgis-users mailing list
> > postgis-users at postgis.refractions.net
> > <mailto:postgis-users at postgis.refractions.net>
> >
> http://postgis.refractions.net/mailman/listinfo/postgis-users
> >
> >
> >
> >
> > ------------------------------------------
> > Geniaux Ghislain
> > INRA SAD Ecodéveloppement
> > Site Agroparc
> > Domaine St Paul
> > 84914 Avignon Cedex 9
> >
> > Tél : 04 32 72 25 64
> > Fax : 04 32 72 25 62
> >
> >
> > _______________________________________________
> > postgis-users mailing list
> > postgis-users at postgis.refractions.net
> > <mailto:postgis-users at postgis.refractions.net>
> > http://postgis.refractions.net/mailman/listinfo/postgis-users
> > -----------------------------------------
> > The substance of this message, including any attachments, may be
> > confidential, legally privileged and/or exempt from disclosure
> > pursuant to Massachusetts law. It is intended
> > solely for the addressee. If you received this in error, please
> > contact the sender and delete the material from any computer.
> > _______________________________________________
> > postgis-users mailing list
> > postgis-users at postgis.refractions.net
> > <mailto:postgis-users at postgis.refractions.net>
> > http://postgis.refractions.net/mailman/listinfo/postgis-users
> >
> >
> >
> >
> > ------------------------------------------
> > Geniaux Ghislain
> > INRA SAD Ecodéveloppement
> > Site Agroparc
> > Domaine St Paul
> > 84914 Avignon Cedex 9
> >
> > Tél : 04 32 72 25 64
> > Fax : 04 32 72 25 62
> >
> >
> > _______________________________________________
> > postgis-users mailing list
> > postgis-users at postgis.refractions.net
> > <mailto:postgis-users at postgis.refractions.net>
> > http://postgis.refractions.net/mailman/listinfo/postgis-users
> >
> >
> > ------------------------------------------------------------------------
> >
> > *The substance of this message, including any attachments, may be
> > confidential, legally privileged and/or exempt from disclosure
> > pursuant to Massachusetts law. It is intended solely for the
> > addressee. If you received this in error, please contact the sender
> > and delete the material from any computer. *
> >
> > ------------------------------------------------------------------------
> >
> > * Help make the earth a greener place. If at all possible resist
> > printing this email and join us in saving paper. *
> >
> > * *
> >
> > * *
> >
> > ------------------------------------------------------------------------
> >
> > _______________________________________________
> > postgis-devel mailing list
> > postgis-devel at postgis.refractions.net
> > http://postgis.refractions.net/mailman/listinfo/postgis-devel
> >
>
> --
> Martin Davis
> Senior Technical Architect
> Refractions Research, Inc.
> (250) 383-3022
>
> _______________________________________________
> postgis-devel mailing list
> postgis-devel at postgis.refractions.net
> http://postgis.refractions.net/mailman/listinfo/postgis-devel
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> postgis-devel mailing list
> postgis-devel at postgis.refractions.net
> http://postgis.refractions.net/mailman/listinfo/postgis-devel
>
--
Martin Davis
Senior Technical Architect
Refractions Research, Inc.
(250) 383-3022
More information about the postgis-devel
mailing list