У мене є точковий клас функцій, який представляє офісні місця всіх роботодавців у певній галузі. Клас функцій має атрибут для зберігання кількості співробітників, що працюють в кожному офісі. Хтось попросив використати ці дані, просторово приєднані до найменшої можливої географічної одиниці - Блоків перепису, в цьому випадку. Однак угода про конфіденційність перешкоджає звільненню даних як є. Натомість його потрібно придушити, щоб відповідати двом критеріям:
- Будь-який багатокутник повинен містити щонайменше трьох роботодавців (балів);
- Не більше 80% загальної зайнятості на полігоні може бути одним роботодавцем.
Я успішно написав сценарій, який просторово приєднує бали до Блоків перепису, зберігаючи суму і максимальну зайнятість у кожному. Кожен, який не відповідає критеріям придушення, позначений прапором. (Полігони, що не містять точок, не позначаються, оскільки немає даних для їх придушення.) Потім я перевіряю кожну групу блоків, щоб побачити, чи містяться в ній якісь позначені блоки Групи блоків, що містять лише блоки, які не позначені прапором, потім замінюються на Блоки. Потім отриманий клас функцій перевіряється на відповідність критеріям придушення, щоб перевірити, чи адекватно придушили дані групи блоків.
Той самий процес повторюється і для трактів, залишаючи мені набір даних, що складається з трактів (деякі відмічені, а деякі ні), груп блоків та блоків (усі не позначені прапорцями). Наступним прогресом в географічній ієрархії, однак, є графство, яке не приносить користі особі, яка запитує ці дані.
Моє запитання таке: чи існують якісь загальноприйняті методи агрегації полігонів на якомога більше груп, щоб усі відповідали деяким мінімальним критеріям?
Ось декілька правил, які я хотів би застосувати до сукупності:
- По можливості, позначені тракти повинні бути об'єднані лише з іншими прапорами;
- Для позначених урочищ, які не є суміжними з будь-якими іншими (або відокремленими угрупованнями, які все ще не відповідають критеріям), їх можна приєднати до урочищ, які вже відповідають критеріям, хоча між ними можуть бути урочища, у яких немає роботодавців, які також будуть потрібно включити.
- Я хотів би зберегти кордони округу недоторканими, якщо це абсолютно неможливо (і я передбачаю, що це буде зроблено, розділивши вхідні функції у відповідні округи перед їх обробкою).
- Рішення повинно бути в Python, з використанням інструментів ArcGIS або бібліотек з відкритим кодом Python.
В ідеалі хтось може вказати мені на існуючий спосіб реалізації цього агрегування. Якщо ні, я радий сам кодувати алгоритм, хоча список конкретних кроків / інструментів буде дуже вдячний. Проблема вражає мене як особливий випадок перерозподілу (із неоднорідними багатокутниками), і для цього я розглядав використання алгоритмів регіоналізації PySAL , хоча мені не зовсім зрозуміло, як перевірити максимальний відсоток роботодавців у загальній кількості працівників, які використовують ці .