He estado buscando una respuesta a la misma pregunta durante algún tiempo para superar el aplanamiento del problema de los polígonos de búfer superpuestos y creo que encontré una solución sólida para eso. De hecho, el comentario de @ Whuber,
En principio, el centroide, el perímetro y el área aún no pueden identificar unívocamente un polígono, pero los contraejemplos son un poco artificiales.
en la respuesta de @ Paul fue el impulso principal para mí seguir intentándolo. Utiliza el operador ARE_IDENTICAL_TO de la herramienta de unión espacial , ya que es el más eficiente entre otros detectores idénticos. Aquí están los pasos:
- Auto Unión de su entrada para mantener todas las formas diferentes entre sí;
- Cree un campo ficticio para mantener / copiar los OBJECTID originales (es decir, el tipo de campo OID) de las filas, por ejemplo EX_OID ;
- Ejecute la unión espacial en la clase de entidad que se desea procesar como parámetros de entidad de destino y unión. Asegúrese de que las asignaciones de campo de campo (s) ficticio (aparece dos veces) creado previamente tiene la regla de fusión de PRIMERO (que es el valor predeterminado o elegir ÚLTIMO, los demás pueden no dar el resultado deseado ya que utilizan un resumen de superposiciones). Este paso selecciona la forma común OBJECTID que se encuentra encima de todas las superposiciones (es decir, PRIMERO);
Los siguientes pasos se pueden hacer de dos maneras, CON Python o SIN:
Con pitón
- Use el siguiente código para extraer las ID únicas que queremos encontrar:
print tuple(set([row.getValue("EX_OID_1") for row in arcpy.SearchCursor("Output_of_the_Spatial_Join_Operation")]))
.
Tenga en cuenta que estoy usando la segunda copia del campo OID ficticio, que es EX_OID_1 en mi caso;
- Copie el resultado de este código y péguelo en la
Consulta de definición de la clase de entidad original procesada como
OBJECTID IN (<PASTE_COPIED_VALUES_HERE>)
. El resultado le mostrará las características unificadas de las partes superpuestas. Sin embargo, aquí hay una limitación de tamaño, 30,000 caracteres. Para superar este problema, debe seguir los pasos "sin python".
SIN PITÓN
Use la herramienta Frecuencia para enumerar valores únicos en la segunda copia del campo OID ficticio, que es EX_OID_1 en mi caso;
Por último, únase al campo OBJECTID de la clase de entidad original con la salida del EX_OID_1 de la herramienta Frecuencia seleccionando las opciones "Mantener solo registros coincidentes".