[postgis-tickets] [PostGIS] #3777: POINT EMPTY,	POINT 0 0 anomaly
    PostGIS 
    trac at osgeo.org
       
    Wed Jun 21 05:43:22 PDT 2017
    
    
  
#3777: POINT EMPTY, POINT 0 0 anomaly
----------------------+---------------------------
  Reporter:  robe     |      Owner:  pramsey
      Type:  defect   |     Status:  new
  Priority:  medium   |  Milestone:  PostGIS 2.3.3
 Component:  postgis  |    Version:  2.3.x
Resolution:           |   Keywords:
----------------------+---------------------------
Description changed by robe:
Old description:
> As Pierre pointed out in:
>
> https://lists.osgeo.org/pipermail/postgis-users/2017-June/042203.html
>
> We've got what appears to be a bug with our handling of POINT EMPTY,
> POINT 0 0.
>
> Tested on PostGIS 2.3 and 2.4
>
> {{{
> SELECT ST_AsText(geom) txt, count(*)
> FROM (
> SELECT 'POINT(0 0)'::geometry geom
> UNION ALL
> SELECT 'POINT(0 0)'::geometry geom
> UNION ALL
> SELECT 'POINT(0 0)'::geometry geom
> UNION ALL
> SELECT 'POINT(0 1)'::geometry geom
> UNION ALL
> SELECT 'LINESTRING(0 0,0 1)'::geometry geom
> UNION ALL
> SELECT 'GEOMETRYCOLLECTION EMPTY'::geometry geom
> UNION ALL
> SELECT 'POINT EMPTY'::geometry geom
> ) foo
> GROUP BY geom;
> }}}
>
> Yields:
>
> {{{
>            txt            | count
> --------------------------+-------
>  POINT(0 0)               |     2
>  POINT EMPTY              |     1
>  POINT(0 0)               |     1
>  LINESTRING(0 0,0 1)      |     1
>  GEOMETRYCOLLECTION EMPTY |     1
>  POINT(0 1)               |     1
>
> }}}
>
> when it should be yielding something along the lines of:
>
> {{{
>            txt            | count
> --------------------------+-------
>  POINT(0 0)               |     3
>  LINESTRING(0 0,0 1)      |     1
>  GEOMETRYCOLLECTION EMPTY |     2
>  POINT(0 1)               |     1
>
> }}}
>
> Since POINT EMPTY and GEOMETRYCOLLECTION have null boxes they should
> aggregate together and since points and 2 point lines should have no
> boxes, they should be taken literally.
>
> I did the same exercise in PostGIS 1.5 and got this:
>
> {{{
>            txt            | count
> --------------------------+-------
>  GEOMETRYCOLLECTION EMPTY |     4
>  LINESTRING(0 0,0 1)      |     1
>  GEOMETRYCOLLECTION EMPTY |     1
>  POINT(0 1)               |     1
> (4 rows)
>
> }}}
>
> which I attributed to the fact that at one point of time, since we had no
> concept of POINT EMPTY we always output the representation as
> GEOMETRYCOLLECTION EMPTY  and I think there was one function that used
> POINT(0 0) as rep for POINT EMPTY. Though I could be mistaken.
New description:
 As Pierre pointed out in:
 https://lists.osgeo.org/pipermail/postgis-users/2017-June/042203.html
 We've got what appears to be a bug with our handling of POINT EMPTY, POINT
 0 0.
 Tested on PostGIS 2.3 and 2.4
 {{{
 SELECT ST_AsText(geom) txt, count(*)
 FROM (
 SELECT 'POINT(0 0)'::geometry geom
 UNION ALL
 SELECT 'POINT(0 0)'::geometry geom
 UNION ALL
 SELECT 'POINT(0 0)'::geometry geom
 UNION ALL
 SELECT 'POINT(0 1)'::geometry geom
 UNION ALL
 SELECT 'LINESTRING(0 0,0 1)'::geometry geom
 UNION ALL
 SELECT 'GEOMETRYCOLLECTION EMPTY'::geometry geom
 UNION ALL
 SELECT 'POINT EMPTY'::geometry geom
 ) foo
 GROUP BY geom;
 }}}
 Yields:
 {{{
            txt            | count
 --------------------------+-------
  POINT(0 0)               |     2
  POINT EMPTY              |     1
  POINT(0 0)               |     1
  LINESTRING(0 0,0 1)      |     1
  GEOMETRYCOLLECTION EMPTY |     1
  POINT(0 1)               |     1
 }}}
 when it should be yielding something along the lines of:
 {{{
            txt            | count
 --------------------------+-------
  POINT(0 0)               |     3
  LINESTRING(0 0,0 1)      |     1
  GEOMETRYCOLLECTION EMPTY |     2
  POINT(0 1)               |     1
 }}}
 Since POINT EMPTY and GEOMETRYCOLLECTION have null boxes they should
 aggregate together and since points and 2 point lines should have no
 boxes, they should be taken literally.
 I did the same exercise in PostGIS 1.5.5 and got this:
 {{{
            txt            | count
 --------------------------+-------
  GEOMETRYCOLLECTION EMPTY |     4
  LINESTRING(0 0,0 1)      |     1
  GEOMETRYCOLLECTION EMPTY |     1
  POINT(0 1)               |     1
 (4 rows)
 }}}
 which I attributed to the fact that at one point of time, since we had no
 concept of POINT EMPTY we always output the representation as
 GEOMETRYCOLLECTION EMPTY  and I think there was one function that used
 POINT(0 0) as rep for POINT EMPTY. Though I could be mistaken.
--
--
Ticket URL: <https://trac.osgeo.org/postgis/ticket/3777#comment:1>
PostGIS <http://trac.osgeo.org/postgis/>
The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project.
    
    
More information about the postgis-tickets
mailing list