Làm cách nào để tôi viết SQL (cho PostGIS trong PostgreQuery) để loại bỏ các đa giác mảnh (bao gồm cả các khe hẹp dài và một số đa giác nhỏ không đều có lỗi 'khoảng trống' trong tập dữ liệu ban đầu) bằng cách hợp nhất với một đa giác liền kề với cạnh dài nhất?
Tôi có một tập dữ liệu (tablename: "Thảm thực vật" chứa vài nghìn đa giác được xác định là đa giác hoặc đa giác 'thực' trong cột mô tả (tên cột: "desc") là "sliver" hoặc "main". [Chỉnh sửa: Trước để nhập tập dữ liệu của tôi vào PostGIS, tôi đã làm sạch nó bằng cách nhập vào GRASS (đó cũng là cách tôi chuyển đổi tất cả các khoảng trống thành đa giác nhỏ, sau đó tôi đã hợp nhất với tập dữ liệu chính. Tôi đã tìm thấy nếu tôi tăng dung sai chụp nhanh và diện tích tối thiểu vừa qua ' 1 'trong quá trình nhập GRASS, tôi bắt đầu mất các tính năng mong muốn.]
Hiểu biết của tôi là tôi có thể cần các bước sau:
- Xác định đa giác (Vegetation.desc = "main") liền kề với mỗi mảnh (Vegetation.desc = "sliver") chia sẻ cạnh dài nhất.
- Xác định cạnh giữa mỗi mảnh và đa giác chính liền kề của nó chia sẻ cạnh dài nhất được xác định trong Bước 1. (Có thể sử dụng ST_Relate)
- Xóa cạnh giữa mỗi mảnh và đa giác chính liền kề của nó chia sẻ cạnh dài nhất bằng cách sử dụng mã định danh cạnh được trả về trong Bước 2. (Có thể sử dụng ST_RemEdgeModFace)
Tôi chỉ có một sự hiểu biết rất cơ bản về SQL và quá trình trên vượt quá khả năng của tôi.