J'essaie d'obtenir un équivalent à l'outil Dissoudre d'ArcGIS for Desktop en utilisant ST_Union de PostGIS, mais il semble que je n'obtienne pas le résultat attendu.
J'ai une table qui a certains attributs avec la géométrie du polygone. (comme FID, Locstat, Loccnt, Shape)
Voici ma requête:
SELECT c.fid, ST_Union(c.boundaryshape) FROM c Group by c.fid,c.boundaryshape;
Réponses:
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 parboundaryshape
, 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, leST_Union
va probablement se retrouver avec quelque chose comme ce qui suit: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 dufid
, 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.
la source