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.
No olvidar reemplazar InsertFieldToCheckHere
por el nombre del campo a chequear.
Me parece muy interesante encontrar los valores duplicados en ArcGis. Gracias
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
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
Gracias voy a verificar, todos los comentarios les tengo un alto respeto y consideración (evito aprobar quienes cometan muchos errores ortográficos).
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
Voy a revisar y te comunico cualquier novedad.
Y lo llegaste a revisar?
Me funciona sin usar tabuladores, y también en campos tipo Double.
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?
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
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! )
Cuando lo corro, me sale el siguiente error: «There was a failure during processing» ¿Que esta mal?
me sale el mismo error de Julian
Asegúrate que estén los espacios (fíjate en los comentarios).
para poner tabulación en el field calculator, combinación de teclas CTRL+TAB. Si funciona.