Làm cách nào để đạt được tương đương với Hòa tan từ ArcGIS cho Máy tính để bàn bằng ST_Union?


11

Tôi đang cố gắng đạt được một công cụ tương đương với công cụ Dissolve từ ArcGIS cho máy tính để bàn bằng ST_Union từ PostGIS nhưng có vẻ như tôi không nhận được kết quả như mong đợi.

Tôi có một bảng có các thuộc tính nhất định với Hình học đa giác. (như FID, Locstat, Loccnt, Shape)

Đây là truy vấn của tôi:

SELECT c.fid, ST_Union(c.boundaryshape) FROM c Group by c.fid,c.boundaryshape;

1
Bạn có thể giải thích những kết quả mà bạn mong đợi và những gì bạn nhận được? Đang chạy: CHỌN AsText (ST_Union ...) TỪ ... có thể giúp tìm lỗi.
Micha

Trong bảng tôi có 6842 bản ghi, theo kết quả ArcGIS, tôi sẽ nhận được 1683 bản ghi khi sử dụng truy vấn tôi nhận được 6842 bản ghi. Tôi cũng đã thử ST_Aggr_Union cung cấp cho tôi 742 Bản ghi với nhiều Hình học null.
Dhams

Câu trả lời:


14

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 GROUPtham 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_Unioncó 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.


1
Trong một số trường hợp, tốt hơn là chụp hình học vào lưới trước khi thực hiện liên kết: SELECT ST_Union (ST_SnapToGrid (geom, 0,0001)) TỪ nhóm Geo_area theo level_identifier;
Maxim Eliseev
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.