Vấn đề này có nhiều giải pháp hợp lệ. Một trong số chúng hoạt động giống như mô tả của bạn, nhưng thay vì cắt các đa giác tại các vị trí "ngẫu nhiên", bạn có thể thực hiện nó một cách có chủ đích theo cách được thiết kế để giảm thiểu số lượng tính toán.
Đây là thuật toán cơ bản. Đầu vào của nó bao gồm bất kỳ hướng mặt phẳng quét, một đa giác P của khu vực khác không, một khu vực mục tiêu một giữa zero và diện tích của đa giác, và một ngưỡng âm t (theo đơn vị diện tích). Mục đích của nó là chia P với đường thẳng vuông góc với hướng quét thành hai phần, một bên phải của dòng và phần còn lại ở bên trái của dòng, sao cho sự khác biệt giữa khu vực bên phải và khu vực mục tiêu a là không lớn hơn t .
Đặt L là đường thẳng bất kỳ vuông góc với hướng quét. Xác định f (L) là diện tích của P được tìm thấy ở bên phải L, trừ a . Trong các điều khoản này, nhiệm vụ là tìm một số 0 của f . Bởi vì f không có khả năng khác biệt, nhưng là liên tục, nên sử dụng phương pháp chia đôi, phương thức bảo mật hoặc - phương thức ưa thích của tôi - -Brent ' . Tất cả đều đơn giản và đảm bảo để hội tụ. Sử dụng t cho dung sai hội tụ cho đối số.
Đó là nó. Hãy xem xét những gì đi vào mã hóa này. Việc tìm kiếm gốc là thông lệ - bạn có thể sử dụng một đoạn mã chung cho nó - vì vậy công việc của GIS chuyển sang mã hóa f . Làm như vậy đòi hỏi
1. Splitting the polygon by a line.
2. Computing the area of the piece(s) to the right of the line.
Cả hai hoạt động được thực hiện trong hầu hết các hệ thống GIS dựa trên vector. Nếu không, bạn có thể thay thế dòng bằng một hình chữ nhật rất lớn đại diện cho nửa mặt phẳng bên phải của dòng. Bước 1 trở thành
1'. Clip the polygon to the rectangle.
Đó là một hoạt động thực sự cơ bản.
Để bắt đầu với việc tìm kiếm root, bạn cần tìm một khoảng trong đó số 0 của f được đảm bảo để nói dối. Điều này thật dễ dàng: chiếu đường bao của đa giác ("hộp giới hạn") vào hướng quét đường. Hình chiếu là khoảng thời gian bạn muốn.
Câu hỏi này có một lịch sử lâu dài. Tôi đã triển khai thuật toán này cho ArcView 3.x từ lâu và đã mô tả nó nhiều lần trong các diễn đàn người dùng ESRI cũ. Google
trang web đa giác chia huber: forum.esri.com
để thảo luận, liên kết đến mã, cải tiến và biến thể (chẳng hạn như chia đa giác thành các phần có kích thước mong muốn nhỏ gọn nhất có thể) và thuật toán cho dữ liệu raster.
Đây là những gì các quốc gia Hoa Kỳ lục địa trông giống như (trong một hình chiếu diện tích bằng nhau) với một phần ba dưới cùng của mỗi tiểu bang được tô bóng. Rõ ràng là hướng quét là thẳng đứng.