Há algum tempo, estou procurando uma resposta para a mesma pergunta para superar o achatamento do problema de polígonos de buffer sobrepostos e acho que encontrei uma solução robusta para isso. De fato, o comentário de @ Whuber,
Em princípio, o centróide, o perímetro e a área ainda podem não identificar exclusivamente um polígono, mas os contra-exemplos são um pouco artificial.
A resposta de @ Paul foi a principal motivação para eu continuar tentando. Ele usa o operador ARE_IDENTICAL_TO da ferramenta Spatial Join, pois é o mais eficiente dentre outros detectores idênticos. Aqui estão os passos:
- Auto-União sua entrada para manter todas as formas diferentes umas das outras;
- Crie um campo fictício para manter / copiar OBJECTIDs originais (ou seja, tipo de campo OID) das linhas, por exemplo, EX_OID ;
- Execute Junção Espacial na classe de recurso que deseja que seja processada como parâmetros de recurso de destino e junção. Verifique se os mapeamentos de campo dos campos fictícios (exibidos duas vezes) anteriormente criados têm a regra de mesclagem de FIRST (que é o padrão ou selecione LAST, os outros podem não fornecer a saída desejada, pois usam um resumo de sobreposições). Este passo seleciona a forma comum OBJETO localizado em cima de todas as sobreposições (isto é, PRIMEIRO);
As etapas a seguir podem ser executadas de duas maneiras: WITH Python ou WITHOUT:
WITH PYTHON
- Use o código abaixo para extrair IDs únicos que queremos encontrar:
print tuple(set([row.getValue("EX_OID_1") for row in arcpy.SearchCursor("Output_of_the_Spatial_Join_Operation")]))
.
Esteja ciente de que estou usando a segunda cópia do campo OID fictício, que é EX_OID_1 no meu caso;
- Copie a saída desse código e cole-a na
Consulta de Definição da classe de recurso original processada como
OBJECTID IN (<PASTE_COPIED_VALUES_HERE>)
. O resultado mostrará os recursos unificados das partes sobrepostas. Há uma limitação de tamanho aqui, porém, 30.000 caracteres. Para superar esse problema, você precisa seguir as etapas "sem python".
SEM PYTHON
Use a ferramenta Frequency para listar valores exclusivos na segunda cópia do campo OID fictício, que é EX_OID_1 no meu caso;
Por fim, ingresse no campo OBJECTID da classe de recurso original com a saída do EX_OID_1 da ferramenta Frequency selecionando as opções "Manter apenas registros correspondentes".