¿Eliminar entidades duplicadas con la misma geometría en ArcMap?

15

¿Es posible identificar de forma única cada geometría en una capa de entidades?

Esencialmente tengo una capa de entidades poligonales con muchas filas de datos representadas por la misma geometría. Me gustaría 1 fila para cada geometría única. Así que estoy buscando una metodología lista para usar para combinar atributos basados ​​en la forma de la geometría.

Vengo de un mundo de Postgres y puedo resolver este problema allí, pero no sé cómo hacerlo (o si es posible) hacerlo de manera no programática con las herramientas de ESRI.

Dylan Hettinger
fuente
Entonces, ¿estás diciendo que hay múltiples registros de geometría idéntica y quieres combinar los que son idénticos? Si ese es el caso ... ¿podría disolverse según el área o algo así? Tal vez me estoy perdiendo tu pregunta aquí.
Clickinaway
Eso es correcto, son geometrías idénticas donde el único atributo natural compartido es la geometría misma. El área puede funcionar, pero no hay garantía de que dos geometrías diferentes no tengan la misma área.
Dylan Hettinger
Mira mi post. Puede ejecutar disolver en múltiples campos.
Paul
@Paul ... Veo que editaste tu respuesta para reflejar mi opinión. Espero que haya ayudado.
Clickinaway

Respuestas:

22

Si tiene una licencia avanzada, puede usar Buscar idéntico o Eliminar idéntico .

Ambos se pueden usar para buscar / eliminar entidades que tienen atributos idénticos o, si se especifica el campo Forma, geometrías idénticas.

Si no tiene una licencia avanzada, esta publicación será útil.

En resumen, agrega dos campos para X, Y en su tabla de atributos y ejecuta Disolver en dichos campos.

Si tiene polígonos que comparten el mismo centroide, pero no son geométricamente idénticos, puede agregar otros dos campos (Perímetro y Área). Eso debería ser suficiente para identificar geometrías idénticas para casi todos los casos normales. Vea los comentarios de @ whuber a continuación.

Pablo
fuente
Eso supone que los datos del punto son correctos? Había pensado en sugerir crear primero los centroides. Todavía dice que hay muchas filas de la misma geometría ... ¿Casi suena como una clasificación basada en una clase / rango de superficie? Pero también dice la forma de la geometría ... por eso me inclinaba hacia la disolución en función del área o el perímetro (o una combinación de ambos para lograr una relación).
Clickinaway
1
En realidad, esa publicación que vinculé fue para polígonos. Podrías disolver el área y el centroide, si tienes dos polígonos no idénticos con el mismo centroide.
Paul
+1 Esta es exactamente la respuesta correcta. 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. Para el hashing de objetos irregulares o naturales o digitalizados manualmente a identificadores únicos, esos cuatro valores deben ser confiables. Si desea obtener valores más fáciles de obtener, use las coordenadas del cuadro delimitador de la entidad y su conteo de vértices.
whuber
@whuber ¿La comparación de las coordenadas de todos los vértices sería la única forma segura de determinar una geometría idéntica? Mi experiencia en geometría es bastante débil, por lo que me parece bastante fascinante.
Paul
La respuesta a su pregunta depende de lo que quiere decir con "idéntico": por ejemplo, si tuviera que insertar un nuevo vértice a lo largo del borde de un polígono, ¿es un polígono "idéntico" o no? Podría decirse que es en el sentido de representar la misma característica en el mundo, a pesar de que los vértices difieren. Desde este punto de vista, la única prueba segura es si la diferencia (teórica establecida) de los dos polígonos está vacía o no. Pero si toma la vista más estricta de que la identidad significa una coincidencia de vértice a vértice, sigue siendo complicado, porque un polígono podría comenzar su lista de vértices en un punto diferente.
whuber
1

Tengo un conjunto de datos basado en datos de encuestas. Mi problema es que las características antiguas no siempre se eliminan antes de importar las nuevas tomas de encuestas. Por lo tanto, tenemos 'duplicados' con geometría diferente: es decir, las tomas de levantamiento pueden estar separadas por 1/4 de pie entre sí. En un conjunto de datos de características 12000, es difícil ampliarlos e identificarlos. Usando ArcMap Basic 10.2: aquí hay un modelo hacky que se me ocurrió.

  1. Buffer (con radio de entrada) cada entidad en la capa original (Seleccionado o No)
  2. Iterar sobre cada entidad en la capa intermedia
  3. Seleccione de la capa original en función de la relación (Centroid w / in feature)
  4. Funciones seleccionadas de "conteo de filas"
  5. Campo Calcular valor de recuento de filas en la capa de almacenamiento intermedio = Cuántas entidades se encuentran dentro del radio de las entidades originales

Reinventé la rueda. Además, me sentí frustrado con el creador de modelos y básicamente hice bulldog. Tiene que haber una solución más elegante. Con mucho gusto aceptaré críticas y sugerencias.

Además, parece que solo se ejecuta correctamente desde Model Builder, ejecuto desde una caja de herramientas y no guarda la capa de búfer.

Encuentra plumas duplicadas

Barrett
fuente
1

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".

fatih_dur
fuente