Tengo una idea de lo que puede funcionar para ti. Se basará en algunos supuestos, pero ayudaría a reducir su lista de posibles características idénticas. Este no sería un proceso automatizado, pero requeriría mirar manualmente los duplicados. Según los comentarios, parece que las herramientas automatizadas no comparan atributos, por lo que esto lo ayudaría a no eliminar características de forma accidental.
Usando ArcMap
(1) Haga una copia de su shapefile en caso de que las cosas salgan mal.
(2) Agregue una columna a su shapefile como doble.
(3) Calcule el área para cada entidad utilizando el formato más descriptivo (más preciso) que pueda. Algo donde el redondeo puede no ser un problema.
(4) Ejecute un resumen (resumen) en esa columna. Asegúrese de seleccionar un identificador único en el resumen y marque el primero y el último.
(5) En su mesa de salida, busque los registros en los que el recuento de campo es mayor que 1.
(6a) Verifique manualmente las características y repita el proceso hasta que no haya más duplicados.
(6b) Podría crear una lista de esos identificadores únicos y eliminar las características a través de arcpy, pero tiene la posibilidad de tener dos características no idénticas con la misma área.
Otra técnica usando ArcPy
Mientras estaba construyendo la respuesta anterior, pensé en la posibilidad de que de alguna manera los múltiples autores de estos datos pudieran haber utilizado los mismos identificadores únicos para características duplicadas. Si ese es el caso, puede encontrar duplicados a través de bucles en arcpy.
La forma en que pensaría hacer esto usando ArcPy podría ser gravoso para su sistema y tomar un poco.
(1) Haga una copia de su archivo de forma (en caso de que vuelva)
(2) Agregue una nueva columna para denotar duplicados. Algo que toma como una 'y' o 'n' o 0 o 1 o lo que sea que funcione.
(3) Cree una lista en python para almacenar el identificador único.
(4) Ejecute un cursor de actualización ( arcpy.UpdateCursor('LAYERNAME')
). Para cada registro, verifique su lista para ver si contiene ese identificador y marque su columna en busca de duplicados si está allí.
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) Luego puede comparar o hacer lo que quiera con esas columnas marcadas.
Probablemente hay mejores maneras de hacer estas comparaciones, pero creo que deberían funcionar o, al menos, comenzar.
Editar
Según el comentario de elrobis , puede utilizar el rectángulo de límite mínimo para disminuir aún más la posibilidad de eliminar características incorrectas.
Con ArcMap, puede ejecutar la herramienta Geometría de límite mínimo en Gestión de datos. Después de verificar las opciones, creo que usar la opción CONVEX_HULL probablemente sería lo mejor.
Si compara los campos MBG_APodX / Y1 , MBG_APod_X / Y2 junto con MBG_Orientation para duplicados, debería poder tener una buena idea de las características duplicadas. Sugeriría usar el método de resumen que describí anteriormente para comparar. Elija uno de los vértices (coordenadas) del rectángulo delimitador para encontrar duplicados. Puede obtener algunas "coincidencias" incidentales, pero una vez que agregue los otros vértices más orientación, sería una apuesta bastante segura que las características de resultados son duplicados.
Aunque no lo he usado y no estoy muy seguro de los resultados de esta herramienta, es posible que le resulte más fácil examinar el archivo de forma resultante si usa la herramienta Resumen de estadísticas en ArcMap. Parece que puede resumir varias columnas de esa manera en lugar de mi opción de columna única.
No creo que haya una forma completamente automática de hacer esto sin tener la preocupación de la posibilidad de eliminar una función no duplicada. Sin embargo, estos métodos deberían ayudar a limitar la cantidad de características que necesitaría revisar manualmente.