Su problema probablemente se deba a lo que ha incluido en el grupo por campo.
ST_UNION es una función agregada, lo que significa que se está disolviendo en función de lo que especifique como GROUP
parámetro.
Esto es lo que ingresó:
SELECT c.fid, ST_Union(c.boundaryshape) FROM c Group by c.fid,c.boundaryshape;
De acuerdo con esto, está agrupando por su fid
, que probablemente sea un identificador único, y también por boundaryshape
, que es la geometría. El problema con esto es que es muy poco probable que las características que comparten una ID única tengan geometrías idénticas. Por lo tanto, ST_Union
probablemente terminará con algo como lo siguiente:
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
En este caso, solo debe disolverse en función de su identificador único, a menos que en realidad tenga varias geometrías duplicadas con las mismas fid
, de las que está tratando de deshacerse. Sin embargo, incluso en esa situación, solo debe agruparse en función de fid
, y la unión se encargará de la duplicación de la geometría.
Intentaría lo siguiente:
SELECT c.fid, ST_Union(c.boundaryshape) FROM c GROUP BY c.fid;
Eso debería darle el resultado deseado de disolver todas las características basadas en el atributo común fid
.
Aquí está el documento de ayuda en el sitio PostGIS: ST_Union
Vea el primer ejemplo que figura en la parte inferior y observe que no incluye la geometría en el grupo por sección.