Ihr Problem liegt wahrscheinlich daran, was Sie nach Feld in die Gruppe aufgenommen haben.
ST_UNION ist eine Aggregatfunktion, dh sie wird basierend auf dem, was Sie als GROUP
Parameter angeben , aufgelöst.
Folgendes haben Sie eingegeben:
SELECT c.fid, ST_Union(c.boundaryshape) FROM c Group by c.fid,c.boundaryshape;
Demnach gruppieren Sie nach Ihrer fid
, die wahrscheinlich eine eindeutige Kennung ist, und auch nach boundaryshape
der Geometrie. Das Problem dabei ist, dass es höchst unwahrscheinlich ist, dass die Features, die eine eindeutige ID gemeinsam haben, identische Geometrien aufweisen. Daher wird das ST_Union
wahrscheinlich mit so etwas wie dem folgenden enden:
Input:
fid boundaryshape
1 11
1 12
1 11
1 13
2 12
2 13
2 12
3 5
3 2
3 4
Output:
fid boundaryshape
1 (11 + 11)
1 12
1 13
2 (12 + 12)
2 13
3 2
3 4
3 5
In diesem Fall sollten Sie sich nur auf der Grundlage Ihrer eindeutigen Kennung auflösen, es sei denn, Sie haben tatsächlich mehrere doppelte Geometrien mit derselben fid
, die Sie entfernen möchten. Selbst in dieser Situation sollten Sie nur anhand der gruppieren müssen fid
, und die Vereinigung kümmert sich um die Geometrieduplizierung.
Ich würde folgendes versuchen:
SELECT c.fid, ST_Union(c.boundaryshape) FROM c GROUP BY c.fid;
Das sollte Ihnen das gewünschte Ergebnis bringen, wenn Sie alle Funktionen basierend auf dem gemeinsamen Attribut auflösen fid
.
Hier ist das Hilfedokument auf der PostGIS-Site: ST_Union
Sehen Sie sich das erste unten aufgeführte Beispiel an und beachten Sie, dass die Geometrie nicht in der Gruppe nach Abschnitt enthalten ist.