Vấn đề của bạn có thể là do những gì bạn đã đưa vào nhóm theo lĩnh vực.
ST_UNION là một hàm tổng hợp, có nghĩa là nó đang hòa tan dựa trên những gì bạn chỉ định làm GROUP
tham số.
Đây là những gì bạn đã nhập:
SELECT c.fid, ST_Union(c.boundaryshape) FROM c Group by c.fid,c.boundaryshape;
Theo đó, bạn đang nhóm theo bạn fid
, có lẽ là một định danh duy nhất, và cũng bởi boundaryshape
, đó là hình học. Vấn đề với điều này là rất khó có khả năng các tính năng chia sẻ một ID duy nhất, sẽ có hình dạng giống hệt nhau. Do đó, ST_Union
có lẽ sẽ kết thúc với một cái gì đó như sau:
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
Trong trường hợp này, bạn chỉ nên giải thể dựa trên số nhận dạng duy nhất của mình, trừ khi bạn thực sự có một số hình học trùng lặp giống nhau fid
, mà bạn đang cố gắng loại bỏ. Ngay cả trong tình huống đó, bạn chỉ cần nhóm theo fid
, và liên minh sẽ đảm nhiệm việc sao chép hình học.
Tôi sẽ thử như sau:
SELECT c.fid, ST_Union(c.boundaryshape) FROM c GROUP BY c.fid;
Điều đó sẽ cung cấp cho bạn kết quả mong muốn của việc hòa tan tất cả các tính năng dựa trên thuộc tính chung fid
.
Đây là tài liệu trợ giúp tại trang PostGIS: ST_Union
Xem ví dụ đầu tiên được liệt kê ở phía dưới và lưu ý rằng nó không bao gồm hình học trong nhóm theo từng phần.