Votre problème est probablement dû à ce que vous avez inclus dans le champ group by.
ST_UNION est une fonction d'agrégation, ce qui signifie qu'elle se dissout en fonction de ce que vous spécifiez comme GROUP
paramètre.
Voici ce que vous avez entré:
SELECT c.fid, ST_Union(c.boundaryshape) FROM c Group by c.fid,c.boundaryshape;
Selon cela, vous regroupez par votre fid
, qui est probablement un identifiant unique, et aussi par boundaryshape
, qui est la géométrie. Le problème est qu'il est très peu probable que les entités partageant un identifiant unique aient des géométries identiques. Par conséquent, le ST_Union
va probablement se retrouver avec quelque chose comme ce qui suit:
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
Dans ce cas, vous ne devriez dissoudre que sur la base de votre identifiant unique, sauf si vous avez en fait un certain nombre de géométries en double avec le même fid
, dont vous essayez de vous débarrasser. Cependant, même dans cette situation, vous ne devez regrouper que sur la base du fid
, et le syndicat se chargera de la duplication de la géométrie.
J'essaierais ce qui suit:
SELECT c.fid, ST_Union(c.boundaryshape) FROM c GROUP BY c.fid;
Cela devrait vous donner le résultat souhaité de la dissolution de toutes les fonctionnalités en fonction de l'attribut commun fid
.
Voici le document d'aide sur le site PostGIS: ST_Union
Voir le premier exemple répertorié en bas et notez qu'il n'inclut pas la géométrie dans la section grouper par.