[prev in list] [next in list] [prev in thread] [next in thread]
List: postgis-users
Subject: Re: [postgis-users] Strange behavior with empty geometries GROUP BY
From: Pierre Racine <Pierre.Racine () sbf ! ulaval ! ca>
Date: 2017-06-29 19:42:18
Message-ID: 4b0a12de890b45b4b1ed5a149550fe1f () ul-exc-pr-mbx14 ! ulaval ! ca
[Download RAW message or body]
Much better...
De : postgis-users [mailto:postgis-users-bounces@lists.osgeo.org] De la part de \
Regina Obe Envoyé : 23 juin 2017 23:26
À : 'PostGIS Users Discussion' <postgis-users@lists.osgeo.org>
Objet : Re: [postgis-users] Strange behavior with empty geometries GROUP BY
Pierre,
Thanks for pointing out the issue. Sandro has fixed the problem
https://trac.osgeo.org/postgis/ticket/3777#comment:17
Can you try with your larger workload. If you happen to have a windows box, 64-bit \
pre-compiled binaries here:
http://postgis.net/windows_downloads/
(I have 32-bit building turned off at moment cause it errors out on the gui tests and \
haven't had a chance to troubleshoot).
If you have a patched version:
SELECT postgis_full_version();
Your version should have r15450 (or above) for PostGIS 2.4 and r15451 (or above)for \
PostGIS 2.3.
POSTGIS="2.3.3dev r15451" GEOS="3.6.1-CAPI-1.10.1 r4317" PROJ="Rel. 4.9.1, 04 March \
2015" GDAL="GDAL 2.1.3, released 2017/20/01" LIBXML="2.7.8" LIBJSON="0.12" RASTER
Thanks,
Regina
From: postgis-users [mailto:postgis-users-bounces@lists.osgeo.org] On Behalf Of \
Pierre Racine
Sent: Tuesday, June 20, 2017 5:42 PM
To: 'PostGIS Users Discussion' \
<postgis-users@lists.osgeo.org<mailto:postgis-users@lists.osgeo.org>>
Subject: [postgis-users] Strange behavior with empty geometries GROUP BY
Hi,
When I try to count the occurrence of a number of empty geometries like this:
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;
The 'GEOMETRYCOLLECTION EMPTY' and the 'POINT EMPTY' do not aggregate and I get:
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
If I remove any geometry other than the two EMPTY ones like this (I removed the first \
one 'POINT(0 0)'), the two EMPTY geometries DO aggregate:
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 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;
Result:
txt count
POINT(0 0) 2
LINESTRING(0 0,0 1) 1
POINT EMPTY 2
POINT(0 1) 1
Any idea why empty geometries aggregation seem so dependent on what others geoms are \
in the table?
Sorry I could not build a more simple example.
Thanks,
Pierre
[Attachment #3 (text/html)]
<html xmlns:v="urn:schemas-microsoft-com:vml" \
xmlns:o="urn:schemas-microsoft-com:office:office" \
xmlns:w="urn:schemas-microsoft-com:office:word" \
xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" \
xmlns="http://www.w3.org/TR/REC-html40"> <head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:#0563C1;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:#954F72;
text-decoration:underline;}
p.msonormal0, li.msonormal0, div.msonormal0
{mso-style-name:msonormal;
mso-margin-top-alt:auto;
margin-right:0cm;
mso-margin-bottom-alt:auto;
margin-left:0cm;
font-size:12.0pt;
font-family:"Times New Roman",serif;}
span.EmailStyle18
{mso-style-type:personal;
font-family:"Calibri",sans-serif;
color:windowtext;}
span.EmailStyle19
{mso-style-type:personal;
font-family:"Calibri",sans-serif;
color:#1F497D;}
span.EmailStyle20
{mso-style-type:personal-reply;
font-family:"Calibri",sans-serif;
color:#1F497D;}
.MsoChpDefault
{mso-style-type:export-only;
font-size:10.0pt;}
@page WordSection1
{size:612.0pt 792.0pt;
margin:72.0pt 90.0pt 72.0pt 90.0pt;}
div.WordSection1
{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="FR-CA" link="#0563C1" vlink="#954F72">
<div class="WordSection1">
<p class="MsoNormal"><span style="color:#1F497D;mso-fareast-language:EN-US">Much \
better…<o:p></o:p></span></p> <p class="MsoNormal"><span \
style="color:#1F497D;mso-fareast-language:EN-US"><o:p> </o:p></span></p> <div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b><span lang="FR">De :</span></b><span lang="FR"> \
postgis-users [mailto:postgis-users-bounces@lists.osgeo.org] <b>De la part de</b> \
Regina Obe<br> <b>Envoyé :</b> 23 juin 2017 23:26<br>
<b>À :</b> 'PostGIS Users Discussion' <postgis-users@lists.osgeo.org><br>
<b>Objet :</b> Re: [postgis-users] Strange behavior with empty geometries GROUP \
BY<o:p></o:p></span></p> </div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span lang="EN-US" \
style="color:#1F497D">Pierre,<o:p></o:p></span></p> <p class="MsoNormal"><span \
lang="EN-US" style="color:#1F497D"><o:p> </o:p></span></p> <p \
class="MsoNormal"><span lang="EN-US" style="color:#1F497D">Thanks for pointing out \
the issue. Sandro has fixed the problem<o:p></o:p></span></p> <p \
class="MsoNormal"><span lang="EN-US" \
style="color:#1F497D"><o:p> </o:p></span></p> <p class="MsoNormal"><span \
lang="EN-US" style="color:#1F497D"><a \
href="https://trac.osgeo.org/postgis/ticket/3777#comment:17">https://trac.osgeo.org/postgis/ticket/3777#comment:17</a><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" \
style="color:#1F497D"><o:p> </o:p></span></p> <p class="MsoNormal"><span \
lang="EN-US" style="color:#1F497D"><o:p> </o:p></span></p> <p \
class="MsoNormal"><span lang="EN-US" style="color:#1F497D">Can you try with your \
larger workload. If you happen to have a windows box, 64-bit pre-compiled \
binaries here:<o:p></o:p></span></p> <p class="MsoNormal"><span lang="EN-US" \
style="color:#1F497D"><o:p> </o:p></span></p> <p class="MsoNormal"><span \
lang="EN-US" style="color:#1F497D"><a \
href="http://postgis.net/windows_downloads/">http://postgis.net/windows_downloads/</a><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" \
style="color:#1F497D"><o:p> </o:p></span></p> <p class="MsoNormal"><span \
lang="EN-US" style="color:#1F497D">(I have 32-bit building turned off at moment cause \
it errors out on the gui tests and haven't had a chance to \
troubleshoot).<o:p></o:p></span></p> <p class="MsoNormal"><span lang="EN-US" \
style="color:#1F497D"><o:p> </o:p></span></p> <p class="MsoNormal"><span \
lang="EN-US" style="color:#1F497D"><o:p> </o:p></span></p> <p \
class="MsoNormal"><span lang="EN-US" style="color:#1F497D">If you have a patched \
version:<o:p></o:p></span></p> <p class="MsoNormal"><span lang="EN-US" \
style="color:#1F497D"><o:p> </o:p></span></p> <p class="MsoNormal"><span \
lang="EN-US" style="color:#1F497D">SELECT \
postgis_full_version();<o:p></o:p></span></p> <p class="MsoNormal"><span lang="EN-US" \
style="color:#1F497D"><o:p> </o:p></span></p> <p class="MsoNormal"><span \
lang="EN-US" style="color:#1F497D">Your version should have r15450 (or above) \
for PostGIS 2.4 and r15451 (or above)for PostGIS 2.3.<o:p></o:p></span></p> <p \
class="MsoNormal"><span lang="EN-US" \
style="color:#1F497D"><o:p> </o:p></span></p> <p class="MsoNormal"><span \
lang="EN-US" style="color:#1F497D">POSTGIS="2.3.3dev r15451" \
GEOS="3.6.1-CAPI-1.10.1 r4317" PROJ="Rel. 4.9.1, 04 March 2015" \
GDAL="GDAL 2.1.3, released 2017/20/01" LIBXML="2.7.8" \
LIBJSON="0.12" RASTER<o:p></o:p></span></p> <p class="MsoNormal"><span \
lang="EN-US" style="color:#1F497D"><o:p> </o:p></span></p> <p \
class="MsoNormal"><span lang="EN-US" \
style="color:#1F497D">Thanks,<o:p></o:p></span></p> <p class="MsoNormal"><span \
lang="EN-US" style="color:#1F497D">Regina<o:p></o:p></span></p> <p \
class="MsoNormal"><span lang="EN-US" \
style="color:#1F497D"><o:p> </o:p></span></p> <div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal" style="margin-left:36.0pt"><b><span \
lang="EN-US">From:</span></b><span lang="EN-US"> postgis-users [<a \
href="mailto:postgis-users-bounces@lists.osgeo.org">mailto:postgis-users-bounces@lists.osgeo.org</a>]
<b>On Behalf Of </b>Pierre Racine<br>
<b>Sent:</b> Tuesday, June 20, 2017 5:42 PM<br>
<b>To:</b> 'PostGIS Users Discussion' <<a \
href="mailto:postgis-users@lists.osgeo.org">postgis-users@lists.osgeo.org</a>><br> \
<b>Subject:</b> [postgis-users] Strange behavior with empty geometries GROUP \
BY<o:p></o:p></span></p> </div>
</div>
<p class="MsoNormal" style="margin-left:36.0pt"><span \
lang="EN-US"><o:p> </o:p></span></p> <p class="MsoNormal" \
style="margin-left:36.0pt"><span lang="EN-US">Hi,<o:p></o:p></span></p> <p \
class="MsoNormal" style="margin-left:36.0pt"><span \
lang="EN-US"><o:p> </o:p></span></p> <p class="MsoNormal" \
style="margin-left:36.0pt"><span lang="EN-US">When I try to count the occurrence of a \
number of empty geometries like this:<o:p></o:p></span></p> <p class="MsoNormal" \
style="margin-left:36.0pt"><span lang="EN-US"><o:p> </o:p></span></p> <p \
class="MsoNormal" style="margin-left:36.0pt"><span lang="EN-US">SELECT \
ST_AsText(geom) txt, count(*)<o:p></o:p></span></p> <p class="MsoNormal" \
style="margin-left:36.0pt"><span lang="EN-US">FROM (<o:p></o:p></span></p> <p \
class="MsoNormal" style="margin-left:36.0pt"><span lang="EN-US">SELECT 'POINT(0 \
0)'::geometry geom<o:p></o:p></span></p> <p class="MsoNormal" \
style="margin-left:36.0pt"><span lang="EN-US">UNION ALL<o:p></o:p></span></p> <p \
class="MsoNormal" style="margin-left:36.0pt"><span lang="EN-US">SELECT 'POINT(0 \
0)'::geometry geom<o:p></o:p></span></p> <p class="MsoNormal" \
style="margin-left:36.0pt"><span lang="EN-US">UNION ALL<o:p></o:p></span></p> <p \
class="MsoNormal" style="margin-left:36.0pt"><span lang="EN-US">SELECT 'POINT(0 \
0)'::geometry geom<o:p></o:p></span></p> <p class="MsoNormal" \
style="margin-left:36.0pt"><span lang="EN-US">UNION ALL<o:p></o:p></span></p> <p \
class="MsoNormal" style="margin-left:36.0pt"><span lang="EN-US">SELECT 'POINT(0 \
1)'::geometry geom<o:p></o:p></span></p> <p class="MsoNormal" \
style="margin-left:36.0pt"><span lang="EN-US">UNION ALL<o:p></o:p></span></p> <p \
class="MsoNormal" style="margin-left:36.0pt"><span lang="EN-US">SELECT 'LINESTRING(0 \
0,0 1)'::geometry geom<o:p></o:p></span></p> <p class="MsoNormal" \
style="margin-left:36.0pt"><span lang="EN-US">UNION ALL<o:p></o:p></span></p> <p \
class="MsoNormal" style="margin-left:36.0pt"><span lang="EN-US">SELECT \
'GEOMETRYCOLLECTION EMPTY'::geometry geom<o:p></o:p></span></p> <p class="MsoNormal" \
style="margin-left:36.0pt"><span lang="EN-US">UNION ALL<o:p></o:p></span></p> <p \
class="MsoNormal" style="margin-left:36.0pt"><span lang="EN-US">SELECT 'POINT \
EMPTY'::geometry geom<o:p></o:p></span></p> <p class="MsoNormal" \
style="margin-left:36.0pt"><span lang="EN-US">) foo<o:p></o:p></span></p> <p \
class="MsoNormal" style="margin-left:36.0pt"><span lang="EN-US">GROUP BY \
geom;<o:p></o:p></span></p> <p class="MsoNormal" style="margin-left:36.0pt"><span \
lang="EN-US"><o:p> </o:p></span></p> <p class="MsoNormal" \
style="margin-left:36.0pt"><span lang="EN-US">The 'GEOMETRYCOLLECTION EMPTY' and the \
'POINT EMPTY' do not aggregate and I get:<o:p></o:p></span></p> <p class="MsoNormal" \
style="margin-left:36.0pt"><span lang="EN-US"><o:p> </o:p></span></p> <p \
class="MsoNormal" style="margin-left:36.0pt"><span \
lang="EN-US">txt \
\
&n \
bsp; &nbs \
p; \
count<o:p></o:p></span></p> <p class="MsoNormal" style="margin-left:36.0pt"><span \
lang="EN-US">POINT(0 0) \
\
&n \
bsp; \
2<o:p></o:p></span></p> <p class="MsoNormal" style="margin-left:36.0pt"><span \
lang="EN-US">POINT EMPTY \
&n \
bsp; &nbs \
p; \
1<o:p></o:p></span></p> <p class="MsoNormal" style="margin-left:36.0pt"><span \
lang="EN-US">POINT(0 0) \
&n \
bsp; &nbs \
p; \
1<o:p></o:p></span></p> <p class="MsoNormal" style="margin-left:36.0pt"><span \
lang="EN-US">LINESTRING(0 0,0 1) \
&n \
bsp; \
1<o:p></o:p></span></p> <p class="MsoNormal" style="margin-left:36.0pt"><span \
lang="EN-US">GEOMETRYCOLLECTION \
EMPTY \
1<o:p></o:p></span></p> <p class="MsoNormal" style="margin-left:36.0pt"><span \
lang="EN-US">POINT(0 \
1) \
&n \
bsp; \
1<o:p></o:p></span></p> <p class="MsoNormal" style="margin-left:36.0pt"><span \
lang="EN-US"><o:p> </o:p></span></p> <p class="MsoNormal" \
style="margin-left:36.0pt"><span lang="EN-US">If I remove any geometry other than the \
two EMPTY ones like this (I removed the first one 'POINT(0 0)'), the two EMPTY \
geometries DO aggregate:<o:p></o:p></span></p> <p class="MsoNormal" \
style="margin-left:36.0pt"><span lang="EN-US"><o:p> </o:p></span></p> <p \
class="MsoNormal" style="margin-left:36.0pt"><span lang="EN-US">SELECT \
ST_AsText(geom) txt, count(*)<o:p></o:p></span></p> <p class="MsoNormal" \
style="margin-left:36.0pt"><span lang="EN-US">FROM (<o:p></o:p></span></p> <p \
class="MsoNormal" style="margin-left:36.0pt"><span lang="EN-US">SELECT 'POINT(0 \
0)'::geometry geom<o:p></o:p></span></p> <p class="MsoNormal" \
style="margin-left:36.0pt"><span lang="EN-US">UNION ALL<o:p></o:p></span></p> <p \
class="MsoNormal" style="margin-left:36.0pt"><span lang="EN-US">SELECT 'POINT(0 \
0)'::geometry geom<o:p></o:p></span></p> <p class="MsoNormal" \
style="margin-left:36.0pt"><span lang="EN-US">UNION ALL<o:p></o:p></span></p> <p \
class="MsoNormal" style="margin-left:36.0pt"><span lang="EN-US">SELECT 'POINT(0 \
1)'::geometry geom<o:p></o:p></span></p> <p class="MsoNormal" \
style="margin-left:36.0pt"><span lang="EN-US">UNION ALL<o:p></o:p></span></p> <p \
class="MsoNormal" style="margin-left:36.0pt"><span lang="EN-US">SELECT 'LINESTRING(0 \
0,0 1)'::geometry geom<o:p></o:p></span></p> <p class="MsoNormal" \
style="margin-left:36.0pt"><span lang="EN-US">UNION ALL<o:p></o:p></span></p> <p \
class="MsoNormal" style="margin-left:36.0pt"><span lang="EN-US">SELECT \
'GEOMETRYCOLLECTION EMPTY'::geometry geom<o:p></o:p></span></p> <p class="MsoNormal" \
style="margin-left:36.0pt"><span lang="EN-US">UNION ALL<o:p></o:p></span></p> <p \
class="MsoNormal" style="margin-left:36.0pt"><span lang="EN-US">SELECT 'POINT \
EMPTY'::geometry geom<o:p></o:p></span></p> <p class="MsoNormal" \
style="margin-left:36.0pt"><span lang="EN-US">) foo<o:p></o:p></span></p> <p \
class="MsoNormal" style="margin-left:36.0pt"><span lang="EN-US">GROUP BY \
geom;<o:p></o:p></span></p> <p class="MsoNormal" style="margin-left:36.0pt"><span \
lang="EN-US"><o:p> </o:p></span></p> <p class="MsoNormal" \
style="margin-left:36.0pt"><span lang="EN-US">Result:<o:p></o:p></span></p> <p \
class="MsoNormal" style="margin-left:36.0pt"><span \
lang="EN-US"><o:p> </o:p></span></p> <p class="MsoNormal" \
style="margin-left:36.0pt"><span \
lang="EN-US">txt \
\
\
count<o:p></o:p></span></p> <p class="MsoNormal" style="margin-left:36.0pt"><span \
lang="EN-US">POINT(0 \
0) \
2<o:p></o:p></span></p> <p class="MsoNormal" style="margin-left:36.0pt"><span \
lang="EN-US">LINESTRING(0 0,0 1) \
1<o:p></o:p></span></p> <p class="MsoNormal" style="margin-left:36.0pt"><span \
lang="EN-US">POINT EMPTY \
2<o:p></o:p></span></p> <p class="MsoNormal" style="margin-left:36.0pt"><span \
lang="EN-US">POINT(0 \
1) \
1<o:p></o:p></span></p> <p class="MsoNormal" style="margin-left:36.0pt"><span \
lang="EN-US"><o:p> </o:p></span></p> <p class="MsoNormal" \
style="margin-left:36.0pt"><span lang="EN-US">Any idea why empty geometries \
aggregation seem so dependent on what others geoms are in the \
table?<o:p></o:p></span></p> <p class="MsoNormal" style="margin-left:36.0pt"><span \
lang="EN-US"><o:p> </o:p></span></p> <p class="MsoNormal" \
style="margin-left:36.0pt"><span lang="EN-US">Sorry I could not build a more simple \
example.<o:p></o:p></span></p> <p class="MsoNormal" style="margin-left:36.0pt"><span \
lang="EN-US"><o:p> </o:p></span></p> <p class="MsoNormal" \
style="margin-left:36.0pt"><span lang="EN-US">Thanks,<o:p></o:p></span></p> <p \
class="MsoNormal" style="margin-left:36.0pt"><span \
lang="EN-US"><o:p> </o:p></span></p> <p class="MsoNormal" \
style="margin-left:36.0pt"><span lang="EN-US">Pierre<o:p></o:p></span></p> </div>
</body>
</html>
[Attachment #4 (unknown)]
_______________________________________________
postgis-users mailing list
postgis-users@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/postgis-users
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic