16 votos

Eliminación de características duplicadas con la misma geometría en ArcMap?

¿Es posible identificar de forma exclusiva cada geometría en una capa de características?

Esencialmente tengo una capa de características poligonales con muchas filas de datos representadas por la misma geometría. Me gustaría una fila para cada geometría única. Así que estoy buscando alguna metodología fuera de la caja para combinar los atributos basados en la forma de la geometría.

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

0 votos

Así que estás diciendo que hay múltiples registros de idéntico geometría y quiere combinar las que son idénticas? Si ese es el caso... ¿podría disolver basándose en el área o algo así? Tal vez estoy perdiendo su pregunta aquí.

0 votos

Así es, son geometrías idénticas donde el único atributo natural compartido es la propia geometría. Área puede funcionan, pero no hay garantía de que dos geometrías diferentes no tengan la misma área.

0 votos

Vea mi post. Puede ejecutar la disolución en varios campos.

22voto

Örjan Jämte Puntos 3127

Si tiene una licencia avanzada, puede utilizar Buscar idénticos o Borrar Idéntico .

Ambos pueden utilizarse para encontrar/eliminar características que tengan atributos idénticos o, si se especifica el campo Forma, geometrías idénticas.

Si no tienes una licencia avanzada, este puesto será útil.

En resumen, añades dos campos para X,Y en tu tabla de atributos y ejecutas un Disolver en dichos campos.

Si tiene polígonos que comparten el mismo centroide, pero no son geométricamente idénticos, puede añadir 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 más abajo.

0 votos

Eso es suponer que los datos puntuales son correctos? Había pensado en sugerir la creación de centroides primero. Sigue diciendo que hay muchas filas de la misma geometría...Casi suena como clasificar en base a una clase de superficie/rango? Pero también dice forma de la geometría...por lo que me estaba inclinando por la disolución basada en el área o el perímetro (o una combinación de los dos para conseguir una proporción).

1 votos

En realidad, el post que enlacé era para los polígonos. Usted podría disolver en el área y el centroide, en el caso de que usted tiene dos polígonos no idénticos con el mismo centroide.

1 votos

+1 Esta es exactamente la respuesta correcta. En principio, el centroide, el perímetro y el área podrían seguir sin identificar un polígono de forma única, pero los contraejemplos son un poco artificiales. Para hacer un hash de objetos irregulares o naturales o digitalizados manualmente a ids únicos, esos cuatro valores deberían ser fiables. Si desea algunos valores más fáciles de obtener, utilice las coordenadas del cuadro delimitador de la característica y su número de vértices.

1voto

Barrett Puntos 1430

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 los nuevos planos topográficos. Por lo tanto, tenemos "duplicados" con diferente geometría: Es decir, los planos topográficos pueden estar separados por 1/4 de pie entre sí. En un conjunto de datos de 12.000 características es difícil hacer zoom en cada una de ellas e identificarlas. Usando ArcMap Basic 10.2: aquí está un modelo hacky que se me ocurrió.

  1. Buffer (con radio de entrada) de cada característica en la capa original (seleccionada o no)
  2. Iterar sobre cada característica en la capa de amortiguación
  3. Seleccionar de la capa original en función de la relación (Centroide con la característica)
  4. Características seleccionadas del "recuento de filas".
  5. Campo Calcular el valor del recuento de filas a la capa de amortiguación = Cuántas características están dentro del radio de las características originales

He reinventado la rueda. Además, me frustré con el constructor de modelos y, básicamente, lo dejé todo perdido. Tiene que haber una solución más elegante. Aceptaré gustosamente críticas y sugerencias.

Además, parece que esto sólo se ejecuta correctamente desde el Model Builder, yo lo hago desde una caja de herramientas y no guarda la capa del buffer.

Find Duplicate Featuers

1voto

August Karlstrom Puntos 445

He estado buscando una respuesta a la misma pregunta durante algún tiempo para superar el problema de aplanamiento de los polígonos de búferes superpuestos y creo que encontré una solución sólida para ello. De hecho el comentario de @Whuber,

En principio, el centroide, el perímetro y el área podrían no identificar un polígono de forma única, pero los contraejemplos son un poco artificiales.

en la respuesta de @Paul fue el principal impulso para seguir intentándolo. Utiliza la herramienta Spatial Join SON_IDÉNTICOS_A ya que es el más eficiente entre otros detectores idénticos. Estos son los pasos:

  • Self Union su aportación para que todas las formas sean diferentes entre sí;
  • Crear un campo ficticio para mantener/copiar los OBJECTID originales (es decir, OID ) de las filas, por ejemplo EX_OID ;
    • Ejecute Spatial Join en la clase de característica que que se desea procesar como parámetros de característica de destino y de unión. Asegúrese de que los mapeos de campo de los campos ficticios (aparecen dos veces) creado previamente tiene la regla de fusión de FIRST (que es la predeterminada o elija LAST, los otros pueden no dar la salida deseada ya que utilizan un resumen de solapamientos). Este paso escoge la forma común OBJECTID que se encuentra encima de todos los solapamientos (es decir, PRIMERO);

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

CON PITÓN

  • Utilice el siguiente código para extraer los IDs únicos 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 utilizando 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 el Definición Consulta de la clase de características original procesada como OBJECTID IN (<PASTE_COPIED_VALUES_HERE>) . El resultado será será mostrar las características unificadas de las partes superpuestas. Sin embargo, hay una limitación de tamaño: 30.000 caracteres. Para superar este problema, es necesario seguir los pasos "sin python".

SIN PITÓN

  • Utilice la herramienta de Frecuencia para enumerar los valores únicos en la segunda copia de la simulación OID, que en mi caso es EX_OID_1;

  • Por último, únete OBJECTID de la clase de características original con la salida de la herramienta de frecuencia EX_OID_1 seleccionando la opción "Conservar sólo los registros coincidentes".

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X