ST_3DIntersects fails when encouting a GEOMETRYCOLLECTION with an empty geometry
Consider this query:
SELECT
ST_3DIntersects(a1, a2)
FROM ST_GeomFromText('GEOMETRYCOLLECTION Z (POINT Z EMPTY, POINT Z (0 0 0))') As a1
, ST_GeomFromText('POINT Z (0 0 0)') As a2;
--expected{t}; actual{f}
Postgis produces a result of false, but I expected it to produce true. I think this is a bug, due to the following 3 reasons:
- ST_3DIntersection(a1, a2) returns POINT Z (0 0 0). So the expected result of 3DIntersects is true.
- Considering the 2D version function, ST_Intersects(a1, a2) returns true here:
SELECT
ST_Intersects(a1, a2)
FROM ST_GeomFromText('GEOMETRYCOLLECTION(POINT EMPTY, POINT (0 0))') As a1
, ST_GeomFromText('POINT (0 0)') As a2;
--expected{t}
- Making the empty point position behind POINT Z (0 0 0), ST_3DIntersection(a1, a2) returns true.
Version: POSTGIS="3.4.0 0874ea3" [EXTENSION] PGSQL="150" GEOS="3.9.0-CAPI-1.16.2" SFCGAL="1.3.8" PROJ="7.2.1 NETWORK_ENABLED=OFF URL_ENDPOINT=https://cdn.
proj.org USER_WRITABLE_DIRECTORY=/var/lib/postgresql/.local/share/proj DATABASE_PATH=/usr/share/proj/proj.db" LIBXML="2.9.10" LIBJSON="0.15" LIBPR
OTOBUF="1.3.3" WAGYU="0.5.0 (Internal)" TOPOLOGY
Change History
(19)
Description: |
modified (diff)
|
Priority: |
medium → high
|
Description: |
modified (diff)
|
Summary: |
When encounting an empty geometry, potential bug in the ST_3DIntersects function → ST_3DIntersects fails when encouting a GEOMETRYCOLLECTION with an empty geometry
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Milestone: |
PostGIS 3.4.1 → PostGIS 3.3.6
|
Resolution: |
→ fixed
|
Status: |
new → closed
|
The potential solution is to add some same condition detection in the ST_Intersects function to ST_3DIntersects.🤔