Strange ST_DWithin behavior
Christian Pschierer
christian.pschierer at gmx.net
Tue Jan 7 11:30:11 PST 2025
Hi,
I see a strange behavior of ST_DWithin. Below is a sample dataset with 2
airports, 4 versions each, and identical geometries for each version.
Running this query returns all 8 records.
WITH poly AS (
SELECT ST_SetSRID('Polygon((77.04180277777778
11.026911111111112, -68.90305555555557 -22.5, -124.14194444444445
51.626111111111115, 77.04180277777778
11.026911111111112))'::geography,4326) AS geom
)
SELECT airportident,version,a.geom,poly.geom FROM public.airport AS
a, poly
WHERE TRUE
-- AND a.version = '82765120-5874-4598-920c-35ae3379b4b1'
-- AND ST_DWithin(a.geom::geography,poly.geom::geography,0.0)
ORDER BY a.airportident
Adding the ST_DWithin filter should not change the result as all
geometries are within the search polygon (respectively the result should
have 0 or 4 rows if outside).
But in fact, I get 6 records! The versions with uuid
718c720b-2ba4-4600-a09a-b51710fb747d are missing!
|airportident|version |
|------------|------------------------------------|
|SBAU |b25debb4-1d45-4ea8-aed0-634d6b4041fe|
|SBAU |82765120-5874-4598-920c-35ae3379b4b1|
|SBAU |2ece0394-31aa-47c9-99af-ed795bf2c83c|
|URWA |b25debb4-1d45-4ea8-aed0-634d6b4041fe|
|URWA |82765120-5874-4598-920c-35ae3379b4b1|
|URWA |2ece0394-31aa-47c9-99af-ed795bf2c83c|
Adding the version filter as well should return 2 records, but it is only 1.
|airportident|version |
|------------|------------------------------------|
|URWA |82765120-5874-4598-920c-35ae3379b4b1|
Do I miss something? My first thought was it is a corrupt index, but the
trick works without index as well. I can reproduce this effect with
PostGIS 3.4.2 / Postgresql 16.3 on Windows, as well as 3.3.3/16.4 on MS
Azure.
Greetings
Christian
Sample Data:
CREATE TABLE public.airport (
airportident character varying(5) NOT NULL,
version uuid NOT NULL,
geom public.geometry(Point,4326)
);
INSERT INTO public.airport VALUES ('SBAU',
'718c720b-2ba4-4600-a09a-b51710fb747d',
'0101000020E6100000E9933EE9933649C0B5814E1BE82435C0');
INSERT INTO public.airport VALUES ('SBAU',
'b25debb4-1d45-4ea8-aed0-634d6b4041fe',
'0101000020E6100000E9933EE9933649C0B5814E1BE82435C0');
INSERT INTO public.airport VALUES ('SBAU',
'82765120-5874-4598-920c-35ae3379b4b1',
'0101000020E6100000E9933EE9933649C0B5814E1BE82435C0');
INSERT INTO public.airport VALUES ('SBAU',
'2ece0394-31aa-47c9-99af-ed795bf2c83c',
'0101000020E6100000E9933EE9933649C0B5814E1BE82435C0');
INSERT INTO public.airport VALUES ('URWA',
'718c720b-2ba4-4600-a09a-b51710fb747d',
'0101000020E6100000F36AE259D10048404444444444244740');
INSERT INTO public.airport VALUES ('URWA',
'b25debb4-1d45-4ea8-aed0-634d6b4041fe',
'0101000020E6100000F36AE259D10048404444444444244740');
INSERT INTO public.airport VALUES ('URWA',
'82765120-5874-4598-920c-35ae3379b4b1',
'0101000020E6100000F36AE259D10048404444444444244740');
INSERT INTO public.airport VALUES ('URWA',
'2ece0394-31aa-47c9-99af-ed795bf2c83c',
'0101000020E6100000F36AE259D10048404444444444244740');
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/postgis-users/attachments/20250107/c470e0d2/attachment.htm>
More information about the postgis-users
mailing list