Có một tập các điểm (2D) từ tệp GIS (bản đồ thành phố), tôi cần tạo đa giác xác định 'đường viền' cho bản đồ đó (ranh giới của nó). Các tham số đầu vào của nó sẽ là các điểm được thiết lập và một 'độ dài cạnh tối đa'. Sau đó nó sẽ xuất ra đa giác tương ứng (có thể không lồi).Có một thuật toán hiệu quả để tạo ra một thân lõm 2D?
Giải pháp tốt nhất mà tôi tìm thấy cho đến nay là tạo các tam giác Delaunay và sau đó loại bỏ các cạnh bên ngoài dài hơn độ dài cạnh tối đa. Sau khi tất cả các cạnh bên ngoài ngắn hơn, tôi chỉ cần loại bỏ các cạnh bên trong và lấy đa giác mà tôi muốn. Vấn đề là, điều này là rất tốn thời gian và tôi tự hỏi nếu có một cách tốt hơn.
Bạn nói rằng bạn có một tập tin GIS - là bạn không sử dụng một ứng dụng bản đồ GIS/phần mềm? Tôi biết rằng máy chủ ArcGIS sẽ tiêu thụ một cách hạnh phúc bất kỳ số điểm nào và vẽ lên một bản đồ chồng chéo với đa giác kết quả. – Ian
Có, tôi có một tệp GIS nhưng tôi cần viết thuật toán (trong C hoặc C++, có lẽ), được đặt trong một chương trình đã tồn tại và không nên sử dụng các công cụ bên ngoài (như ArcGIS) để làm điều đó, nó cần phải được khép kín. –
Thực ra, tôi không nghĩ rằng ArcGIS có một thuật toán tích hợp để làm những gì anh ta muốn.ArcGIS có khả năng làm vỏ lồi, nhưng những cái lõm thì phức tạp hơn nhiều. –