Eu tenho uma idéia do que pode funcionar para você. Ele será baseado em algumas suposições, mas ajudaria a restringir sua lista de possíveis recursos idênticos. Isso não seria um processo automatizado, mas exigiria uma análise manual das duplicatas. Com base nos comentários, parece que as ferramentas automatizadas não comparam atributos, o que ajudaria você a não excluir recursos de forma acidental.
Usando o ArcMap
(1) Faça uma cópia do seu arquivo shapefile, caso algo dê errado.
(2) Adicione uma coluna ao seu shapefile como um duplo.
(3) Calcule a área para cada recurso usando o formato mais descritivo (mais preciso) possível. Algo em que o arredondamento pode não ser um problema.
(4) Execute um resumo (resumo) nessa coluna. Certifique-se de selecionar um identificador exclusivo no resumo e marcar o primeiro e o último.
(5) Na sua tabela de saída, procure os registros em que o campo de contagem é maior que 1.
(6a) Verifique manualmente os recursos e repita o processo até que não haja mais duplicatas.
(6b) Você pode apenas criar uma lista desses IDs exclusivos e excluir os recursos pelo arcpy, mas corre a chance de possivelmente ter dois recursos não idênticos na mesma área.
Outra técnica usando o ArcPy
Enquanto construía a resposta acima, pensei na possibilidade de que, de alguma forma, os vários autores desses dados possam realmente usar os mesmos identificadores exclusivos para recursos duplicados. Se for esse o caso, você poderá encontrar duplicatas através de loop no arcpy.
A maneira como eu pensaria em fazer isso usando o ArcPy poderia sobrecarregar o seu sistema e demorar um pouco.
(1) Faça uma cópia do seu shapefile (no caso novamente)
(2) Adicione uma nova coluna para indicar duplicatas. Algo que leva como 'y' ou 'n' ou 0 ou 1 ou o que quer que funcione.
(3) Crie uma lista em python para armazenar o identificador exclusivo.
(4) Execute um cursor de atualização ( arcpy.UpdateCursor('LAYERNAME')
). Para cada registro, verifique a lista para ver se ele contém esse identificador e marque sua coluna para duplicatas, se houver.
myList = []
rows = arcpy.UpdateCursor("layername")
for row in rows:
if str(row.UniqueIdentifier) in myList:
#value duplicated
row.DuplicateColumnName = "y"
else:
#not there, add it
myList.append(row.UniqueIdentifier)
rows.updateRow(row)
(5) Em seguida, você pode comparar ou fazer o que quiser com as colunas marcadas.
Provavelmente, existem maneiras melhores de fazer essas comparações, mas essas são duas que, acredito, devem funcionar ou, pelo menos, começar.
Editar
Com base no comentário de elrobis , você pode utilizar o retângulo delimitador mínimo para diminuir ainda mais a chance de remover recursos incorretos.
Usando o ArcMap, você pode executar a ferramenta Geometria Limite Mínima no Gerenciamento de Dados. Depois de verificar as opções, acho que usar a opção CONVEX_HULL provavelmente seria o melhor.
Se você comparar os campos MBG_APodX / Y1 , MBG_APod_X / Y2 e MBG_Orientation para duplicatas, poderá ter uma boa idéia dos recursos duplicados. Eu sugeriria o uso do método Summarize que descrevi acima para comparar. Escolha um dos vértices (coordenadas) do retângulo delimitador para encontrar duplicatas. Você pode receber algumas "correspondências" incidentais, mas depois de adicionar outros vértices e orientação, seria uma aposta bastante segura que os recursos dos resultados sejam duplicados.
Embora eu não o tenha usado e não tenha certeza dos resultados dessa ferramenta, talvez seja mais fácil examinar o arquivo shapefile resultante se você usou a ferramenta Summary Statistics no ArcMap. Parece que você pode resumir várias colunas dessa maneira, em vez da minha opção de coluna única.
Eu não acho que haveria uma maneira totalmente automatizada de fazer isso sem ter a preocupação de excluir um recurso não duplicado. Esses métodos devem ajudar a limitar o número de recursos que você precisaria revisar manualmente.