<html 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=utf-8"><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;}
@font-face
{font-family:Aptos;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
font-size:12.0pt;
font-family:"Aptos",sans-serif;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
span.EmailStyle18
{mso-style-type:personal-reply;
font-family:"Aptos",sans-serif;
color:windowtext;}
.MsoChpDefault
{mso-style-type:export-only;}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
{page:WordSection1;}
--></style></head><body lang=EN-US link=blue vlink=purple style='word-wrap:break-word'><div class=WordSection1><p class=MsoNormal>Antonio,<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I can replicate your issue with PG17 on windows<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>--------------------------------------------------------------<o:p></o:p></p><p class=MsoNormal> POSTGIS="3.5.3 3.5.3" [EXTENSION] PGSQL="170" GEOS="3.13.1-CAPI-1.19.2" PROJ="8.2.1 NETWORK_ENABLED=OFF URL_ENDPOINT= USER_WRITABLE_DIRECTORY=C:\Windows\ServiceProfiles\NetworkService\AppData\Local/proj" (compiled against PROJ 8.2.1) LIBXML="2.12.5<o:p></o:p></p><p class=MsoNormal>" LIBJSON="0.12" LIBPROTOBUF="1.2.1" WAGYU="0.5.0 (Internal)"<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>However the PG18 3.6.0 windows package behaves correctly:<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>PG18 3.6.0 - POSTGIS="3.6.0 3.6.0" [EXTENSION] PGSQL="180" GEOS="3.14.0-CAPI-1.20.4" SFCGAL="SFCGAL 2.2.0, CGAL 6.0.1, BOOST 1.88.0" PROJ="8.2.1 NETWORK_ENABLED=OFF URL_ENDPOINT= USER_WRITABLE_DIRECTORY=C:\Users\Administrator\AppData\Local/proj" (compiled again<br>st PROJ 8.2.1) GDAL="GDAL 3.9.2, released 2024/08/13 GDAL_DATA not found" LIBXML="2.12.5" LIBJSON="0.12" LIBPROTOBUF="1.2.1" WAGYU="0.5.0 (Internal)" TOPOLOGY RASTER<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>There are many things changed between the building of the windows 3.5.3 and the 3.6.0 packages<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>e.g. the GEOS was upgraded, I’m compiling with a newer GCC version , and of course PostGIS is newer.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I’m planning to release PostGIS 3.6.1 for PostgreSQL 17, but skipping PostGIS 3.6.0 since I have some minor packaging issues to address first and PostGIS 3.6.1 is probably less than a month away.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>But we’ll try to figure out what piece is the culprit here.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><div style='border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in 4.0pt'><div><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal><b><span style='font-size:11.0pt;font-family:"Calibri",sans-serif'>From:</span></b><span style='font-size:11.0pt;font-family:"Calibri",sans-serif'> Paul Ramsey via postgis-users <postgis-users@lists.osgeo.org> <br><b>Sent:</b> Wednesday, October 15, 2025 6:32 PM<br><b>To:</b> Antonio Valanzano <anvalanz@gmail.com><br><b>Cc:</b> postgis-users@lists.osgeo.org<br><b>Subject:</b> Re: different results for ST_Relate with 3 parameters compared to those for ST_Relate with 2 parameters<o:p></o:p></span></p></div></div><p class=MsoNormal><o:p> </o:p></p><div><p class=MsoNormal>One more sorry!<o:p></o:p></p><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>SELECT <br>ST_Relate(a.geom, b.geom), ST_Relate(a.geom, b.geom, '1FF00F212')<br>FROM <br>(VALUES <br> ('LINESTRING (170 290, 205 272)'),<br> ('LINESTRING (120 215, 176 197)'),<br> ('LINESTRING (170 290, 205 272)'),<br> ('LINESTRING (120 215, 176 197)')) AS a(geom),<br>(VALUES ('POLYGON ((100 200, 140 230, 180 310, 280 310, 390 270, 400 210, 320 140, 215 141, 150 170, 100 200))')) AS b(geom);<o:p></o:p></p></div></div><p class=MsoNormal><o:p> </o:p></p><div><div><p class=MsoNormal>On Wed, Oct 15, 2025 at 3:11<span style='font-family:"Arial",sans-serif'> </span>PM Antonio Valanzano <<a href="mailto:anvalanz@gmail.com">anvalanz@gmail.com</a>> wrote:<o:p></o:p></p></div><blockquote style='border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in'><div><div><p class=MsoNormal>Here are the results <o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>SELECT<br> ST_Relate(a.geom, b.geom), <br> ST_Relate(a.geom, b.geom, '1FF00F212')<br>FROM<br>(VALUES ('LINESTRING (170 290, 205 272)'),('LINESTRING (120 215, 176 197)')) AS a(geom),<br>(VALUES ('POLYGON ((100 200, 140 230, 180 310, 280 310, 390 270, 400 210, 320 140, 215 141, 150 170, 100 200))')) AS b(geom);<br>-- 2 rows<br>"st_relate" "st_relate-2"<br>"1FF00F212" true<br>"1FF00F212" false<o:p></o:p></p></div></div><p class=MsoNormal><o:p> </o:p></p><div><div><p class=MsoNormal>Il giorno mer 15 ott 2025 alle ore 23:22 Paul Ramsey <<a href="mailto:pramsey@cleverelephant.ca" target="_blank">pramsey@cleverelephant.ca</a>> ha scritto:<o:p></o:p></p></div><blockquote style='border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in'><div><p class=MsoNormal>Thanks for continuing to try stuff. What does this example return?<o:p></o:p></p><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>SELECT <br>ST_Relate(a.geom, b.geom), ST_Relate(a.geom, b.geom, '1FF00F212')<br>FROM <br>(VALUES ('LINESTRING (170 290, 205 272)'),('LINESTRING (120 215, 176 197)')) AS a(geom),<br>(VALUES ('POLYGON ((100 200, 140 230, 180 310, 280 310, 390 270, 400 210, 320 140, 215 141, 150 170, 100 200))')) AS b(geom);<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div></div><p class=MsoNormal><o:p> </o:p></p><div><div><p class=MsoNormal>On Wed, Oct 15, 2025 at 1:29<span style='font-family:"Arial",sans-serif'> </span>PM Antonio Valanzano <<a href="mailto:anvalanz@gmail.com" target="_blank">anvalanz@gmail.com</a>> wrote:<o:p></o:p></p></div><blockquote style='border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in'><div><div><div><p class=MsoNormal>Dear Paul<o:p></o:p></p></div><div><p class=MsoNormal>here are the results with the new linestrings as you suggested<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>SELECT<br> <a href="http://d.id" target="_blank">d.id</a>, <br> ST_Relate(d.geom, l.geom) as patternMatrix<br>FROM docks as d, lakes as l<br>WHERE ST_Relate(d.geom, l.geom, '1FF00F212') = true;<o:p></o:p></p></div><div><p class=MsoNormal>-- 1 row<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>"id" "patternmatrix"<br>7 "1FF00F212"<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>SELECT<br> <a href="http://d.id" target="_blank">d.id</a>, <br> ST_Relate(d.geom, l.geom) as patternMatrix<br>FROM docks as d, lakes as l<br>WHERE ST_Relate(d.geom, l.geom) = '1FF00F212';<o:p></o:p></p></div><div><p class=MsoNormal>-- 4 rows<o:p></o:p></p></div><div><p class=MsoNormal>"id" "patternmatrix"<br>7 "1FF00F212"<br>8 "1FF00F212"<br>12 "1FF00F212"<br>13 "1FF00F212"<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>As you can see nothing has changed.<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>I was wondering which version of PostGIS (and on which platform) has been used for producing the material reported into the tutorial (which shows 2 rows as a correct result).<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>I understand that it is difficult to find the reason for different results on different platforms but this shouldn't happen otherwise users are confused.. and not sure about the correct results.<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>When in the near future I will upgrade to PostgreSQL 18 and PostGIS 3.6.0 I will try again the same two queries and let you know if the results will be the same or not.<o:p></o:p></p></div><div><p class=MsoNormal>Thanks for the time you have spent on this matter.<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>Antonio<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div></div><p class=MsoNormal><o:p> </o:p></p><div><div><p class=MsoNormal>Il giorno mer 15 ott 2025 alle ore 22:03 Paul Ramsey <<a href="mailto:pramsey@cleverelephant.ca" target="_blank">pramsey@cleverelephant.ca</a>> ha scritto:<o:p></o:p></p></div><blockquote style='border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in'><div><div><p class=MsoNormal><o:p> </o:p></p></div><p class=MsoNormal><o:p> </o:p></p><div><div><p class=MsoNormal>On Wed, Oct 15, 2025 at 12:53<span style='font-family:"Arial",sans-serif'> </span>PM Antonio Valanzano <<a href="mailto:anvalanz@gmail.com" target="_blank">anvalanz@gmail.com</a>> wrote:<o:p></o:p></p></div><blockquote style='border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in'><div><div><p class=MsoNormal>Hi Paul<o:p></o:p></p></div><div><p class=MsoNormal>I have upgraded to PosGIS 3.5.3 and GEOS 3.13.1 as you can see from the following output <o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal style='margin-bottom:12.0pt'>"postgis_full_version"<br>"POSTGIS=""3.5.3 3.5.3"" [EXTENSION] PGSQL=""170"" GEOS=""3.13.1-CAPI-1.19.2"" PROJ=""8.2.1 NETWORK_ENABLED=OFF URL_ENDPOINT=<a href="https://cdn.proj.org" target="_blank">https://cdn.proj.org</a> USER_WRITABLE_DIRECTORY=C:\Windows\ServiceProfiles\NetworkService\AppData\Local/proj DATABASE_PATH=C:\Program Files\PostgreSQL\17\share\contrib\postgis-3.5\proj\proj.db"" (compiled against PROJ 8.2.1) LIBXML=""2.12.5"" LIBJSON=""0.12"" LIBPROTOBUF=""1.2.1"" WAGYU=""0.5.0 (Internal)"" (core procs from ""3.5.2 3.5.2"" need upgrade)"<o:p></o:p></p></div><div><p class=MsoNormal>but the results are the same with one row for a query and 2 rows for the other query.<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>Is this a known bug or no other user has already reported this behaviour ?<o:p></o:p></p></div></div></blockquote><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>Not reported, and I'm afraid not solvable unless you can figure out the specific thing about your install vs mine that is giving you a different answer. (Windows is one possibility, though not one I particularly like, platform differences are incredibly hard to isolate.) <o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>Seeing if the problem is ordering based and number of entries based might be interesting. <o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>DELETE FROM docsk;<o:p></o:p></p></div><div><p class=MsoNormal>INSERT INTO docks ( geom, good )<br> VALUES<br> ('LINESTRING (170 290, 205 272)',true),<br> ('LINESTRING (120 215, 176 197)',true),<br> ('LINESTRING (290 260, 340 250)',false),<br> ('LINESTRING (350 300, 400 320)',false),<br> ('LINESTRING (370 230, 420 240)',false),<br> ('LINESTRING (170 290, 205 272)',true),<br> ('LINESTRING (120 215, 176 197)',true),<br> ('LINESTRING (370 180, 390 160)',false);<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>P <o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><blockquote style='border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in'><div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>Antonio<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div></div><p class=MsoNormal><o:p> </o:p></p><div><div><p class=MsoNormal>Il giorno mer 15 ott 2025 alle ore 20:59 Paul Ramsey <<a href="mailto:pramsey@cleverelephant.ca" target="_blank">pramsey@cleverelephant.ca</a>> ha scritto:<o:p></o:p></p></div><blockquote style='border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in'><div><p class=MsoNormal>Sorry, I still cannot replicate. My 3.5 build still returns both results. Maybe update to PostGIS 3.5.4 and GEOS 3.13.1 ?<o:p></o:p></p><div><p class=MsoNormal>P.<o:p></o:p></p></div></div><p class=MsoNormal><o:p> </o:p></p><div><div><p class=MsoNormal>On Wed, Oct 15, 2025 at 11:25<span style='font-family:"Arial",sans-serif'> </span>AM Antonio Valanzano <<a href="mailto:anvalanz@gmail.com" target="_blank">anvalanz@gmail.com</a>> wrote:<o:p></o:p></p></div><blockquote style='border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in'><div><div><p class=MsoNormal>Here is the details of my installation:<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>"postgis_full_version"<br>"POSTGIS=""3.5.2 3.5.2"" [EXTENSION] PGSQL=""170"" GEOS=""3.13.0-CAPI-1.19.0"" PROJ=""8.2.1 NETWORK_ENABLED=OFF URL_ENDPOINT=<a href="https://cdn.proj.org" target="_blank">https://cdn.proj.org</a> USER_WRITABLE_DIRECTORY=C:\Windows\ServiceProfiles\NetworkService\AppData\Local/proj DATABASE_PATH=C:\Program Files\PostgreSQL\17\share\contrib\postgis-3.5\proj\proj.db"" (compiled against PROJ 8.2.1) LIBXML=""2.12.5"" LIBJSON=""0.12"" LIBPROTOBUF=""1.2.1"" WAGYU=""0.5.0 (Internal)"""<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>Antonio<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div></div><p class=MsoNormal><o:p> </o:p></p><div><div><p class=MsoNormal>Il giorno mer 15 ott 2025 alle ore 19:28 Paul Ramsey <<a href="mailto:pramsey@cleverelephant.ca" target="_blank">pramsey@cleverelephant.ca</a>> ha scritto:<o:p></o:p></p></div><blockquote style='border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in'><div><p class=MsoNormal>Maybe you have found an old bug? Running exactly the same SQL as you, I get two rows from each query.<o:p></o:p></p><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal><span style='font-family:"Courier New"'>postgis=# SELECT <a href="http://d.id" target="_blank">d.id</a>, ST_Relate(d.geom, l.geom) as patternMatrix FROM docks as d, lakes as l WHERE ST_Relate(d.geom, l.geom, '1FF00F212');<br> id | patternmatrix <br>----+---------------<br> 1 | 1FF00F212<br> 2 | 1FF00F212<br>(2 rows)<br><br>postgis=# SELECT<br>postgis-# <a href="http://d.id" target="_blank">d.id</a>,<br>postgis-# ST_Relate(d.geom, l.geom) as patternMatrix<br>postgis-# FROM docks as d, lakes as l<br>postgis-# WHERE ST_Relate(d.geom, l.geom) = '1FF00F212';<br> id | patternmatrix <br>----+---------------<br> 1 | 1FF00F212<br> 2 | 1FF00F212<br>(2 rows)<br><br>postgis=# <br>postgis=# select postgis_full_version();<br> postgis_full_version <br>----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------<br> POSTGIS="3.7.0dev 3.6.0rc2-134-g5dc95f1bc" [EXTENSION] PGSQL="180" GEOS="3.15.0dev-CAPI-1.21.0" PROJ="9.6.2 NETWORK_ENABLED=ON URL_ENDPOINT=<a href="https://cdn.proj.org" target="_blank">https://cdn.proj.org</a> USER_WRITABLE_DIRECTORY=/Users/pramsey/Library/Application Support/proj DATABASE_PATH=/opt/homebrew/Cellar/proj/9.6.2/share/proj/proj.db" (compiled against PROJ 9.6.2) LIBXML="2.9.13" LIBJSON="0.18" LIBPROTOBUF="1.5.2" WAGYU="0.5.0 (Internal)" (core procs from "3.7.0dev 3.6.0rc2-125-g747d7732b" need upgrade)</span><o:p></o:p></p></div></div><p class=MsoNormal><o:p> </o:p></p><div><div><p class=MsoNormal>On Wed, Oct 15, 2025 at 9:22<span style='font-family:"Arial",sans-serif'> </span>AM Antonio Valanzano <<a href="mailto:anvalanz@gmail.com" target="_blank">anvalanz@gmail.com</a>> wrote:<o:p></o:p></p></div><blockquote style='border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in'><div><div><p class=MsoNormal>I am fo<span style='font-size:10.0pt'>llowing the "Introduction to PostGIS " tutorial at <a href="https://postgis.net/workshops/postgis-intro/" target="_blank">https://postgis.net/workshops/postgis-intro/</a></span><o:p></o:p></p></div><div><p class=MsoNormal><span style='font-size:10.0pt'>and for chapter 26 "Dimensionally Extended 9-Intersection Model</span>" I am trying to replicate the examples.<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>If I use the two different versions of ST_Relate I do not obtain the same result<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>SELECT<br> <a href="http://d.id" target="_blank">d.id</a>, <br> ST_Relate(d.geom, l.geom) as patternMatrix<br>FROM docks as d, lakes as l<br>WHERE ST_Relate(d.geom, l.geom, '1FF00F212') = true;<br>-- 1 row<br>"id" "patternmatrix"<br>1 "1FF00F212"<br><br><br><br>SELECT<br> <a href="http://d.id" target="_blank">d.id</a>, <br> ST_Relate(d.geom, l.geom) as patternMatrix<br>FROM docks as d, lakes as l<br>WHERE ST_Relate(d.geom, l.geom) = '1FF00F212';<br>-- 2 rows<br>"id" "patternmatrix"<br>1 "1FF00F212"<br>2 "1FF00F212"<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>Could someone give me an explanation of such a difference ?<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal> <o:p></o:p></p></div><div><p class=MsoNormal> <o:p></o:p></p></div></div></blockquote></div></blockquote></div></blockquote></div></blockquote></div></blockquote></div></div></blockquote></div></div></blockquote></div></blockquote></div></blockquote></div></div></div></body></html>