Eu preciso de uma maneira de mesclar programaticamente células de grade (polígono 15x15m) que estão diretamente umas sobre as outras e adicionar alguns de seus atributos.
Estou trabalhando no ArcGIS 10.1 com os dados armazenados como uma classe de recurso de polígono.
Os dados são o resultado da pesquisa de pedestres em uma grade predefinida. Ocasionalmente, as pessoas que conduzem a pesquisa com pedestres saem do curso e gravam algo em uma coluna ou linha adjacente àquela em que estão trabalhando (ou a posição do GPS vagueia). Isso resulta em dois conjuntos de dados sendo gravados para cada célula quando os dados de várias unidades GPS são anexados em uma única classe de recurso. Eu preciso de uma maneira de percorrer cada célula, verificar se há algum recurso duplicado, se há, então, mesclar seus atributos (algum número inteiro, algum texto) e excluir o único recurso que não obteve os dados mesclados.
As ferramentas 'Excluir idêntico' e 'Localizar idêntico' não fazem o que estou procurando - e fazê-lo manualmente não é uma opção, pois a classe de recurso geralmente possui mais de 10.000 recursos.
Eu sei como percorrer a classe de recurso usando python e verificar se existem recursos duplicados nesse local. O que não sei fazer é lidar com a mesclagem dos recursos e a atualização dos atributos. Se alguém puder oferecer alguma orientação sobre como fazer isso, eu agradeceria muito.
EDIT - Mais descrição do estado antes / depois: Na imagem abaixo, há dois recursos selecionados - polígonos idênticos de 15x15 metros quadrados, preciso adicionar todos os campos inteiros (aqueles com TOT_ como prefixo) e anexar o GPS_UNIT, INITIALS e REC_DATE.
É difícil mostrar, pois os recursos se sobrepõem diretamente.
EDIT 2: Descobri que posso identificar facilmente os recursos duplicados calculando seus centros XY, concatenando-os em um campo de string como [X] e ',' e [Y] e abrindo o banco de dados no acesso e usando uma consulta Localizar Duplicatas para identificar quais células foram duplicadas. No entanto, não consegui descobrir uma boa maneira de mesclar os atributos de cada célula em uma única linha. Ajuda com como fazer isso, seja em python ou em um ambiente de banco de dados, seria muito bem-vinda!
Respostas:
Como você sabe como iterar e encontrar os recursos que deseja mesclar, eu criaria uma função para fazer a mesclagem que provavelmente poderia ser arcpy.Dissovle_management (). Faça a dissolução e você provavelmente poderá usar os parâmetros de agregação para combinar os atributos, excluir esses recursos do original e atualizar os dados novamente com um cursor de inserção.
Como você identifica quais recursos precisam ser mesclados?
fonte
Acabei resolvendo esse problema depois de migrar para o Postgres e ter algumas ferramentas mais poderosas em mãos. Minha solução foi simplesmente excluir recursos extras com campos GEOM idênticos - deixando um, é claro, e depois recalcular os valores dos outros dados coletados durante o trabalho de campo. Isso me deu um conjunto de dados sem recursos coincidentes espacialmente e totais precisos nas tabelas de atributos. O código PHP completo que eu usei está abaixo; Estou certo de que o mesmo poderia ser realizado em Python, mas o PHP era a rota mais fácil para mim na época.
fonte
Como você deseja mesclar atributos para células (na verdade polígonos) idênticos, eu usaria Union e manteria todos os atributos. Dessa forma, você pode percorrer todos os polígonos (células) resultantes e ter acesso aos dois conjuntos de atributos originais para escrever quaisquer novos valores que desejar. Se os mesmos nomes de atributo forem usados pelas duas classes de recursos originais, talvez seja necessário renomear os campos antes da União para que ambos permaneçam disponíveis.
Na verdade, uma rápida releitura de sua pergunta me diz que você tem apenas uma classe de recurso de entrada. A união ainda pode ser útil porque pode ser executada em uma única classe de recurso, conforme descrito aqui .
fonte