Encontrar valores duplicados en ArcGIS usando un script de Python

Al parecer a futuro se desarrollarán más Scripts en Python antes que usando el popular VBScript, por ello comparto un código para encontrar valores duplicados dentro de la tabla de atributos de un shapefile en ArcGIS, resulta útil cuando tenemos que depurar gran cantidad de datos (ids, cadenas, números, fechas) en nuestras parcelas o elementos de trabajo, para ello ejecutamos uno pasos sencillos que se muestran a continuación.

  • Abrir la tabla de atributos y añadir un nuevo campo tipo “Short Integer”.
  • Abrir la calculadora “Field Calculator” (clic derecho sobre el nuevo campo).
  • Marcar “Python” en la pestaña “Parser”.
  • Activar “Show Codeblock”.
  • En el bloque “Pre-Logic Script Code:” insertar el siguiente código:

uniqueList = []  
def isDuplicate(inValue):  
    if inValue in uniqueList:  
        return 1  
    else:  
        uniqueList.append(inValue)  
        return 0

En el cuadro de texto posterior (lleva el nombre del campo) insertar este código:

isDuplicate( !InsertFieldToCheckHere! )

Por medio de estos códigos le decimos que llene el nuevo campo con valores (0, 1), los valores asignados con en número “1” son aquellos que se encuentran duplicados dentro de la tabla de atributos.

Script Python ArcGIS

No olvidar reemplazar InsertFieldToCheckHere por el nombre del campo a chequear.

15 comentarios en “Encontrar valores duplicados en ArcGIS usando un script de Python”

  1. Debes poner tabuladores despues del If y del Else

    debe quedar asi:

    uniqueList = []
    def isDuplicate(inValue):
    if inValue in uniqueList:
    return 1
    else:
    uniqueList.append(inValue)
    return 0

    si no no funciona

    saludos

  2. Rayos no te lo respeta el editor del blog

    uniqueList = []
    def isDuplicate(inValue):
    ---if inValue in uniqueList:
    ----return 1
    --else:
    ----uniqueList.append(inValue)
    ----return 0

    espero me entiendan

  3. Estimado Franz, no sé qué estoy haciendo mal pero no me corre, le pongo tabuladores después de If y else pero nada, me puedes ayudar? esta es la sentencia que edite en notepad para poder pegarlo ya que en el field calculator no me deja poner tabuladores, gracias por tu respuesta y disculpa.
    uniqueList = []
    def isDuplicate(inValue):
    if inValue in uniqueList:
    return 1
    else:
    uniqueList.append(inValue)
    return 0

  4. Buen día.
    Necesito construir un script que me pida una par ordenado (x,y) y un radio, dibuje con estos un circulo, y lo convierta en shape.

    Me puedes ilustrar al respecto?

  5. a mí me funcionó, se trata del mismo código, sólo un espacio mas en else
    uniqueList = []
    def isDuplicate(inValue):
    —if inValue in uniqueList:
    —-return 1
    —else:
    —-uniqueList.append(inValue)
    —-return 0

  6. Intenten copiarlo a un bloc de notas, y lo importan en Field Calculator, a mi me funcionó

    uniqueList = []
    def isDuplicate(inValue):
    if inValue in uniqueList:
    return 1
    else:
    uniqueList.append(inValue)
    return 0
    __esri_field_calculator_splitter__
    isDuplicate( !CVEGEO! )

  7. Cuando lo corro, me sale el siguiente error: “There was a failure during processing” ¿Que esta mal?

Los comentarios están cerrados.