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

13

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

Esencialmente tengo una capa de entidad poligonal con muchas filas de datos representados por la misma geometría. Me gustaría 1 fila para cada geometría única. Así que estoy buscando alguna 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 forma no programática con las herramientas de ESRI.

    
pregunta Dylan Hettinger 25.07.2013 - 22:16

3 respuestas

20

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

Ambos se pueden usar para buscar / eliminar características 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. Ver los comentarios de @ whuber abajo.

    
respondido por el Paul 25.07.2013 - 22:23
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 que se importen las nuevas encuestas. Por lo tanto, tenemos 'duplicados' con diferentes geometrías: es decir, las tomas de levantamiento pueden estar separadas 1/4 pies una de la otra. En un dataset de características 12000 es difícil acercarlas e identificarlas. Usando ArcMap Basic 10.2: he aquí un modelo pirateado.

  1. Buffer (w / radio de entrada) cada característica en la capa original (Seleccionado o No)
  2. Iterar sobre cada característica en la capa del búfer
  3. Seleccionar de la capa original según la relación (Centroid w / in feature)
  4. "Recuento de filas" características seleccionadas
  5. El campo calcula el valor del recuento de filas para la capa de búfer = cuántas entidades están dentro del radio de las entidades originales

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

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

    
respondido por el Barrett 08.01.2014 - 23:22
1

He estado buscando una respuesta a la misma pregunta durante algún tiempo para superar el aplanamiento del problema de polígonos de búferes superpuestos y creo que se 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 podrían no   identifique de forma exclusiva un polígono, pero los contraejemplos son un poco ideados.

en la respuesta de @ Paul fue el impulso principal para que siguiera intentando. Utiliza el operador ARE_IDENTICAL_TO de la herramienta Spatial Join ya que es el más eficiente entre otros detectores idénticos. Aquí están los pasos:

  • Únase a sus comentarios para mantener todas las formas diferentes entre sí;
  • Cree un campo ficticio para mantener / copiar los OBJECTID originales (es decir, OID tipo de campo) de las filas, diga EX_OID ;
    • Ejecutar la unión espacial en la clase de entidad que Se desea que se procese como parámetros de características tanto de destino como de unión. Asegúrese de que las asignaciones de campo de los campos ficticios (aparece dos veces) creado anteriormente tiene la regla de combinación de FIRST (que es la predeterminada) o elija ÚLTIMO, los otros pueden no dar la salida deseada ya que usar un resumen de las superposiciones). Este paso recoge la forma común OBJECTID sentado encima de todas las superposiciones (es decir, PRIMERO);

Los siguientes pasos se pueden realizar de dos maneras, CON Python o SIN:

CON PYTHON

  • Use el código a continuación 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 la salida de este código y péguela en la Definición Consulta de la clase de entidad original procesada como OBJECTID IN (<PASTE_COPIED_VALUES_HERE>) . El resultado será mostrándole las características unificadas de las partes superpuestas. Hay una limitación de tamaño aquí, sin embargo, 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 dummy Campo OID, que es EX_OID_1 en mi caso;

  • Por último, únase al campo OBJECTID de la clase de entidad original con la salida de EX_OID_1 de la herramienta Frecuencia seleccionando "Mantener solo opciones de registros coincidentes.

respondido por el fatih_dur 30.11.2016 - 06:26

Lea otras preguntas en las etiquetas