Ich frage mich, wie hoch die Präzision des SELECT DISTINCT
Operators in einer PostGIS-Geometrie ist. Auf meinem System gibt die folgende Abfrage eine Anzahl von 5 an, was bedeutet, dass die eingefügten Punkte als gleich angesehen werden, wenn sie sich um weniger als 1e-5 unterscheiden, und ich bin nicht sicher, ob dies eine Funktion von PostGIS ist, ein Problem meiner Installation oder ein Bug.
Weiß jemand, ob das das erwartete Verhalten ist?
CREATE TEMP TABLE test (geom geometry);
INSERT INTO test
VALUES
(St_GeomFromText('POINT (0.1 0.1)')),
(St_GeomFromText('POINT (0.001 0.001)')),
(St_GeomFromText('POINT (0.0001 0.0001)')),
(St_GeomFromText('POINT (0.00001 0.00001)')),
(St_GeomFromText('POINT (0.000001 0.000001)')),
(St_GeomFromText('POINT (0.0000001 0.0000001)')),
(St_GeomFromText('POINT (0.00000001 0.00000001)')),
(St_GeomFromText('POINT (0.000000001 0.000000001)'));
SELECT COUNT(*) FROM (SELECT DISTINCT geom FROM test) AS test;
count
-------
5
(1 row)
Ich benutze:
$ psql --version
psql (PostgreSQL) 9.3.1
und
SELECT PostGIS_full_version();
----------------------------------------------------------------------------------------------------------------------------------------------------------------------
POSTGIS="2.1.1 r12113" GEOS="3.4.2-CAPI-1.8.2 r3921" PROJ="Rel. 4.8.0, 6 March 2012" GDAL="GDAL 1.10.1, released 2013/08/26" LIBXML="2.7.3" LIBJSON="UNKNOWN" RASTER
unter OSX 10.9