[PostGIS] #5740: ST_DistanceSpheroid doesn't return 0 when one geometry contains the other
PostGIS
trac at osgeo.org
Tue Jun 11 19:33:53 PDT 2024
#5740: ST_DistanceSpheroid doesn't return 0 when one geometry contains the other
------------------------+---------------------------
Reporter: cdestigter | Owner: pramsey
Type: defect | Status: new
Priority: medium | Milestone: PostGIS 3.4.3
Component: postgis | Version: 3.4.x
Keywords: |
------------------------+---------------------------
The docs say
> Returns minimum distance in meters between two lon/lat geometries given
a particular spheroid
Based on this description it seems that any intersection between the two
geometries to cause the result to be 0 (the minimum distance between the
geometries is 0 because they overlap)
However, perhaps it actually compares the _edges_ of the geometries and so
if one geometry contains the other you get a positive number:
{{{
#!sql
-- touching the edge of the polygon, the result is zero
=> select st_distancespheroid('SRID=4326;POLYGON((0 0,0 1,1 1,1 0,0
0))'::GEOMETRY, 'SRID=4326;POINT(0 0.5)'::geometry);
0
-- close to the edge, the result is nonzero
=> select st_distancespheroid('SRID=4326;POLYGON((0 0,0 1,1 1,1 0,0
0))'::GEOMETRY, 'SRID=4326;POINT(0.1 0.5)'::geometry);
11131.528045775543
-- the further you get from the edge, the larger the result
=> select st_distancespheroid('SRID=4326;POLYGON((0 0,0 1,1 1,1 0,0
0))'::GEOMETRY, 'SRID=4326;POINT(0.5 0.5)'::geometry);
55657.640177233385
}}}
Interestingly, `ST_DistanceSphere` gives the expected result:
{{{
=> select st_distancesphere('SRID=4326;POLYGON((0 0,0 1,1 1,1 0,0
0))'::GEOMETRY, 'SRID=4326;POINT(0.5 0.5)'::geometry);
0
}}}
--
Ticket URL: <https://trac.osgeo.org/postgis/ticket/5740>
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