Hi list,

I've been struggling around with ST_Union, which gave me a headache for a while. My example is quite simple: I have envelopes of 2 raster tiles (hence supposedly aligned), which I want to union using ST_Union. Here is what I'm able to do:

CREATE TABLE twotiles AS
SELECT
'0103000020E6100000010000000500000062105839B44854C06E3D0AD7A380394062105839B44854C06466666666563A4025068195431354C06466666666563A4025068195431354C06E3D0AD7A380394062105839B44854C06E3D0AD7A3803940'::geometry
UNION
SELECT '0103000020E6100000010000000500000024068195431354C06E3D0AD7A380394024068195431354C06466666666563A40E7FBA9F1D2DD53C06466666666563A40E7FBA9F1D2DD53C06E3D0AD7A380394024068195431354C06E3D0AD7A3803940'::geometry;

This creates the two envelopes with the exact geometries given by ST_Envelope. The expected result after ST_Union should have only 1 line (one polygon), but it's not the case:

SELECT ST_Dump(ST_Union(geometry)) AS geom FROM twotiles;

returns 2 lines. As a matter of fact, if you can zoom enough on the two polygons, there is a tiny difference between them, of about 0.00000000000001 m, which is enough for ST_Union to not union the two polygons... With the help of Pierre Racine, I was able to solve this problem using ST_SnapToGrid with a very fine resolution (so that it doesn't really affect the output), but I wonder whether there shouldn't be a parameter of tolerance in ST_Union to make this more transparent and flexible to the user?

Sincerely,
Mathieu Basille.


--

~$ whoami
Mathieu Basille, PhD

~$ locate --details
University of Florida \\
Fort Lauderdale Research and Education Center
(+1) 954-577-6314
http://ase-research.org/basille

~$ fortune
« Le tout est de tout dire, et je manque de mots
Et je manque de temps, et je manque d'audace. »
 -- Paul Éluard
_______________________________________________
postgis-users mailing list
[email protected]
http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users

Reply via email to