Eu tenho uma classe de recurso de ponto que representa os locais de escritório de todos os empregadores em um determinado setor. A classe de recurso tem um atributo para armazenar o número de funcionários que trabalham em cada escritório. Alguém solicitou o uso desses dados, unidos espacialmente à menor unidade geográfica possível - Blocos de Censo, neste caso. No entanto, um contrato de privacidade impede a liberação dos dados como estão. Em vez disso, ele deve ser suprimido para atender a dois critérios:
- Qualquer polígono deve conter pelo menos 3 empregadores (pontos);
- Não mais que 80% do emprego total em um polígono pode ser de um único empregador.
Escrevi com sucesso um roteiro que une espacialmente os pontos aos Blocos do Censo, mantendo a soma e o emprego máximo em cada um. Cada um que não atende aos critérios de supressão é sinalizado. (Os polígonos que não contêm pontos não são sinalizados, pois não há dados a serem suprimidos.) Em seguida, verifico cada grupo de blocos para ver se existem blocos sinalizados nele. Os grupos de blocos que contêm apenas blocos não sinalizados são substituídos pelos blocos. A classe de recursos resultante é então verificada com base nos critérios de supressão, para verificar se os Grupos de Blocos suprimiram adequadamente os dados.
O mesmo processo é repetido para os folhetos, deixando-me com um conjunto de dados composto por folhetos (alguns sinalizados e outros não), grupos de blocos e blocos (todos não sinalizados). A próxima progressão na hierarquia geográfica, no entanto, é o município, que não tem utilidade para a pessoa que solicita esses dados.
Minha pergunta, então, é a seguinte: Existem métodos comumente aceitos para agregar polígonos no maior número possível de grupos, para que todos atendam a alguns critérios mínimos?
Aqui estão algumas regras que eu gostaria de aplicar à agregação:
- Sempre que possível, os folhetos sinalizados só devem ser agregados com outros folhetos sinalizados;
- Para os Tratados sinalizados que não são contíguos a outros (ou grupos isolados que ainda não atendem aos critérios), eles podem ser associados aos Tratados que já atendem aos critérios, embora possa haver Tratados sem empregadores entre eles que também precisa ser incluído.
- Eu gostaria de manter os limites do condado intactos, a menos que seja absolutamente impossível (e espero fazer isso separando os recursos de entrada em seus respectivos países antes de processá-los).
- A solução deve estar em Python, com o uso de ferramentas ArcGIS ou bibliotecas Python de código aberto.
Idealmente, alguém pode me indicar um meio existente de implementar essa agregação. Caso contrário, fico feliz em codificar o algoritmo, embora uma lista de etapas / ferramentas específicas seja muito apreciada. O problema me parece um caso especial de redistribuição (com polígonos descontínuos ) e, para esse fim, analisei o uso dos algoritmos de regionalização do PySAL , embora não esteja claro para mim como verificar a porcentagem máxima de empregadores no total de funcionários usando esses algoritmos . .