ปัญหาของคุณน่าจะเป็นเพราะสิ่งที่คุณได้รวมไว้ในกลุ่มโดยเขต
ST_UNION เป็นฟังก์ชั่นรวมซึ่งหมายความว่ามันจะละลายขึ้นอยู่กับสิ่งที่คุณระบุเป็นGROUP
พารามิเตอร์
นี่คือสิ่งที่คุณป้อน:
SELECT c.fid, ST_Union(c.boundaryshape) FROM c Group by c.fid,c.boundaryshape;
ตามนี้คุณกำลังจัดกลุ่มโดยของคุณfid
ซึ่งอาจเป็นตัวระบุที่ไม่ซ้ำกันและด้วยboundaryshape
ซึ่งเป็นรูปทรงเรขาคณิต ปัญหาของเรื่องนี้ก็คือมันไม่น่าเป็นไปได้อย่างมากที่ฟีเจอร์ที่ใช้รหัสเฉพาะจะมีรูปทรงเหมือนกัน ดังนั้นST_Union
อาจจะจบลงด้วยสิ่งดังต่อไปนี้:
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
ในกรณีนี้คุณควรละลายโดยใช้ตัวระบุที่ไม่ซ้ำกันของคุณเท่านั้นเว้นแต่ว่าคุณมีรูปทรงเรขาคณิตที่ซ้ำกันจำนวนมากที่เหมือนกันfid
ซึ่งคุณกำลังพยายามกำจัด แม้ว่าในสถานการณ์นั้นคุณควรจัดกลุ่มตามfid
และสหภาพจะดูแลการทำซ้ำเรขาคณิต
ฉันจะลองต่อไปนี้:
SELECT c.fid, ST_Union(c.boundaryshape) FROM c GROUP BY c.fid;
fid
ที่ควรให้ผลที่ต้องการของการละลายคุณสมบัติทั้งหมดขึ้นอยู่กับคุณลักษณะทั่วไป
นี่คือเอกสารช่วยเหลือที่ไซต์ PostGIS: ST_Union
ดูตัวอย่างแรกที่แสดงอยู่ที่ด้านล่างและสังเกตเห็นว่ามันไม่ได้รวมรูปทรงเรขาคณิตในกลุ่มโดยส่วน