[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