Tôi có một lớp tính năng đại diện cho các địa điểm văn phòng của tất cả các nhà tuyển dụng trong một ngành công nghiệp nhất định. Lớp tính năng có một thuộc tính để lưu trữ số lượng nhân viên làm việc tại mỗi văn phòng. Ai đó đã yêu cầu sử dụng dữ liệu này, tham gia không gian đến đơn vị địa lý nhỏ nhất có thể - Khối điều tra dân số, trong trường hợp này. Tuy nhiên, một thỏa thuận bảo mật sẽ ngăn chặn việc phát hành dữ liệu. Thay vào đó, nó phải được loại bỏ để đáp ứng hai tiêu chí:
- Bất kỳ đa giác phải chứa ít nhất 3 nhà tuyển dụng (điểm);
- Không quá 80% tổng số việc làm trong một đa giác có thể chỉ bởi một chủ nhân.
Tôi đã viết thành công một kịch bản tham gia không gian các điểm vào Khối điều tra dân số, giữ tổng số và việc làm tối đa trong mỗi tập lệnh. Mỗi một tiêu chí không đáp ứng các tiêu chí đàn áp được gắn cờ. (Đa giác không chứa điểm nào không được gắn cờ, vì không có dữ liệu để triệt tiêu.) Sau đó tôi kiểm tra từng Nhóm Khối để xem có bất kỳ Khối được gắn cờ nào trong đó không. Các nhóm Khối chỉ chứa các Khối không được gắn cờ sau đó được thay thế bằng các Khối. Sau đó, lớp tính năng kết quả được kiểm tra theo các tiêu chí triệt tiêu, để kiểm tra xem các Nhóm Khối có triệt tiêu dữ liệu hay không.
Quá trình tương tự được lặp lại cho các Vùng, để lại cho tôi một bộ dữ liệu bao gồm các Vùng (một số được gắn cờ và một số không), Khối Nhóm và Khối (tất cả không được gắn cờ). Tuy nhiên, sự tiến triển tiếp theo trong hệ thống phân cấp địa lý là quận, không có ích cho người yêu cầu dữ liệu này.
Sau đó, câu hỏi của tôi là: Có phương pháp nào được chấp nhận phổ biến để tổng hợp đa giác thành nhiều nhóm nhất có thể, để tất cả đáp ứng một số tiêu chí tối thiểu không?
Dưới đây là một số quy tắc mà tôi muốn áp dụng cho tổng hợp:
- Bất cứ khi nào có thể, các Vùng được gắn cờ chỉ nên được tổng hợp với các Vùng được gắn cờ khác;
- Đối với các Vùng được gắn cờ không tiếp giáp với bất kỳ vùng nào khác (hoặc các nhóm bị cô lập vẫn không đáp ứng các tiêu chí), chúng có thể được tham gia với các Vùng đã đáp ứng các tiêu chí, mặc dù có thể có các Vùng không có chủ nhân ở giữa chúng. cần được đưa vào
- Tôi muốn giữ nguyên ranh giới của quận trừ khi hoàn toàn không thể (và tôi dự đoán sẽ làm điều này bằng cách tách các tính năng đầu vào thành các hạt tương ứng trước khi xử lý chúng).
- Giải pháp phải bằng Python, với việc sử dụng các công cụ ArcGIS hoặc thư viện Python nguồn mở.
Lý tưởng nhất, ai đó có thể chỉ cho tôi một phương tiện hiện có để thực hiện tập hợp này. Nếu không, tôi rất vui khi tự viết mã thuật toán, mặc dù một danh sách các bước / công cụ cụ thể sẽ được đánh giá cao. Vấn đề gây ra cho tôi như là một trường hợp đặc biệt của việc phân phối lại (với các đa giác không liền kề) và đến cuối cùng, tôi đã xem xét sử dụng các thuật toán khu vực hóa của PySAL , mặc dù tôi không rõ cách kiểm tra tỷ lệ phần trăm nhân viên tối đa sử dụng chúng .